User Tools

Site Tools


script_fields

Scripted Fields

ScriptRunner allows you to script specific ScriptRunner fields. As an example, if you move an issue to a different project, a new key is assigned. Jira is smart enough that it keeps the old key as well, so if you search for the old issue key, you will be redirected to the new issue key. If for some reason you'd like to find out what the previous key is, you can script this with a ScriptRunner field. Following code can be used in for the Script Field:

Get Old Key

import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.component.ComponentAccessor;
 
IssueManager issueManager = ComponentAccessor.getIssueManager();
Set<String> tickets = issueManager.getAllIssueKeys(issue.id)
tickets = tickets.minus(issue.key)
if (tickets.isEmpty()) {
   return "N/A"
}
return tickets.join(', ')

Set Summary

import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.component.ComponentAccessor;
 
void setSummary(String key,String newSummary) {
IssueManager im = ComponentAccessor.getIssueManager();
        MutableIssue issue = im.getIssueObject(key);
        issue.setSummary(newSummary);
        issue.store();
}
 
setSummary("CD-4","Insert your Summary");

Create this as an initialiser.

import com.atlassian.jira.component.ComponentAccessor
import static com.atlassian.jira.issue.IssueFieldConstants.*
 
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def optionsManager = ComponentAccessor.getOptionsManager()    
 
def formField = getFieldByName("FIELD_NAME") // *name* of your custom field
def customField = customFieldManager.getCustomFieldObject(formField.getFieldId())
def config = customField.getRelevantConfig(getIssueContext())
def options = optionsManager.getOptions(config)
 
// Set the values inside the select list field 
def noneMap = ["-1": "None"]
 
 
if (getActionName() == "Need More Info") {
    def optionsMap = noneMap + options.findAll {
        it.value in ["OPTION 1", "OPTION 2", "OPTION 3"] // list of options you want to show
    }.collectEntries {
        [
            (it.optionId.toString()) : it.value
        ]
    } 
    formField.setFieldOptions(optionsMap)
} else if (getActionName() == "Resolved") {
    def optionsMap = noneMap + options.findAll {
        it.value in ["OPTION 1", "OPTION 3"] // list of options you want to show
    }.collectEntries {
        [
            (it.optionId.toString()) : it.value
        ]
    } 
    formField.setFieldOptions(optionsMap)
} else if (getActionName() == "Close") {
    def optionsMap = noneMap + options.findAll {
        it.value in ["OPTION 4", "OPTION 5"] // list of options you want to show
    }.collectEntries {
        [
            (it.optionId.toString()) : it.value
        ]
    } 
    formField.setFieldOptions(optionsMap)
} else {
    def optionsMap = noneMap + options.findAll {
        it.value in ["OPTION 3"] // list of options you want to show
    }.collectEntries {
        [
            (it.optionId.toString()) : it.value
        ]
    } 
    formField.setFieldOptions(optionsMap)    
}

References: GitHub Link Atlassian Community Link

script_fields.txt · Last modified: 2019/07/11 09:28 by root