Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to run multiple JQL queries in ScriptRunner with date variable

Eric Monfette October 23, 2019

Trying to automate quarterly reporting. This requires running multiple JQL queries in scriptrunner console that output results, then transfer results to external file. Wondering if anyone had an idea how to create date variables that could be put into queries that would have months. EX of code:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import java.sql.Date
import java.sql.Timestamp
import groovy.time.TimeCategory


// Search service
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def searchService = ComponentAccessor.getComponent(SearchService)
def issueManager = ComponentAccessor.getIssueManager()
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()

//def startDate = new Date(currentDateValue.find())
//def endDate = startDate.setMonth
//def format = "yyyy-MM-dd"
//def startDate = new Date()

// JQL queries
def query = jqlQueryParser.parseQuery("project in (OPX) AND issuetype = Incident AND created >= 2019-09-01")
def query1 = jqlQueryParser.parseQuery("project in (OPX) AND issuetype = Task")

// Searches
def search = searchService.search(user, query, PagerFilter.getUnlimitedFilter())
def search1 = searchService.search(user, query1, PagerFilter.getUnlimitedFilter())

// Logs
search.results.each { documentIssue ->
log.debug(documentIssue.key)
}

"Total issues INFRA: ${search.total} / Total issues CMS: ${search1.total}"

1 answer

1 accepted

1 vote
Answer accepted
Ivan Tovbin
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 24, 2019

Hi Eric,

Frankly I didn't quite get what exactly you are trying to achieve, however I'd start with optimizing your code a little bit:

import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.search.SearchResults
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.query.Query

ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
String date = "2019-09-01"
String jql = "project in (OPX) AND issuetype = Incident AND created >= ${date}"

List<MutableIssue> issues = getIssuesFromJQL(jql, user)

List<MutableIssue> getIssuesFromJQL(String jqlQuery, ApplicationUser user) {
IssueManager issueManager = ComponentAccessor.getIssueManager()
JqlQueryParser jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser.class)
SearchService searchService = ComponentAccessor.getComponent(SearchService.class)
Query query = jqlQueryParser.parseQuery(jqlQuery)
SearchResults searchResults = searchService.search(user, query, PagerFilter.getUnlimitedFilter())
List<MutableIssue> mutableIssueList = searchResults.getIssues().collect { issue -> issueManager.getIssueObject(issue.getId()) }
return mutableIssueList
}
Eric Monfette October 24, 2019

The Script needs to run multiple queries and then append the issue totals to a file. Is this possible?

Ivan Tovbin
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 25, 2019

I suppose you could create a collection of queries and then iterate through it in a cycle and run a search using each element (query).

Eric Monfette October 25, 2019

If you could help appending script output to a file that would be great. File directory in ScriptRunner console not working. ex: 

File file = new File("/Documents/script_output/sr_output.txt")

Suggest an answer

Log in or Sign up to answer