如何在 Netsuite 'N/search Module' 中使用 for 循环获取第一组千条记录和下一组千条记录

How get fist set of thousand records and next set of thousand records using for loop in Netsuite 'N/search Module'

我想处理从搜索结果中获得的搜索结果中的第一组千条记录,然后处理下一组千条记录。

我正在使用 suitescript 2.0 版本'N/search'模块的方法 (getRange(0,1000)).

代码:

var mySearch = search.load({
id: 'customsearch_employee'
});
var searchResult = mySearch.run().getRange(0, 100);
for (var i = 0; i < searchResult.length; i++) {
var entity = searchResult[i].getValue({
name: 'entity'
});
});

我想知道如何使用 for 循环处理下一组千条记录。 提前致谢

您应该可以使用以下方法获得下一个范围:

var searchResult = mySearch.run().getRange(1000, 2000);

在一个循环中,您可以检查长度并获得所有结果:

var searchResult = mySearch.run().getRange(0, 1000) || []; 
var i = 1000;
while(searchResult.length >= 1000){
i+= 1000;
searchResult = searchResult.concat((mySearch.run().getRange(i, i+1000) || []));
}

SuiteScript 2.0 为您提供分页API。我会先解释一下,然后再举个例子。

在您创建搜索对象 mySearch 之后,您调用 runPaged() 而不是调用 run() 来 运行 分页搜索,它有一个可选的 pageSize 参数允许您指定每页有多少结果。默认值为 50.

runPaged returns 一个 PagedData 对象,在其 pageRanges 属性 中包含结果页面列表。实际上,您通过在页面上调用 fetch 来检索每个页面上的结果。

此示例直接取自 N/search 的帮助页面,但我添加了一些解释性注释。

/**
 *@NApiVersion 2.x
 */
require(['N/search'], function(search) {
    function loadAndRunSearch() {
        // Load your search into memory
        var mySearch = search.load({
            id: 'customsearch_my_so_search'
        });

        // Run paged version of search with 1000 results per page
        var myPagedData = mySearch.runPaged({
            "pageSize": 1000
        });

        // Iterate over each page
        myPagedData.pageRanges.forEach(function(pageRange){

            // Fetch the results on the current page
            var myPage = myPagedData.fetch({index: pageRange.index});

            // Iterate over the list of results on the current page
            myPage.data.forEach(function(result){

                // Process the individual result
                var entity = result.getValue({
                    name: 'entity'
                });
                var subsidiary = result.getValue({
                    name: 'subsidiary'
                });
            });
        });
    }
    loadAndRunSearch();
});