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}"
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
}
The Script needs to run multiple queries and then append the issue totals to a file. Is this possible?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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")
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.