ネットスイートの保存検索を使って、
データベースに存在するレコードのリストを返り値となる。
しかし、このリストサイズが10,000件以上の場合、操作制限にかかる。
じゃ、どうする?
salesforceなら、バッチクラスがある、10,000以上のレコードを数回に分けて実行できる。
ネットスイートはどうなる?
今回、これについて共有する。
それでは、Suitletスクリプトで保存検索を呼び出す例を出します。
function getItems(recordType, searchId) { var savedSearch = nlapiLoadSearch(recordType, searchId); var resultset = savedSearch.runSearch(); var returnSearchResults = []; var searchid = 0; do { var resultslice = resultset.getResults(searchid, searchid + 1000); for ( var rs in resultslice) { returnSearchResults.push(resultslice[rs]); searchid++; } } while (resultslice.length >= 1000){ return returnSearchResults; }
今回、オススメの技術を下記の例で説明する。
var returnSearchResults = new Array(); var search = nlapiLoadSearch('record_type', 'savedsearch_id'); var searchresults = search.runSearch(); var resultIndex = 0; var resultStep = 1000; var resultSet; do { // 毎回のインデックス区間設定(1000/回) resultSet = searchresults.getResults(resultIndex, resultIndex + resultStep); // インデックスの増分 resultIndex = resultIndex + resultStep; returnSearchResults //for(var i = 0; !!resultSet && i < resultSet.length; i++){ // loop through the search results // Your code goes here to work on a the current resultSet (upto 1000 records per pass) //} } while (resultSet.length > 0)