How to add a new row to Lookup Manager via ScriptRunner
Scenario
The user can use ScriptRunner to add a row into the Lookup Manager via groovy script.
How-to
Step 1:Go to ScriptRunner Console
Step 2: Prepare the new record data
import groovy.json.JsonOutput;
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.*
import groovyx.net.http.ContentType
import static groovyx.net.http.Method.*
import groovy.json.JsonOutput
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.akelesconsulting.jira.plugins.rest.LookupService
import org.apache.log4j.Logger
import org.apache.log4j.Level
import groovy.json.JsonSlurper
@WithPlugin("com.akelesconsulting.jira.plugins.LookupManager")
@PluginModule
LookupService lookupService
def log = Logger.getLogger("LookupManager")
log.setLevel(Level.DEBUG)
//Step 1: Set table name. e.g. App Mapping
def tableName = "YOUR_LOOKUP_TABLE_NAME";
log.debug("***** Get table information ****")
def tableListText = lookupService.getTableList()
def tableListArray = new JsonSlurper().parseText( tableListText )
def table = tableListArray.find {table -> table.name.equals(tableName)}
//log.debug("Table information: " + table)
log.debug("Table ID: " + table.id)
log.debug("***** Get column information*****")
def columns = table.columns
//Sample: [[id:4, name:Application], [id:5, name:App Owner]]
log.debug("Column information: " + columns)
//Step 2: Use the column id to build the new record data, E.g. {"4":"Jira","5":"admin"}
def dataString = '{"COLUMN_ID_1":"VALUE_1","COLUMN_ID_2":"VALUE_2"}'
Step 3: Send request to add new row in Lookup Manager
//Step 3: Set base URL, E.g. http://localhost:2990/jira
def baseUrl = "YOUR_JIRA_BASE_URL";
//Step 4: Set username and password
def userName = "YOUR_USERNAME"
def password = "YOUR_PASSWORD"
def http = new HTTPBuilder(baseUrl + "/rest/lookuprestresource/1.0/lookup" + "/table/" + tableId + "/entries")
http.request(POST) {
headers.'Authorization' = "Basic " + ((userName + ":" + password).bytes.encodeBase64().toString())
headers.'X-Atlassian-Token' = 'no-check';
requestContentType = URLENC
body = "data=" + dataString
response.success = { resp, data ->
log.warn("SUCCESS: " + resp.status)
log.warn(data)
}
response.failure = { resp, data ->
log.warn("ERROR: " + resp.status)
log.warn(data)
}
}
Demo
Learn More
- How to add a new row to Lookup Manager via ScriptRunner
- How to set a custom field value when date is between two other dates
- How to import a table into Lookup Manager via ScriptRunner
- How to identify the workflows that are using Lookup Manager
- How to support Component field in Lookup Manager
- How to append values to multi-select fields
- How to use Issue Properties in ScriptRunner Groovy scripts