Hi All,
Trying to use Script Runner to create new subtasks and populate fields based on a screen that pops up during a workflow transition plus copy of fields held on the parent but can't work out how to set customfields using the subtask.
Managed to get the inbuilt fields, e.g. summary, assignee etc all working but now trying to start setting custom fields but failing :-(
// getting the custom fields
def actionSummaryFieldName = 'customfield_10101'
def actionAssigneeFieldName = 'customfield_10102'
def actionDescriptionFieldName = 'customfield_10104'
def actionDueDateFieldName = 'customfield_10103'
// getting the specified custom field values
def actionSummaryValue = get("/rest/api/2/issue/${issue.key}?fields=${actionSummaryFieldName}")
.header('Content-Type', 'application/json')
.asObject(Map)
def actionAssigneeValue = get("/rest/api/2/issue/${issue.key}?fields=${actionAssigneeFieldName}")
.header('Content-Type', 'application/json')
.asObject(Map)
def actionDescriptionValue = get("/rest/api/2/issue/${issue.key}?fields=${actionDescriptionFieldName}")
.header('Content-Type', 'application/json')
.asObject(Map)
def actionDueDateValue = get("/rest/api/2/issue/${issue.key}?fields=${actionDueDateFieldName}")
.header('Content-Type', 'application/json')
.asObject(Map)
// writing the custom field values to the subtask fielads
subtask.fields.summary = actionSummaryValue.body.fields[actionSummaryFieldName]
subtask.fields.assignee = actionAssigneeValue.body.fields[actionAssigneeFieldName]
subtask.fields.description = actionDescriptionValue.body.fields[actionDescriptionFieldName]
subtask.setCustomFieldValue(actionDueDateFieldName, Date.parse("yyyy-MM-dd", actionDueDateValue.body.fields[actionDueDateFieldName]))
//Getting the custom fields
def customFields = get("/rest/api/2/field")
.asObject(List)
.body
.findAll { (it as Map).custom } as List<Map>
def actionSummaryFieldId = customFields.find { it.name == 'Action Summary' }?.id
def actionAssigneeFieldId = customFields.find { it.name == 'Action Assignee' }?.id
def actionDueDateFieldId = customFields.find { it.name == 'Action Due Date' }?.id
def actionDescriptionFieldId = customFields.find { it.name == 'Action Description' }?.id
// clearing the fields used to create the Action
def clearFieldResult = put("/rest/api/2/issue/${issue.key}")
.queryString("overrideScreenSecurity", Boolean.TRUE)
.header('Content-Type', 'application/json')
.body([
fields:[
(actionSummaryFieldId): '',
(actionDescriptionFieldId): '',
(actionAssigneeFieldId): null,
(actionDueDateFieldId): null,
]
]).asString()
assert clearFieldResult.status == 204