使用 ResultSet.getRange 方法

為了使用 getRange 處理大量結果,我們必須考慮以下事項:

  1. getRange 有 2 個引數: startend 。總是積極的,總是(開始<結束)
  2. start 是要返回的第一個結果的包含索引
  3. end 是返回的最後一個結果的唯一索引
  4. 如果可用結果少於請求的結果,則該陣列將包含少於 end-start 條目。例如,如果只有 25 個搜尋結果,則 getRange(20,30)將返回 5 個 search.Result 物件的陣列。
  5. 雖然上面的幫助句子沒有直接說明,但是開始結束都可能超出了可用結果的範圍。在同一個例子中 - 如果只有 25 個搜尋結果,getRange(100,200)將返回一個空陣列[]
  6. 一次最多 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 個單位