Hi Team,
Can you plz help me with a script for copying Assignee Group members into a multi user picker field.
When Assignee Group= Invoice, then all the members in the Invoice Group needs to be copied into a muti user picker custom field. Similarly if Group(Organization)= ICICI then all the members in the group ICICI needs to be copied in a multi user picker custom field.
Here Assignee Group group is a "Select Single Choice" Custom field and Group(Organization) is a "Group Picker" custom field.
Note: We need this script in Jira Cloud Instance.
I am using the below script, but getting error-
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
try {
def issueKey = 'TP1-2'
def issueDetails = get("/rest/api/2/issue/${issueKey}")
.header('Content-Type', 'application/json')
.asString()
if (issueDetails.status != 200) {
throw new Exception("Failed to retrieve issue details. Status code: ${issueDetails.status}")
}
def jsonResponse = new JsonSlurper().parseText(issueDetails.body) as Map
def fields = jsonResponse.fields as Map
if (fields.containsKey('customfield_10072')) {
def groupName = fields.customfield_10072
def groupNames = groupName instanceof List ? groupName : [groupName] // Ensure it's treated as a list
def allGroupMembers = [] // Collect all group members here
groupNames.each { singleGroupName ->
def groupMembersResponse =
get("https://jacksparrow1.atlassian.net/rest/api/3/group/member?groupname=${singleGroupName}")
.header('Content-Type', 'application/json')
.asString()
if (groupMembersResponse.status != 200) {
throw new Exception("Failed to retrieve group members for group ${singleGroupName}. Status code:
${groupMembersResponse.status}")
}
def groupMembersJson = new JsonSlurper().parseText(groupMembersResponse.body) as Map
def groupMembers = groupMembersJson?.values()?.flatten()?.collect { it['displayName'] } as Set
allGroupMembers.addAll(groupMembers)
}
def currentUsers10071 = (fields.customfield_10071 ?: []) as Set
currentUsers10071.addAll(allGroupMembers)
def jsonBody = [
fields: [
customfield_10071: currentUsers10071.toList()
]
]
def result = put("/rest/api/2/issue/${issueKey}")
.header('Content-Type', 'application/json')
.body(JsonOutput.toJson(jsonBody))
.asString()
if (result.status == 204) {
return 'Success'
} else {
throw new Exception("Failed to update issue. Status code: ${result.status}, Response:
${result.body}")
}
} else {
throw new Exception('customfield_10072 not found in the issue details')
}
} catch (Exception e) {
return "An error occurred: ${e.message}"
}
Thanks,