SuiteScript 2.0:通过 map/reduce 脚本的 "getInputData" 阶段执行保存的搜索时是否有任何搜索结果限制?

SuiteScript 2.0: Are there any search result limitations when executing a saved search via "getInputData" stage of map/reduce script?

我目前正在 NetSuite 中构建一个 map/reduce 脚本,它将保存的搜索结果从 getInputData 阶段传递到地图阶段。这是通过首先 运行 在 getInputData 阶段执行一个 WHILE 循环以获取每个条目的内部 ID,插入数组,然后传递到 map 阶段来完成的。像这样:

           // run saved search - unlimited rows from saved search.
        do {
            var subresults = invoiceSearch.run().getRange({  start: start,  end: start + pageSize  });
            results = results.concat(subresults);
            count = subresults.length;
            start += pageSize + 1;
        } while (count == pageSize);
        
        var invSearchArray = [];
        
        if(invoiceSearch){
            //NOTE: .run().each has a limit of 4,000 results, hence the do-while loop above.
            for (var i = 0; i < results.length; i++){ 
                var invObj = new Object();
                invObj['invID'] = results[i].getValue({name: 'internalid'}); 
                invSearchArray.push(invObj);
            }
        }

        return invSearchArray;

我这样实现是因为我担心会有结果限制,就像“.运行().each”函数一样(限制为 4000 个结果)。

我假设将搜索对象直接从 getInputData 传递到 Map 也会限制 4000 个结果。有人可以澄清是否存在此类限制吗?我是否担心脚本会过早停止,因为在 map/reduce 脚本的 getInputData 阶段无法处理超过 4000 的搜索结果?

如果有任何示例可以帮助我理解如何在 map/reduce 脚本中处理搜索对象,我们将不胜感激。

谢谢

如果您只是 return Search 实例, 所有 结果将传递给 map,超过 1000 或 4000 个限制getRangeeach 方法。

如果搜索有 8500 个结果,则所有 8500 个都将传递给 map

function getInputData() {
  return search.load(...); // alternatively search.create(...)
}