I have this script to disable an option from a multiselect custom field
the customfield is "Support Group", usually 3-5 people selected
we need to deactivate a list of people that can be or not selected in a large list of issues
for example we need to deactivate or unselect "Arturo Alcañiz Fidalgo -85348-"
I have no error in the script but it doesn't work:
1- the optionsavailable list returns all the options (+200) in the customfield, not the selected options for this issue (3-5 selecteds)
2- after disabling the issue keep the previous customfield values
¿Can any one helpme to read an after add/delete, select/unselect values in a multiselect customfield?
Thanks in advance
Here's the script===========================================
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.issue.search.SearchQuery
import com.atlassian.jira.web.bean.PagerFilter
//def log = Logger.getLogger(getClass())
import org.apache.log4j.Level
log.setLevel(Level.INFO)
// cargamos los elementos para manejar issues, proyectos y customfields
IssueManager issueManager = ComponentAccessor.getIssueManager();
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
//define the values you want to disable here
def optionsToDisable = ["Arturo Alcañiz Fidalgo -85348-"]
// The issues returned from that JQL will get altered
final searchQuery = "Support Group='Arturo Alcañiz Fidalgo -85348-'"
// Get some components
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def searchProvider = ComponentAccessor.getComponent(SearchProvider)
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def issueService = ComponentAccessor.issueService
// Perform the search
def query = jqlQueryParser.parseQuery(searchQuery)
def searchResults = searchProvider.search(SearchQuery.create(query, loggedInUser), PagerFilter.unlimitedFilter)
// Iterate all the results to update each issue
searchResults.results.each { documentIssue ->
//buscamos el id del issue
def issueId = documentIssue.document.fields.find { it.name() == "issue_id" }.stringValue().toLong()
//cargamos en el objeto issue el elemento
def issue = issueManager.getIssueObject(issueId);
log.info("Working on issue ${issue.key}")
log.info(searchQuery)
// definimos el customfield como cf
final cfName = "Support Group"
def optionsManager = ComponentAccessor.optionsManager
// def cf = customFieldManager.getCustomFieldObjects(issue).find { it.name == cfName }
def cf = customFieldManager.getCustomFieldObjects(issue).findByName(cfName)
// Value for a multi-select field will always be a list even if "None" is selected
def options = optionsManager.getOptions(cf.getRelevantConfig(issue))
def lista=options.toString()
log.info(lista)
def sb = new StringBuffer()
//disable options
options.each {
// log.info('options.each ' + it.value.toString())
if(optionsToDisable.contains(it.toString())) {
log.info('Disabling this option ' + it.value.toString())
sb.append("Disabling Option: " + it.toString() + "\n")
optionsManager.disableOption(it)
log.info(optionsManager.disableOption(it))
log.info(optionsToDisable.contains(it.toString()))
}
}
//ModifiedValue mVal = new ModifiedValue(issue.getCustomFieldValue(cf), [optionsToDisable]);
options = optionsManager.getOptions(cf.getRelevantConfig(issue))
lista=options.toString()
// log.info(sb.toString())
// return sb.toString()
}
Jira Product Discovery Premium is now available! Get more visibility, control, and support to build products at scale.
Learn moreOnline forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.