Hi Everyone,
We're on JIRA cloud and are trying out the ScriptRunner addon. Is it possible to set a custom date picker field with the current date/time in a workflow transition's post function? If so, how would I do so?
By playing around with a test workflow, I think I found what you need:
I have not tested this, but I'm trusting what I read on screen on Step 6 as JIRA shows:
Please make sure that the value you enter is valid for custom field its datatype and context configuration for the project using this workflow. Otherwise, the transition may fail at execution time. Additionally to enter text or numbers as value, you may use the following:You may use macro '%%CURRENT_USER%%' to insert the function caller.You may use macro '%%CURRENT_DATETIME%%' to insert the current date and time.You may use macro '%%ADD_CURRENT_USER%%' to append the function caller. Obsolete please use append option instead with user macro above.For Cascading Select fields, you may either use the value of the option to be selected, no need to add the parent for childs. Or simply enter the ID of the option to be selected.
Please make sure that the value you enter is valid for custom field its datatype and context configuration for the project using this workflow. Otherwise, the transition may fail at execution time. Additionally to enter text or numbers as value, you may use the following:
Here is code for custom script post-function:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.event.type.EventDispatchOption import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.UpdateIssueRequest import java.sql.Timestamp issue.setCustomFieldValue( ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("customFieldname") , new Timestamp() ) //only for create transition /* ComponentAccessor.getIssueManager().updateIssue( ComponentAccessor.getJiraAuthenticationContext().getUser() , issue , UpdateIssueRequest.builder().sendMail(false).eventDispatchOption(EventDispatchOption.ISSUE_UPDATED).build() ) */
This answer is for server, not cloud
But for server, you should not need the commented out bit even on create.
Edit your workflow, add new post-function on the action of type "Script Post-function".
Choose "Modify Issue" function.
Enter the following code:
issueInput.fields.customfield_10132 = new Date().format("yyyy-MM-dd")
where 10132 is the ID of the custom field you want to update.
You'll be better off using a ZonedDate to make sure you get the date in the correct timezone:
issueInput.fields.customfield_10132 = ZonedDateTime.now(ZoneId.of("UTC")).format(DateTimeFormatter.ISO_LOCAL_DATE)
I'm getting this error now. Is there any way to set this field without having to surface it on my screens? I'd rather not allow users to change this value.
2016-11-21 19:09:28,388 INFO - Serializing object into 'interface java.util.Map' 2016-11-21 19:09:28,390 INFO - PUT /rest/api/2/issue/80258 asObject Request Duration: 326ms 2016-11-21 19:09:28,403 ERROR - assert resp.status == 204 | | | | 400 false status: 400 -` Bad Request body: [errorMessages:[], errors:[customfield_15500:Field 'customfield_15500' cannot be set. It is not on the appropriate screen, or unknown.]]
This turned out to be the solution! Thanks!
I use version 3.0.6 of ScriptRunner. The above mentioned script fragment
issueInput.fields.customfield_11100 = new Date().format("yyyy-MM-dd")
didn't throw an error but it did not have any visible result. Does it work for my companies old version of ScriptRunner?
Thank you Jon! As I am still new to ScriptRunner: What would be the correct way to update a custom field in a scripted post-function when using a Jira Server?
Marco, refer to Vasiliy Zverev 's answer in this thread for the server solution.
THX, Randy, I tried it and it works!
Hi,
I want only the month to be updated in the custom field. Is there any macro similar to %%CURRENT_DATETIME%% available for the same.
Thanks,Vinay
@Jon Bevan _Adaptavist_
I dont have script runner.
Could there be any solution, either a direct macro for month, or to extract only the month part from the datetime, and populate it to another custom field.
There isnt.
What you want to do isnt possible without add-on's
What do you enter for Timestamp?
This didn't work for me I just get an error saying unable to update custom field.
I have tried using a date picker and a single line text field. Neither work?
The custom field updation using the post function as depicted above works for cloud JIRA too.
How do I know what is the process flow I'm working on . ? I'm using a nextgen project but now sure what is the workflow I;m using.
Hi. Does anyone know of a way to do this for a future date. I want to automatically populate with current date + 2 weeks upon transition. Thanks.
Hello Vasiliy_Zverev,
Sorry, what's wrong?
It looks like you're new here. Sign in or register to get started.