Using Scriptrunner to return custom field value

Adam Gaudry November 21, 2017

Hi

I'm trying to use Scriptrunner to (in part) get the value of a custom field. However, at the moment I am getting an error.

This is what I am trying to do, to get the value.

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;

def issueManager = ComponentAccessor.getIssueManager()
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()

return getCustomFieldValue("Change Area")

When I do this, I get this error:

2017-11-21 12:30:12,374 ERROR [runner.ScriptFieldPreviewRunner]: ************************************************************************************* 2017-11-21 12:30:12,375 ERROR [runner.ScriptFieldPreviewRunner]: Script field preview failed for field that has not yet been created groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getCustomFieldValue() is applicable for argument types: (java.lang.String) values: [Change Area] at Script160.run(Script160.groovy:9)

 

I am a complete noob, so apologies if I am making an obvious mistake. Can someone point out the error of my ways?

Best wishes

 

1 answer

1 accepted

Suggest an answer

Log in or Sign up to answer
1 vote
Answer accepted
Alexey Matveev
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.
November 21, 2017

Hello, 

You would need a script like this

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;

def issueManager = ComponentAccessor.getIssueManager()
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issue = ComponentAccessor.getIssueManager().getIssueByCurrentKey("issuekey")
def csChangeArea = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Change Area")

return issue.getCustomFieldValue(csChangeArea)
Prasad Andrews September 30, 2019

Hi @Alexey Matveev 

Recently I have upgraded my JIRA from v7.9.2 to v8.2.5.

Also, I have updated the script runner plugin from v5.4.49 to v5.6.2.1-jira8.

Please find my below script and error output.

import com.atlassian.jira.component.pico.ComponentManager
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;

Issue issue = issue

def issueKey = issue.getKey()

def supp_tkt_cnt = getCustomFieldValue("Support Tickets")

if(supp_tkt_cnt > 0){
String url = "https://solutions.com/web/modules/pss/crm/css/op/CCSSReportedCustDetailsModViewMgr.php?strTCMIssueIDs=" + issueKey;

return "<a href=\"" + url + "\">" + url + "</a>";
}
else{

return '-';
}

 

Output Error Log:

2019-09-30 17:38:50,193 ERROR [runner.ScriptFieldPreviewRunner]: *****************************
2019-09-30 17:38:50,193 ERROR [runner.ScriptFieldPreviewRunner]: Script field preview failed for field that has not yet been created
groovy.lang.MissingMethodException: No signature of method: org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getCustomFieldValue() is applicable for argument types: (java.lang.String) values: [Support Tickets]
at Script683096.run(Script683096.groovy:12)

Note: The fields are available in JIRA.

Like Damien Davis likes this
Jose Carlos Nieto November 14, 2019

Hello @Prasad Andrews, that doesn't seem like the way to pick up the value of a custom field. Please try the following code:

import com.atlassian.jira.component.pico.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue;

Issue issue = issue

def issueKey = issue.getKey()
def supp_tkt = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Support Tickets")
def supp_tkt_cnt = (double) issueKey.getCustomFieldValue(supp_tkt)

if(supp_tkt_cnt > 0){
    String url = "https://solutions.com/web/modules/pss/crm/css/op/CCSSReportedCustDetailsModViewMgr.php?strTCMIssueIDs=" + issueKey;
    return "<a href=\"" + url + "\">" + url + "</a>";
}
else {
    return '-';
}

 

Like Prasad Andrews likes this
mohit panwar July 10, 2021

Hi All,

I need some help. How to get the value of the custom field from the issuetype. Then printing and using that variable further.

I have a issue type with name "TEST1-5". when trying to print the value for issue and csChangeArea i am getting "NULL" value. Please help.

When 

import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.ModifiedValue;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;

def issueManager = ComponentAccessor.getIssueManager()
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issue = ComponentAccessor.getIssueManager().getIssueByCurrentKey("TEST1-5")
def csChangeArea = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectsByName("Username")

log.info("My script variable new value : " + issue)

log.info("Custom field value : " + csChangeArea)

TAGS
AUG Leaders

Atlassian Community Events