The iterateSavedSearch function processes a NetSuite saved search object (searchObj) to fetch and return all the search results in an array. It handles large datasets by using pagination to efficiently retrieve data in batches.
Purpose: The function retrieves and consolidates results from a saved search, even when the search returns more than 1000 results, by iterating over paginated data.
searchObj: The saved search object to be executed.
response: An array used to store the consolidated search results.
searchPageRanges: represents the paginated results of the saved search, enabling efficient retrieval of large datasets.
pageRangeLength: The total number of pages available in the search.
Functionality:
1. Runs the search in paginated mode with a page size of 1000.
Iterates through each page (pageIndex) and fetches its results using fetch.
Appends each result to the response array.
Returns the consolidated array of results. If an error occurs, it logs the issue and returns an empty array.
function iterateSavedSearch(searchObj) { //Iterate in the search object
try {
var response = [];
var searchPageRanges;
try {
searchPageRanges = searchObj.runPaged({
pageSize: 1000
});
} catch (err) {
console.log('e@iterateSavedSearch', err)
return [];
}
if (searchPageRanges.pageRanges.length < 1)
return [];
var pageRangeLength = searchPageRanges.pageRanges.length;
console.log('pageRangeLength', pageRangeLength);
for (var pageIndex = 0; pageIndex < pageRangeLength; pageIndex++)
searchPageRanges.fetch({
index: pageIndex
}).data.forEach(function (result) {
response.push(result);
});
return response;
} catch (e) {
console.log('error@searchObj', e)
}
}