Forums

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

Groovy Script to get Sprint Dates for Issue

graemejohnson
Contributor
August 9, 2021

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]

2 answers

1 accepted

0 votes
Answer accepted
graemejohnson
Contributor
August 9, 2021

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
0 votes
graemejohnson
Contributor
August 9, 2021

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) 

Suggest an answer

Log in or Sign up to answer