Just a heads up: On March 24, 2025, starting at 4:30pm CDT / 19:30 UTC, the site will be undergoing scheduled maintenance for a few hours. During this time, the site might be unavailable for a short while. Thanks for your patience.
×I am trying to get the user from customfield using groovy but its not working .Please help
Issue issue UserUtil userUtil = ComponentAccessor.userUtil def customField = ComponentAccessor.getComponent(CustomFieldManager).getCustomFieldObject("customfield_12202") def userName = customField.getValueFromIssue(issue) def user = userUtil.getUserByName(userName).getDirectoryUser() log.info "check this ${user}\n"
Where am i making the mistake ?
Hi,
Just sharing how I was retrieving the user information. I did by just type-casting with ApplicationUser. Please refer below code sample for both single-select and multi-select user picker.
//When customfield_XXXXX is single select user-picker
CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_XXXXX");
def cfVal = issue.getCustomFieldValue(cf);
if(cfVal){
ApplicationUser userSelected = (ApplicationUser) cfVal;
if(userSelected){
log.warn("Username: "+userSelected.getUsername());
log.warn("Email Address: "+userSelected.getEmailAddress());
}
}
//When customfield_XXXXX is multi select user-picker
CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_XXXXX");
def cfValList = issue.getCustomFieldValue(cf);
if(cfValList){
for(cfVal in cfValList){
ApplicationUser userSelected = (ApplicationUser) cfVal;
if(userSelected){
log.warn("Username: "+userSelected.getUsername());
log.warn("Email Address: "+userSelected.getEmailAddress());
}
}
}
Hi @saravp2020 , i have similar kind of requirement. need to send the notification mail to all users available in A and B user fields.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @RichardA
I have not tried using EmailService API, but in your code, it is declared and used directly without configuring any SMTP server, that could be the reason, of mail not triggered.
Please try below piece of code, we use this for sending one mail at a time, and loop it for more mails.
import com.atlassian.mail.Email;
import com.atlassian.mail.server.SMTPMailServer;
import com.atlassian.jira.component.ComponentAccessor;
def emailId = "abc@xyz.com";
SMTPMailServer mailServer = ComponentAccessor.getMailServerManager().getDefaultSMTPMailServer();
if(mailServer){
Email email = new Email(it);
email.setSubject("Email subject here");
email.setBody("Email body here");
mailServer.send(email);
}
Please try this and let know if issue persists.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @saravp2020 ,
Your comment really helpful,
could you please advise in case of multi select user-picker:
How to collect all userSelected.getEmailAddress() values into one line? I have 4 people selected in multi select user-picker.
Currently I get result as four different values, like:
email1@company.com
email2@company.com
email3@company.com
email4@company.com
but I'd like them to be together with comma (,) separated, like:
email1@company.com,email2@company.com,email3@company.com,email4@company.com
I tried to do as: def emailTo = userSelected.getEmailAddress() + "," + userSelected.getEmailAddress()
But it did not help :( It adds the same value into variable 'emailTo'
if(cfValList){
for(cfVal in cfValList){
ApplicationUser userSelected = (ApplicationUser) cfVal;
if(userSelected){
def emailTo = userSelected.getEmailAddress() + "," + userSelected.getEmailAddress()
}
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Vladislav
I have just modified the earlier code according to your need, please try below code, and the variable 'recipients' will hold the comma separated email addresses. I believe there could be a bug the way it's concatenated earlier and assigning the value to the same variable in loop.
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_xxxxx");
def issueMgr = ComponentAccessor.getIssueManager();
Issue issue = issueMgr.getIssueObject("<IsseKey>");
def cfValList = issue.getCustomFieldValue(cf);
def recipients = "";
if(cfValList){
for(cfVal in cfValList){
ApplicationUser userSelected = (ApplicationUser) cfVal;
if(userSelected){
if (recipients == ''){
recipients = userSelected.getEmailAddress();
} else {
recipients = recipients + ',' + userSelected.getEmailAddress();
}
}
}
log.warn(recipients);
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Assuming customfield_12202 is a user-picker, then your code will have a user object in the variable userName, not just a string, and then you dont need the "def user" line to do any look up.
I'd suggest
Issue issue UserUtil userUtil = ComponentAccessor.userUtil def customField = ComponentAccessor.getComponent(CustomFieldManager).getCustomFieldObject("customfield_12202") def myUser = customField.getValueFromIssue(issue) log.info "check this user: " + myUser.getUserName()
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Nic,
I tried that but i am still getting the same error.i put the below code in a workflow postfunction just to test whether i am getting the value or not in the logs.
yes
customfield_12202 is a user picker .
2017-06-28 15:03:06,837 atlassian-scheduler-quartz1.local_Worker-2 ERROR alenka [scriptrunner.jira.workflow.ScriptWorkflowFunction] Script function failed on issue: JUA-12, actionId: 71, file: <inline script> java.lang.NullPointerException at com.atlassian.jira.issue.customfields.impl.AbstractSingleFieldType.getValueFromIssue(AbstractSingleFieldType.java:79) at com.atlassian.jira.issue.fields.CustomFieldImpl.getValue(CustomFieldI mpl.java:454) at com.atlassian.jira.issue.fields.CustomFieldImpl.getValueFromIssue(CustomFieldImpl.java:1467) at com.atlassian.jira.issue.fields.renderer.RenderableField$getValueFromIssue$0.call(Unknown Source) at Script272.run(Script272.groovy:17)
code i used
Issue issue UserUtil userUtil = ComponentAccessor.userUtil def customField = ComponentAccessor.getComponent(CustomFieldManager).getCustomFieldObject("customfield_12202") def myUser = customField.getValueFromIssue(issue) log.info "check this user: " + myUser
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I've just realised something...
You are on JIRA 7.3 or 7.4 aren't you? My code is for 7.2
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Try this:
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.user.ApplicationUser;
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def devOwner = customFieldManager.getCustomFieldObjectByName("UserPicker CF")
String username = issue.getCustomFieldValue(devOwner).name
ApplicationUser user = ComponentAccessor.getUserManager().getUserByName(username);
log.error "Name: " + user.getDisplayName()
log.error "Username: " + user.name
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello @Jason Liwag
Please advise how would you get list of email addresses from "UserPicker CF Multi-select"?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Atlassian Government Cloud has achieved FedRAMP Authorization at the Moderate level! Join our webinar to learn how you can accelerate mission success and move work forward faster in cloud, all while ensuring your critical data is secure.
Register Now
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.