/
Removing items from checklists using ScriptRunner
Removing items from checklists using ScriptRunner
You may want to remove some items from a checklist, but not all of them. This can be useful to filter out unnecessary items in a checklist.
To remove all items or reset a checklist, see Replace all items in a checklist using ScriptRunner instead.
Steps
Get the custom field, custom field type and items of your Checklist field.
def customFieldManager = ComponentAccessor.getCustomFieldManager(); // Remplace the custom field ID with whatever ID your custom field has def checklistField = customFieldManager.getCustomFieldObject("customfield_10101"); def checklistCFType = (ChecklistCFType) checklistField.getCustomFieldType(); Collection<ChecklistItem> items = (Collection<ChecklistItem>) checklistCFType.getValueFromIssue(checklistField, issue);
Loop through your items and remove the items you wanted removed.
// The "toList()" here is important. If not specified, the script will fail with a ConcurrentModificationException for (ChecklistItem item : items.toList()) { if (item.getName() != "Only Accepted Item Name") { items.remove(item); } }
Update the issue with the updated item list.
checklistCFType.updateValue(checklistField, issue, items);
Full example
Here is a full example where items are removed from a Checklist field.
import com.onresolve.scriptrunner.runner.customisers.WithPlugin;
@WithPlugin("com.okapya.jira.checklist")
import com.okapya.jira.customfields.*;
import com.atlassian.jira.component.ComponentAccessor
// In this example the issue object comes from an event like in ScriptRunner's Custom Listeners
def issue = event.issue;
def customFieldManager = ComponentAccessor.getCustomFieldManager();
// Remplace the custom field ID with whatever ID your custom field has
def checklistField = customFieldManager.getCustomFieldObject("customfield_10101");
def checklistCFType = (ChecklistCFType) checklistField.getCustomFieldType();
Collection<ChecklistItem> items = (Collection<ChecklistItem>) checklistCFType.getValueFromIssue(checklistField, issue);
// The "toList()" here is important. If not specified, the script will fail with a ConcurrentModificationException
for (ChecklistItem item : items.toList()) {
if (item.getName() != "Only Accepted Item Name") {
items.remove(item);
}
}
// Update the value in the issue with the updated collection
checklistCFType.updateValue(checklistField, issue, items);
SERVER documentation (On Cloud? Go here.)
Have questions? Contact our Service Desk for help anytime.
, multiple selections available,
Related content
Deleting items from checklists using SIL
Deleting items from checklists using SIL
Read with this
Updating checklists with new sets of items using SIL
Updating checklists with new sets of items using SIL
Read with this
Checklist item representations
Checklist item representations
Read with this
Getting started with ScriptRunner
Getting started with ScriptRunner
Read with this