ScriptRunner for Jira

Update checklists using automated scripts⚡️

ScriptRunner for Jira is an all-in-one admin app. Automate DevOps workflows, actions with Built-in Scripts, improve the development workflow with Hooks. Automate the behaviour of the Smart Checklist as well.

Requires Checklists Custom Field https://railsware.atlassian.net/wiki/spaces/CHK/pages/97845318

📍Use Case: Set Checklist depending on Custom Field Value after Issue Creation

If you want the specific Checklist appended to your newly created ticket depending on the other Custom field value - you can easily do it by adding Script Runner Post Function to your Create Ticket workflow transition.

Assume that you have a custom field Environment with 2 values: Production/Staging. So you expect that while adding a new Issue - you'll have a proper checklist assigned.

 

Implementation flow:

  1. Go to Project Settings → Workflows

  2. Choose the Workflow you want to add a post function to and click Edit:

  3. Add a Post Function

3.1. Choose transition and click on the Post Functions link:

 

3.2. Add Post Function:

3.3. Choose ScriptRunner Post-Function (Runs a script in a post-function, or a built-in script) and click Add:

3.4. Choose Run Script (Run arbitrary code on transition):

3.5. Add a Script Code:

//package com.adaptavist.sr.cloud.samples.events def issueKey = issue.key def newSummary = 'Updated by a script' def cfName = 'Environment' //get custom field of "seelct" type def customFields = get('/rest/api/2/field') .asObject(List) .body .findAll { (it as Map).custom } as List<Map> def cfEnvironmentId = customFields.find { it.name == cfName }?.id def cfEnvironment = issue.fields[cfEnvironmentId] //get custom field def environment = cfEnvironment['value'] as String def propertyKey = 'com.railsware.SmartChecklist.checklist' def propertyValue //compare field values if (environment == 'Production') { propertyValue = '"- ToDo List\\n+ Checked\\nx Skipped\\n~ In Progress\\n# Another ToDo List\\n- Unchecked\\n> Quote line 1 https://rw.rw\\n> Quote line 2\\n> Quote line 3\\n"' }else if (environment == 'Staging') { propertyValue = '"- Uno\\n+ Dos\\nx Tres\\n~ Quatro\\n"' } logger.info('property' + environment) def result = put('/rest/api/2/issue/' + issueKey + '/properties/' + propertyKey) .header('Content-Type', 'application/json') .body(propertyValue) .asString() if (result.status == 204) { return 'Success' } else { return "${result.status}: ${result.body}" }


3.6. Check added post function and Publish Draft:

You're done! Now every time the Issue will be transitioned to to do, based on the Environment field value the proper Checklist items will be added to your Smart Checklist 🎉