Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Script runner - setting selection list field value

Ron Grinfeld June 2, 2015

i'm trying to set a custom selection list field value via script runner post function script.

It passes with no issues but I don't see the filed actually getting updated. 

What am I missing ?

import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
def componentManager = ComponentManager.instance;
if (issue.issueTypeObject.name == "Bug"){
	def optionsManager = componentManager.getComponentInstanceOfType(OptionsManager.class);
// locating the custom field	
def cfDocReq = componentManager.getCustomFieldManager().getCustomFieldObjectByName('Documentation required');
	// retrieve the field options
	def fieldConfig = cfDocReq.getRelevantConfig(issue);
	// set up the specific value to set the list 
	def value = ComponentAccessor.optionsManager.getOptions(fieldConfig)?.find { it.toString() == 'Required' }
    // update the custom selection list field
	issue.setCustomFieldValue(cfDocReq, value);
	// store changes
	issue.store();
}

2 answers

1 accepted

0 votes
Answer accepted
Ron Grinfeld June 8, 2015

OK, this is how its suppose to be (working for me):

 

// setting the list value to null which is the default jira value
mutableIssue.setCustomFieldValue(cfSDoc, null);
// update the custom filed and issue
Map<String, ModifiedValue> modifiedFields = mutableIssue.getModifiedFields();
def fieldLayoutItem = ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(mutableIssue).getFieldLayoutItem(cfSDoc);
DefaultIssueChangeHolder issueChangeHolder = new DefaultIssueChangeHolder();
ModifiedValue modifiedValue = (ModifiedValue) modifiedFields.get(cfSDoc.getId());
cfSDoc.updateValue(fieldLayoutItem, mutableIssue, modifiedValue, issueChangeHolder);
mutableIssue.store();
0 votes
Ron Grinfeld June 3, 2015

Anything ????

Suggest an answer

Log in or Sign up to answer
TAGS
atlassian, likes for trees, atlassian community, social impact, tree planting campaign, community kudos, atlassian giving, environmental impact, sustainability, likes for good, atlassian social responsibility, community challenge

Make every click count—help us plant 50,000 trees! 🌳

Want to make your everyday Community actions directly contribute to reforestation? The Atlassian Community can achieve this goal by liking a post, attending an ACE, sending your peers kudos, and so much more!

Help us plant more trees
AUG Leaders

Atlassian Community Events