fnGetAllJiraIssuesWithAllFields: (jiraDomain as text, optional nextPageToken as text) => let // Build the request URL, adding the nextPageToken parameter if it exists url = jiraDomain & "/rest/api/3/search/jql" & (if nextPageToken = null then "" else "?nextPageToken=" & nextPageToken),
// Fetch the current page of data Source = Web.Contents(url, [Query=[jql="project=ProjectName", fields="*all", maxResults="1000"]]),
// Convert the response to JSON Json = Json.Document(Source),
// Get the issues from the current page Issues = Json[issues],
// Recursively fetch the next page if a nextPageToken exists NextPageIssues = if Record.HasFields(Json, "nextPageToken") then @fnGetAllJiraIssuesWithAllFields(jiraDomain, Json[nextPageToken] else {},
// Combine the issues from the current page and all subsequent pages AllIssues = Issues & NextPageIssues in AllIssues |
|
GetIssues:
let JiraDomain = "https://SERVERNAME.atlassian.net", // Replace with your Jira domain Source = fnGetAllJiraIssuesWithAllFields(JiraDomain, null), TableFromList = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Expanded Column1" = Table.ExpandRecordColumn(TableFromList, "Column1", {"expand", "id", "self", "key", "fields"}, {"Column1.expand", "Column1.id", "Column1.self", "Column1.key", "Column1.fields"}) in #"Expanded Column1"
|