Script Listener not running

PJ Singh November 28, 2020

I am using ScriptRunner for JIra Cloud. I setup the script listener (example) that is not running the script (see below for detail). I am new to ScriptRunner (just downloaded Trial version). It seems the Webhook is not triggering when the issue is updated.

Can someone guide me.

 

Identified by:9CF705F2-96B3-4C2E-AE4F-3469B1AA89A9

Enabled

On these events:Issue UpdatedIn these projects:LSCC Build (LSCCB)

(Only applies to issue, project, issuelink (source issue), version and comment related events)

-----------------------------------------------------------------

def customFields = get("/rest/api/2/field")
.asObject(List)
.body
.findAll { (it as Map).custom } as List<Map>

def input1CfId = customFields.find { it.name == 'Custom Field 1' }?.id
def input2CfId = customFields.find { it.name == 'Custom Field 2' }?.id
def outputCfId = customFields.find { it.name == 'Output Custom Field' }?.id
def projectKey = "TP"

if (issue == null || issue.fields.project.key != projectKey) { (1)
logger.info("Wrong Project ${issue.fields.project.key}")
return
}

def input1 = issue.fields[input1CfId] as Integer
def input2 = issue.fields[input2CfId] as Integer

if (input1 == null || input2 == null) {
logger.info("Calculation using ${input1} and ${input2} was not possible")
return
}

def output = input1 + input2

2 answers

1 vote
PJ Singh November 29, 2020

Kabir,

Thanks for your prompt response.

 

Please see below the complete code (copy of example I used). Can you specify what is missing?

def customFields = get("/rest/api/2/field")
.asObject(List)
.body
.findAll { (it as Map).custom } as List<Map>

def input1CfId = customFields.find { it.name == 'Custom Field 1' }?.id
def input2CfId = customFields.find { it.name == 'Custom Field 2' }?.id
def outputCfId = customFields.find { it.name == 'Output Custom Field' }?.id
def projectKey = "TP"

if (issue == null || issue.fields.project.key != projectKey) { (1)
logger.info("Wrong Project ${issue.fields.project.key}")
return
}

def input1 = issue.fields[input1CfId] as Integer
def input2 = issue.fields[input2CfId] as Integer

if (input1 == null || input2 == null) {
logger.info("Calculation using ${input1} and ${input2} was not possible")
return
}

def output = input1 + input2

if (output == (issue.fields[outputCfId] as Integer)) {
logger.info("already been updated")
return
}

put("/rest/api/2/issue/${issue.key}")
//.queryString("overrideScreenSecurity", Boolean.TRUE)
.header("Content-Type", "application/json")
.body([
fields:[
(outputCfId): output
]
])
.asString()

PJ Singh November 29, 2020

I am also not sure what to put in URL for JIRA Webhook?

Kate Kabir
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 30, 2020

Hi PJ

I have replied to the support ticket that you have created with us with the explanation. I hope it helps.

Thank you.

0 votes
Kate Kabir
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 28, 2020

Hi PJ Singh

Thank you for the question. 

Unfortunately, the script that you have provided is incorrectly configured. You did not make a REST call to set a field from your listener. You may kindly refer to the link here as a reference guide for you to create the script that you required. 

Thank you.

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
STANDARD
TAGS
AUG Leaders

Atlassian Community Events