Date: Thu, 28 Mar 2024 09:39:51 +0000 (UTC) Message-ID: <2090214869.109.1711618791428@2eeec83f068f> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_108_1202392429.1711618791428" ------=_Part_108_1202392429.1711618791428 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
Purpose |
Hosting |
Compatible Tools |
---|---|---|
Dump data from multiple ProForma fields into the Jira Description field.= |
Cloud |
Any scripting tool, such as JMWE, Power Scripts or Scriptrunner, that us= es Groovy. |
Script |
//// Wh= en using this script in the script console uncomment the next line: def issueKey =3D 'ISSUE-1' //// When using this script in a transition uncomment the next line: // def issueKey =3D issue.key String formName =3D "Form Name" def fieldNames =3D ["Field One", "Field Two", "Field Three", "Field Four"] String noValue =3D "No value" Closure<String> getIssueDescription =3D { String key -> def issueMap =3D get('/rest/api/2/issue/' + issueKey) .header('Content-Type', 'application/json') .asObject(Map) return issueMap.body.fields.description.toString() } Closure getFormIds =3D { def propertyValue, String name -> def ids =3D [] for(def form : propertyValue.value.forms){ =09 if(form.name.equals(name)){ =09 ids.add(form.id) =09 } =09} return ids } Closure<String> getFieldId =3D { def property, String fieldName -> for (def question : property.value.design.questions){ if(fieldName.equals(question.value.label)){ return question.key } } } Closure getChoiceValue =3D { def property, String fieldName, String choiceI= d -> def fieldId =3D getFieldId(property, fieldName) for (def question : property.value.design.questions){ if(question.key.equals(fieldId)){ for(def choice : question.value.choices){ if(choice.id =3D=3D choiceId){ return choice.label } } } } } Closure<String> getFieldValue =3D { def property, String fieldName -&= gt; for (def answer : property.value.state.answers){ String fieldId =3D getFieldId(property, fieldName) if(answer.key.equals(fieldId)){ if(answer.value.text && !answer.value.text.equals("")){ return answer.value.text } else if(answer.value.choices){ String choiceValues =3D "" for(def choice : answer.value.choices){ if(choiceValues.equals("")){ choiceValues =3D getChoiceValue(property, fieldName= , choice) } else { choiceValues =3D choiceValues + ", " + getChoiceVal= ue(property, fieldName, choice) } } return choiceValues.equals("") ? noValue : choiceValues } else if(answer.value.users){ String userValues =3D "" for(def user : answer.value.users){ if(userValues.equals("")){ userValues =3D user.name } else { userValues =3D userValues + ", " + user.name } } return userValues.equals("") ? noValue : userValues } else if(answer.value.date || answer.value.time){ String dateTime =3D "" if(answer.value.date){ dateTime =3D dateTime + answer.value.date } if(answer.value.time){ if(answer.value.date){ dateTime =3D dateTime + " " + answer.value.time } else { dateTime =3D dateTime + answer.value.time } } return dateTime.equals("") ? noValue : dateTime } } } return noValue } def proFormaForm =3D get('/rest/api/3/issue/' + issueKey + '/properties/pro= forma.forms') .header('Content-Type', 'application/json') .asObject(Map) if(proFormaForm.status =3D=3D 200){ def forms =3D getFormIds(proFormaForm.body, formName) String result =3D "" for(def formId : forms){ def property =3D get('/rest/api/3/issue/' + issueKey + '/properties= /proforma.forms.i' + formId) .header('Content-Type', 'application/json') .asObject(Map) if(property.status =3D=3D 200){ if(property.body.value.schemaVersion.equals(8)){ for(def fieldName : fieldNames) { if(result.equals("")){ result =3D getFieldValue(property.body, fieldName) } else { result =3D result + ", " + getFieldValue(property.b= ody, fieldName).toString() } } } } } if(!result.equals("")){ def issueUpdate =3D put("/rest/api/2/issue/${issueKey}") .header('Content-Type', 'application/json') .body([ fields: [ description: result //description: getIssueDescription(issueKey) + " " + re= sult ] ]) .asString() } } |
Installation instructions |
|
Possible use cases |
|
Limitations |
|