Hi,
I want to store the value of "Target start" in another custom field. Each time the value of Target start changes, it is stored as an array.
How to achieve this using script runner?
Thanks
Swarna
Sorry don't have much time to refine this.
But the basics are here.
Just add a new Script Listener, for your desired project or ALL (you can also define conditions in the script for example if(issuetype = task) etc)
Run the listener on event Issue Updated
Inline Script
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue
def change = event?.getChangeLog()?.getRelated("ChildChangeItem")?.find{it.field == 'nameOfFieldToMonitor'}
if (change) {
MutableIssue issue = (MutableIssue) event.issue
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issueManager = ComponentAccessor.getIssueManager()
def fieldToHoldValue = customFieldManager.getCustomFieldObjectByName('nameOfFieldToHold')
def existingHistory = issue.getCustomFieldValue(fieldToHoldValue)
def newHistory = []
//def user = ComponentAccessor.getUserManager().getUserByKey('username')
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
if(existingHistory){
newHistory.add(existingHistory)
newHistory.add(change.newstring)
}else{
newHistory.add(change.newstring)
//newHistory = change.oldstring.toString() + ',' + change.newstring.toString()
}
if(newHistory){
issue.setCustomFieldValue(fieldToHoldValue, newHistory.toString())
issueManager.updateIssue(user, issue, com.atlassian.jira.event.type.EventDispatchOption.ISSUE_UPDATED, false)
//log.warn "Field value changed from ${change.oldstring} to ${change.newstring}"
}
}
Structure the array or the saving however you want.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.