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 个限制getRange
和 each
方法。
如果搜索有 8500 个结果,则所有 8500 个都将传递给 map
。
function getInputData() {
return search.load(...); // alternatively search.create(...)
}
我目前正在 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 个限制getRange
和 each
方法。
如果搜索有 8500 个结果,则所有 8500 个都将传递给 map
。
function getInputData() {
return search.load(...); // alternatively search.create(...)
}