This should get past both jira's 1000 issue limit and importxml's limit. The only limitation is script runtime which is 5 minutes. Have imported up to 1500 issues with no problem.
function parseXml(searchNumber) { var searchURL = 'https://jira.wherever.com/sr/jira.issueviews:searchrequest-xml/' + searchNumber + '/SearchRequest-' + searchNumber + '.xml?tempMax=500&os_username=username&os_password=password'; var xml = UrlFetchApp.fetch(searchURL).getContentText(); var document = XmlService.parse(xml); // get total var total = document.getContent(2).getChild("channel").getChild("issue").getAttribute("total").getValue(); var pages = Math.ceil(total/500); var sheetData = new Array(); //loop through pages for (var i = 0; i < pages; i++) { var pageURL = searchURL + '&pager/start=' + i * 500; var xml = UrlFetchApp.fetch(pageURL).getContentText(); var document = XmlService.parse(xml); var items = document.getContent(2).getChild("channel").getChildren("item"); var xmlElementNames = [ "title", "link", "project", "description", "key", "summary", "type", "priority", "status", "resolution", "assignee", "reporter", "created", "updated", "fixVersion", "timeoriginalestimate", "timeestimate", "comments", "Sprint" ] sheetData.push(xmlElementNames); for (var j = 0; j < items.length; j++) { var rowData = []; for (var k = 0; k < xmlElementNames.length; k++) { var itemElement = items[j].getChild(xmlElementNames[k]); if( itemElement ) { rowData.push(itemElement.getText()); } else { // check the customfields var customfields = items[j].getChild("customfields").getChildren("customfield"); var customfieldfound = false; for (var l = 0; l < customfields.length; l++) { if( customfields[l].getChild("customfieldname").getValue() == xmlElementNames[k] ) { rowData.push(customfields[l].getChild("customfieldvalues").getChild("customfieldvalue").getText()); customfieldfound = true; } } if( customfieldfound == false ) { rowData.push(""); } } } sheetData.push( rowData ); //Logger.log(items[j].getChild("title").getText()); } } var sheet = SpreadsheetApp.getActiveSheet(); sheet.clear(); var sheetRange = sheet.getRange(1, 1, sheetData.length, sheetData[0].length ); sheetRange.setValues(sheetData); }