Copy checkbox values as strings to custom text field?

Working towards solving this: https://answers.atlassian.com/questions/44206040

Here is some starter code where I try to get the checked values in a custom field and apply them to a text field (on the same ticket). But no joy yet. Some superfluous junk in here, I know.

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.project.Project
import groovy.transform.Field
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.config.SubTaskManager
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.customfields.option.*
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
     
def cfManager = ComponentAccessor.getCustomFieldManager()
def componentManager = ComponentManager.instance
def optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager.class)
def customFieldManager = ComponentAccessor.getCustomFieldManager()
  
//Get parent issue
Issue issue = (Issue) event.issue;
//Check, that it is a subtask type issue
if(!issue.isSubTask())
    return
  
MutableIssue parentIssue = issue.getParentObject();
Set issueLabels = parentIssue.getLabels();
def customField = customFieldManager.getCustomFieldObject("customfield_27132")
def selectedValues = customField.getValue(issue)*.value
def target = customFieldManager.getCustomFieldObject("customfield_27736")
String labels = selectedValues.join(',')
//CustomField cf = cfManager.getCustomFieldObject(condField)
//Options options = cf.getOptions(null, cf.getRelevantConfig(issue), null);
 
//def cfTarget = cfManager.getCustomFieldObject(target)
//issue.setCustomFieldValue(target, selectedValues.join(","))
//issue.setCustomFieldValue(target, "test")
target.updateValue(null, issue, new ModifiedValue(target, labels), new DefaultIssueChangeHolder());

 

 

1 answer

1 accepted

2 votes
Accepted answer

Hi James,

I read your linked question so I suppose what you want to achieve it to set the selected values of a subtask's checkbox field as labels to the parent, implemented as a script runner listener.  

So you will need for the scripting part, something like 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.issue.label.LabelManager

Issue issue = issue

if (! issue.isSubTask())
    return null

def cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Checkboxes")
def cfValue = issue.getCustomFieldValue(cf) as ArrayList <LazyLoadedOption>

def valuesToSet = cfValue?.collect {it.value}?.toSet() ?: [] as Set

def parentIssue = issue.getParentObject()
def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

// Set<Label> setLabels(final ApplicationUser remoteUser, final Long issueId, final Set<String> labels, final boolean sendNotification, final boolean causeChangeNotification);
ComponentAccessor.getComponent(LabelManager).setLabels(currentUser, parentIssue.id, valuesToSet, false, false)

Please let me know if this does the trick.  

PS. If indeed you want to copy checkboxes' values to a text custom field then please let me know so I can modify the script above 

regards, Thanos

Suggest an answer

Log in or Sign up to answer
Community showcase

Scrum Roles Explained: the Do's and the Don'ts

Hello Community,  Today we are going to talk about the three Scrum Roles. There is the Development Team, the Scrum Master and the Product Owner. In my opinion these three are all really impo...

106 views 1 5
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you