Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Update date value in custom field (script post-function)

Alexander
Contributor
September 26, 2018

Hi community!
I'm an inexperienced user in scripts :((
I need your help for writing script post-function.
I have this script:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue
import java.text.SimpleDateFormat;

customFieldManager = ComponentAccessor.getCustomFieldManager()

Date date = new Date()
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy HH:mm")
String formattedDate = dateFormat.format(date)

CustomField date_planning = customFieldManager.getCustomFieldObjectByName("CustomField_value")
String planning_Value = (String)issue.getCustomFieldValue(date_planning)
date_planning.updateValue(null, issue, new ModifiedValue(null, formattedDate), new DefaultIssueChangeHolder())

It's script don't work :(

Error log:
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date at com.atlassian.jira.issue.customfields.impl.DateTimeCFType.getDbValueFromObject(DateTimeCFType.java:59) at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.createValue(AbstractSingleFieldType.java:138) at com.atlassian.jira.issue.fields.ImmutableCustomField.createValue(ImmutableCustomField.java:693) at com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:410) at com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:396) at com.atlassian.jira.issue.fields.OrderableField$updateValue.call(Unknown Source) at Script1974.run(Script1974.groovy:18)


We need the value of today's date in the format (dd/MM/yy HH:mm) to be moved to the custom field (date_planning).
I really hope for your help! Thanks in advance!
Regards

1 answer

1 accepted

1 vote
Answer accepted
Mark Markov
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 26, 2018

Hello @Alexander

Try like this

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue
import java.text.SimpleDateFormat;

customFieldManager = ComponentAccessor.getCustomFieldManager()

Date date = new Date()
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy HH:mm")
String formattedDate = dateFormat.format(date)

CustomField date_planning = customFieldManager.getCustomFieldObjectByName("CustomField_value")
def planning_Value = issue.getCustomFieldValue(date_planning)
date_planning.updateValue(null, issue, new ModifiedValue(planning_Value, formattedDate), new DefaultIssueChangeHolder())
Alexander
Contributor
September 26, 2018

Hi @Mark Markov
Thanks for your response!

Now error log:

2018-09-26 15:10:33,975 ERROR [workflow.ScriptWorkflowFunction]: Script function failed on issue: NCB-2698, actionId: 21, file: <inline script> java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date at com.atlassian.jira.issue.customfields.impl.DateTimeCFType.getDbValueFromObject(DateTimeCFType.java:59) at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.createValue(AbstractSingleFieldType.java:138) at com.atlassian.jira.issue.fields.ImmutableCustomField.createValue(ImmutableCustomField.java:693) at com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:410) at com.atlassian.jira.issue.fields.ImmutableCustomField.updateValue(ImmutableCustomField.java:396) at com.atlassian.jira.issue.fields.OrderableField$updateValue.call(Unknown Source) at Script1987.run(Script1987.groovy:15)

Alexander
Contributor
September 26, 2018

Important clarification! custom field type - Data Time Picker.
Maybe it doesn't work?

Mark Markov
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 26, 2018

If field Date Time, you should provide Timestamp object to update it. Like this:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.ModifiedValue

import java.sql.Timestamp
import java.text.SimpleDateFormat;

def customFieldManager = ComponentAccessor.getCustomFieldManager()


Date date = new Date()
def time = new Timestamp(date.getTime())

CustomField date_planning = customFieldManager.getCustomFieldObjectByName("Дата возврата в работу")
def planning_Value = issue.getCustomFieldValue(date_planning)
date_planning.updateValue(null, issue, new ModifiedValue(planning_Value, time), new DefaultIssueChangeHolder())

But also, in your case you can use free JSU addon to achieve this requirement. It have bundled postfunction "Set Custom Field Value" with global variables like %%CURRENT_TIME%%

Alexander
Contributor
September 26, 2018

Thanks you very much @Mark Markov
it's working! :)

Suggest an answer

Log in or Sign up to answer