Tip |
---|
You might find Smart Checklist integration with ScripRunner useful for updating checklists using automated scripts. Below you can find the example of adding a checklist to a Jira Issue by means of updating Issue Property with the key |
...
Panel | ||
---|---|---|
| ||
☝🏼 NOTE: Since we use Issue Properties as primary memory storage for checklists, it's required to update Issue Property to have checklists updated with any type of automation. Updating the "Checklists" Custom Field won't bring the desired result. |
📍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
Status | ||||
---|---|---|---|---|
|
...
Implementation flow:
Go to Project Settings → Workflows
Choose the Workflow you want to add a post function to and click Edit:
Add a Post Function
...
3.4. Choose Run Script (Run arbitrary code on transition):
...
3.5. Add a Script Code:
...
Code Block | ||
---|---|---|
| ||
//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}" } |
...