I want to build a custom scripted field that for a given Issue will return the earliest sprint start date of all the sprints that the Issue belongs to.
I got as far as reading the value of the 'Sprint' field - but from there how can I pick out just the start dates?
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
def sprintField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Sprint")
def currentDate = Date;
def listofDates= [] as List<Date>
def sprint = issue.getCustomFieldValue(sprintField)
log.warn(issue.getKey() + " " + sprint)
As an example, here's what I've got for an Issue that appears in 2 sprints....
2021-08-09 16:02:31,875 WARN [runner.ScriptBindingsManager]: ID3-3609 [com.atlassian.greenhopper.service.sprint.Sprint@2b0681b6[id=2427,rapidViewId=916,state=CLOSED,name=[Psyduck] Sprint 15,startDate=2021-07-21T14:40:00.000+01:00,endDate=2021-08-04T14:40:00.000+01:00,completeDate=2021-08-04T14:02:38.726+01:00,activatedDate=2021-07-21T14:41:25.040+01:00,sequence=2427,goal=Mike's last sprint :( Complete Status of production report, focus on Secrets & Azure changes, adopting new branching model,autoStartStop=false], com.atlassian.greenhopper.service.sprint.Sprint@37d6a486[id=2432,rapidViewId=916,state=ACTIVE,name=[Psyduck] Sprint 16,startDate=2021-08-04T14:51:00.000+01:00,endDate=2021-08-18T14:51:00.000+01:00,completeDate=<null>,activatedDate=2021-08-04T14:51:49.437+01:00,sequence=2432,goal=Complete Release, Continue the work for GIDE Migration & Branching Changes, Complete the HTTP Headers Session Tracking,autoStartStop=false]
Well perseverance paid off....I managed to get it to run and return what I expected
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.link.IssueLinkManager
import com.atlassian.jira.issue.link.IssueLinkType
import com.atlassian.jira.issue.link.IssueLinkTypeManager
import java.util.concurrent.TimeUnit
import com.atlassian.jira.issue.CustomFieldManager
def cfManager = ComponentAccessor.getCustomFieldManager()
def issue = issue
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def sprintField = customFieldManager.getCustomFieldObjectByName("Sprint");
def sprints = issue.getCustomFieldValue(sprintField)
def earliestsprintstartdate=sprints.startDate?.first()?.toDate()
log.warn(earliestsprintstartdate)
return earliestsprintstartdate
Found a code snippet elsewhere on this forum which I thought might lead to something - but it returns an error.... :-(
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.link.IssueLinkManager
import com.atlassian.jira.issue.link.IssueLinkType
import com.atlassian.jira.issue.link.IssueLinkTypeManager
import java.util.concurrent.TimeUnit
import com.atlassian.jira.issue.CustomFieldManager
def cfManager = ComponentAccessor.getCustomFieldManager()
def issue = event.issue
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def sprintField = customFieldManager.getCustomFieldObjectByName("Sprint");
def sprintStartDate = issue.getCustomFieldValue(sprintField)?.startDate?.first()?.toDate()
2021-08-09 16:34:57,246 ERROR [customfield.GroovyCustomField]: ************************************************************************************* 2021-08-09 16:34:57,246 ERROR [customfield.GroovyCustomField]: Script field failed on issue: ID3-3609, field: Unused groovy.lang.MissingPropertyException: No such property: event for class: Script632 at Script632.run(Script632.groovy:10)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.