Scripted field to list full names from multi user custom field

Jeremy Coukoulis December 21, 2016

I am trying to create a scripted field which will populate with a list of users full names from a multi user picker field ("Award Nominees" customfied_21775)

I have tried the following script:

 

import com.atlassian.jira.component.ComponentAccessor

import com.atlassian.jira.issue.Issue

import com.atlassian.jira.issue.fields.CustomField

import com.atlassian.jira.user.ApplicationUser

 

CustomField multiuserCstFld = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Award Nominees")

if (multiuserCstFld == null)

    return "custom field not found"

 

StringBuilder result = new StringBuilder();

 

for(ApplicationUser user: (ArrayList) multiuserCstFld.getValue(issue))

    result.append(user.getName() + "/")

 

return result.toString().substring(0, result.toString().length() - 1)

 

but I get the following syntax error:

[Static type checking] - Cannot loop with element of type com.atlassian.jira.user.ApplicationUser with collection of type java.util.ArrayList

 

I'm at a loss as to what is wrong.  I am on JIRA version 7.1.9 and using scriptrunner version 4.3.13

 

Any help would be greatly appreciated.  Thank you!

2 answers

1 accepted

3 votes
Answer accepted
Jonny Carter
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
December 23, 2016

If you want their full names, you'll want to use the getDisplayName method. 

import com.atlassian.jira.component.ComponentAccessor
def awardNomineesField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Award Nominees")
if (!awardNomineesField) { return null }
issue.getCustomFieldValue(awardNomineesField)?.collect{ 
    it.displayName 
}?.join(" / ")
Jeremy Coukoulis January 10, 2017

You are correct.  I did need to change getname to getDisplayName to show the full name.  Thank you.

1 vote
Vasiliy Zverev
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
December 22, 2016

Try this code

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUser

CustomField multiuserCstFld = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Award Nominees")

if (multiuserCstFld == null)
    return "custom field not found"

StringBuilder result = new StringBuilder();

for(ApplicationUser user: (ArrayList<ApplicationUser>) multiuserCstFld.getValue(issue))
    result.append(user.getName() + "/")

return result.toString().substring(0, result.toString().length() - 1)
Jeremy Coukoulis January 10, 2017

That was it.  I was missing the <ApplicationUser> after the ArrayList. No more error! Thank you very much!

Suggest an answer

Log in or Sign up to answer