ScriptRunner: set email address from custom field

Jackson Loong February 21, 2017

I am trying to dynamically set the recipient addresses based on the settings of a custom field ('Notification List', checkbox collection contains a list of department)

In the condition & configuration section, I have a 

if ('Engineering' in cfValues['Notification List']*.value) {
recipients = recipients + ",addr1@host.com"
}
if ('Purchasing' in cfValues['Notification List']*.value) {
recipients = recipients + ",addr2@host.com"
}
mail.setTo(recipients)

So far so good, and working as expected

However, I'd like to pull from another custom field (ProjMgr) for one of the conditions

if ('Project Management' in cfValues['Notification List']*.value) {
    pm = com.atlassian.jira.component.ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("ProjMgr")
    pmValue = issue.getCustomFieldValue(pm)
    recipients = recipients + "," + pmValue
}

ProjMgr is User Picker type.  In this case, I got the user id in pmvalue.  How can I find the user's email address to construct the recipients list?

 

2 answers

0 votes
JamieA
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.
February 21, 2017

pmValue in your emample above should actually be an ApplicationUser object (assuming JIRA 7).

So the email address would be 

pmValue.emailAddress



0 votes
Julian Riedinger _Decadis AG_
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.
February 21, 2017

Maybe you try the following:

ger().getCustomFieldObjectByName("ProjMgr")

...
    pmValue = issue.getCustomFieldValue(pm)
	if (pmValue != null && !((String) pmVavlue).isEmpty())
	{
		def user = ComponentAccessor.getUserManager().getUserByKey((String) pmValue);
		def mail = user.getEmailAddress() 
	}
 .....

https://docs.atlassian.com/jira/7.1.7/com/atlassian/jira/component/ComponentAccessor.html

https://docs.atlassian.com/jira/7.1.7/com/atlassian/jira/user/util/UserManager.html

https://docs.atlassian.com/jira/7.1.7/com/atlassian/jira/user/ApplicationUser.html

 

Hope this helps!

 

Cheers,

Julian

Jackson Loong February 22, 2017

Thanks Julian.

 

I got this error "Cannot invoke method getEmailAddress() on null object" when I tried to preview my codes. 

JamieA
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.
February 22, 2017

What does: "(String) pmValue " produce? Add some logging for that variable.

Basically no user can be found with that key.

Jackson Loong February 22, 2017

pmValue returns "jackson.loong(jackson.loong)"
and
user returns null

 

I ended up using the following codes segment and seems to work

if ('Project Management' in cfValues['Notification List']*.value) {
    def pm = customFieldManager.getCustomFieldObjectByName("ProjMgr")
    if (pm != null) {
        def pmValue = issue.getCustomFieldValue(pm)
        if (pmValue != null && !((String) pmValue).isEmpty()) {
            def mailbox = ((ApplicationUser) pmValue).getEmailAddress() 
            recipients = recipients + "," + mailbox            
        }
     }
}

Suggest an answer

Log in or Sign up to answer