使用 ResultSet.getRange 方法
為了使用 getRange 處理大量結果,我們必須考慮以下事項:
- getRange 有 2 個引數: start 和 end 。總是積極的,總是(開始<結束)
- start 是要返回的第一個結果的包含索引
- end 是返回的最後一個結果的唯一索引
- 如果可用結果少於請求的結果,則該陣列將包含少於 end-start 條目。例如,如果只有 25 個搜尋結果,則 getRange(20,30)將返回 5 個 search.Result 物件的陣列。
- 雖然上面的幫助句子沒有直接說明,但是開始和結束都可能超出了可用結果的範圍。在同一個例子中 - 如果只有 25 個搜尋結果,getRange(100,200)將返回一個空陣列[]
- 一次最多 1000 行。 (結束 - 開始)<= 1000
// Assume that 'N/search' module is included as 'search'
// this search will return a lot of results (not having any filters)
var s = search.create({
type: search.Type.TRANSACTION,
columns : ['entity','amount'],
filters: []
});
var resultSet = s.run();
// now take the first portion of data.
var currentRange = resultSet.getRange({
start : 0,
end : 1000
});
var i = 0; // iterator for all search results
var j = 0; // iterator for current result range 0..999
while ( j < currentRange.length ) {
// take the result row
var result = currentRange[j];
// and use it like this....
var transId = result.id;
var entityId = result.getValue('entity');
var entityName = result.getText('entity');
var amount = result.getValue('amount');
// finally:
i++; j++;
if( j==1000 ) { // check if it reaches 1000
j=0; // reset j an reload the next portion
currentRange = resultSet.getRange({
start : i,
end : i+1000
});
}
}
讓我們計算治理。我們有 1 + count / 1000 個 getRange 呼叫,每個呼叫 10 個單位,所以:
G =(1 + count / 1000)* 10
示例:9500 行將佔用 100 個單位