Little help with script runner please

Hi, I've been trying to get script runner to update a field using Script Listeners.
I've got it somehow working, but I can't figure out this entirely

I have the following fields:
 - Today:  (date, this gets updated via script listeners)
 - BIrthDate: (date)
 - Age (Single line text)

I'd like for Age field to contain "X months, X years old" by calculating the difference between Today and BirthDate fields.

So far I've managed to get Today to contain the right date.

def projectKey = 'TP'

// Vars
def today = '{customfield_11213}'
def age = '{customfield_11212}'
def bdate = '{customfield_11200}'

def tdate = new Date() 

def years =  (age - tdate)
def months = (age - tdate)

def strdiff = """ ${months} months, ${years} years """

def message = """ Vals today ${today}, age ${age}, bdate ${bdate}, tdate ${tdate}, years ${years}, months ${months}""""${message}")

    //.queryString("overrideScreenSecurity", Boolean.TRUE) 
    .header("Content-Type", "application/json")
                (today): tdate,
                (age): strdiff

I'm using JIRA Cloud, and the latest version of the plugin.


1 answer

1 accepted

1 vote
Accepted answer

Hi Fernando,

This code should work:

import java.time.LocalDate

// Ignore the Issue Update event if it isn't for the right project
if (issue.fields.project.key != 'VIS') {

// These are the custom field references
def todayCf = 'customfield_11213'
def bdateCf = 'customfield_11200'
def ageCf = 'customfield_11212'

// Extract the existing values from the issue
def birthdayField = issue.fields[bdateCf] as String
if (birthdayField == null) {
    // No birthday was specified, we can't calculate the age
def ageField = issue.fields[ageCf] as String

// We should use LocalDate or ZonedDateTime instead of Date
def tdate =
def bdate = LocalDate.parse(birthdayField)

// Calculate age in years and months
def years = tdate.getYear() - bdate.getYear()
def months = tdate.getMonthValue() - bdate.getMonthValue()

def age = "${months} months, ${years} years"
def message = "Vals tdate: ${tdate.toString()}, bdate: ${bdate.toString()}, age: ${age}"

// Only update the issue if the age text has changed
if (age != ageField) {
        //.queryString("overrideScreenSecurity", Boolean.TRUE) 
        .header("Content-Type", "application/json")
                (todayCf): tdate.toString(),
                (ageCf): age


Great! Thank you so much!

Suggest an answer

Log in or Sign up to answer
Community showcase
Published Feb 07, 2019 in Marketplace Apps

A Timeless Love Story

It started as any story starts, on a normal, rainy day.   Admin meets App, and her name was Klok2, and like any first relationship we were both trying to make it work but neither one knew what...

460 views 8 27
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you