I want to set a custom date field using a post function, but I only want to capture the current date if the field has not yet been set. I'd use a regular post function to do this, but once this field is populated, I don't want it to get overwritten, which is why I've turned to a script for this. I'm very new to groovy scripting and don't have much of a coding background - here's my attempt after looking at a lot of resources here on Answers and elsewhere.
import java.util.* import com.atlassian.jira.ComponentManager import com.atlassian.jira.CustomFieldManager import com.atlassian.jira.issue.Issue def customFieldManager = ComponentManager.getInstance().getCustomFieldManager() def date = new Date() Issue issue = issue def funcDate = issue.getCustomFieldValue( customFieldManager.getCustomFieldObjectByName("Ready for Func Test") ) if (!funcDate) // if this field is empty, then the current date is set for this field issue.setCustomFieldValue("Ready for Func Test", date)
Basically, we want to be able to report on the date in which the issue was first transitioned to a particular status. I don't want to overwrite the value if the same transition is used again (which is very possible in our workflow setup). I've tried several variations of the code above, but I can't seem to get it to work the way I want it to. Even if the field is empty, the field does not get a value set to it during the transition for which I've configured this post function.
Is what I'm trying to do possible via a scripted post function? Am I at least close? Thanks for your help in advance!
Found my answer using the answer in from a previous question here. Here's the final script I used:
import com.atlassian.jira.ComponentManager import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.fields.CustomField import static java.lang.Math.* import java.sql.Timestamp // get current issue Issue issue = issue customFieldManager = ComponentManager.getInstance().getCustomFieldManager() // Getting custom field value cfFuncDate = issue.getCustomFieldValue( customFieldManager.getCustomFieldObjectByName("Ready for Func Test") ) // Getting custom field object cfoFuncDate = customFieldManager.getCustomFieldObjectByName("Ready for Func Test") // get today's date today = new java.sql.Timestamp(new Date().getTime()) // set value if (!cfFuncDate) issue.setCustomFieldValue(cfoFuncDate, today)
def cfFuncDate = customFieldManager.getCustomFieldObjectByName("Ready for Func Test") def funcDate = issue.getCustomFieldValue(cfFuncDate) if (!funcDate) // if this field is empty, then the current date is set for this field issue.setCustomFieldValue(cfFuncDate, date)
Hi, Jamie - thanks for your help! Unfortunately, I made this alteration and the field still isn't populating. I double checked the name of the custom field to make sure I wasn't going crazy, too. :) Is there anything I need to do with the date format? JIRA presents the date as DD/MM/YY - if that's an issue from how Date() pulls the current date, how can I alter my code to populate the date in this format? Also, just to test, I took out my if statement to see if anything would write to that custom field anyway - I got the same result as before. The field is still empty.