Trying to pull the option field from a cascading field and populate a people picker field

Rebecca Allen December 4, 2020

I'm new to scriptrunner but I'm trying to populate the Assignee with a name entered into a text box in a cascading field.

I found the script below on this site, but it's not working:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
Issue issue = ComponentAccessor.getIssueManager().getIssueObject("Rig Manager");
CustomField customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Cascade");
Map<String, Option> params = (HashMap<String,Option>) issue.getCustomFieldValue(customField)
if (params != null) {
    Option parent = params.get(CascadingSelectCFType.PARENT_KEY)
    Option child = params.get(CascadingSelectCFType.CHILD_KEY)
}

1 answer

0 votes
mogavenasan
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.
January 6, 2021

Hi @Rebecca Allen,

I'm answering this by using some of the code I wrote before and also there some joining multiple scripts - hence, it is not tested and might need some tweaking:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType
import org.apache.log4j.Level
import org.apache.log4j.Logger

String parentValue, childValue

def optionsManager = ComponentAccessor.getOptionsManager()
def issueManager = ComponentAccessor.getIssueManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_<ID>")
def cFieldValue = issue.getCustomFieldValue(cField)

HashMap<String, Option> hashMapEntries = (HashMap<String, Option>) cFieldValue

if (hashMapEntries != null) {
    
Option parent = hashMapEntries.get(CascadingSelectCFType.PARENT_KEY)
    Option child = hashMapEntries.get(CascadingSelectCFType.CHILD_KEY)
    parentValue = parent.toString()
    childValue = child.toString()
}

def user = ComponentAccessor.userManager.getUserByName(childValue)
issue.setAssignee(user)

  • Provide the custom field ID at "customfield_<ID>".
  • This script assumes that the assignee value is from the child value of the cascading custom field.

I hope that this helps.

Thanks,
Moga 

Suggest an answer

Log in or Sign up to answer