How to import a table into Lookup Manager via ScriptRunner
Scenario
The user can use ScriptRunner to import a table into the Lookup Manager.
How-to
Step 1:Go to ScriptRunner Console
Step 2: Copy and paste the code below into the console
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.JsonSlurper
import net.sf.json.groovy.JsonSlurper
import groovy.json.JsonOutput
import org.apache.log4j.Logger
def log = Logger.getLogger("com.onresolve.scriptrunner.runner.ScriptRunnerImpl")
log.warn("Importing table for Lookup Manager...")
//Step 1: Change this to your file path, e.g. <path_to_jira_home>/files/test.csv
File file = new File("YOUR_FILE_PATH_TO_CSV_FILEE")
if (file.exists() && file.isFile()) {
//Step 2: Set table name
def tableName = "YOUR_LOOKUP_TABLE_NAME";
//Step 3: Set base URL
def baseUrl = "YOUR_JIRA_BASE_URL";
def http = new HTTPBuilder(baseUrl + "/rest/lookuprestresource/1.0/lookup" + "/table/" + tableName.replaceAll(" " ,"%20"))
String[] lines = file.text.split('\n')
List<String[]> rows = lines.collect {
it.split(',')
}
//Sample: {name: Lookup Table Two, columns: [Reporter, Desccription, Priority], mode: newTable, result: [[Reporter, Desccription, Priority], [admin, This is a message, Medium]]}
// If the mode is newTable, Lookup Manager will create a new table and append data to it.
// If the mode is overwrite, Lookup Manager will overwrite the table
// If the mode is append, Lookup Manager will append the new data to the table
def dataObj = "{name: " + tableName + ", columns: " + rows[0] + ", mode: overwrite, result: " + rows + "}";
//Step 4: Set username and password
def userName = "YOUR_USERNAME"
def password = "YOUR_PASSWORD"
http.request(PUT) {
headers.'Authorization' = "Basic " + ((userName + ":" + password).bytes.encodeBase64().toString())
headers.'X-Atlassian-Token' = 'nocheck';
requestContentType = URLENC
body = dataObj
response.success = { resp, data ->
log.warn("SUCCESS" + resp.status)
log.warn(data)
}
response.failure = { resp, data ->
log.warn("ERROR " + resp.status)
log.warn(data)
}
}
} else {
"No file found at that location..."
}
Sample CSV:
Reporter,Desccription,Priority
admin,This is a message,Medium
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