我正在尝试获取有关已保存搜索的信息,例如已保存搜索中有多少列及其信息。 我已经保存了搜索ID,当我通过代码使用Netsuite服务进行搜索时,我可以在recordList对象中获取数据,但是列表中的每个项目(行)都有许多静态字段,这些字段为null,因此在保存的搜索中不使用在此行对象中仅设置具有任何值的字段。
是否可以通过C#.Net中的SuiteTalk Web服务获取netsuite中已保存搜索的列标题信息?
答案 0 :(得分:0)
首先,我不认为我们可以从Suite Analytics Connect访问SavedSearches,因为它的数据源是Connect Browser,而不是Record Browser。
已保存的搜索是基于记录浏览器创建的!如果这样将来可能会增加一些价值。
请参考我在这里遇到的问题之一:Find the tables and fields in a saved search for Records Browser Item
我尝试使用Connect,但是它不起作用。
答案 1 :(得分:0)
可以使用SuiteTalk库和RestletsService API。它返回您可以解析的JSON数据。确保已创建一个Restlet,以在NetSuite脚本端运行保存的搜索并将结果返回json。
此注释也很有用:
一次最多只能返回4000个搜索结果
nlobjSearchResultSet.forEachResult(callback)
。请修改您的 搜索条件或修改回调逻辑,以便不超过4000 结果返回。
.Net端
RestletsService api = AppSettings.BuildRestletsService;
string json = api.CallRestlet({RESTLET_ID_THAT_RUNS_SAVED_SEARCHES}, {DEPLOY #}, {SAVED_SEARCH_ID});
JArray resultsArray = JArray.Parse(json);
脚本端
function get_search_data(datain)
{
var results = [];
var savedsearch = nlapiLoadSearch(null, datain.savedsearchid);
var resultset = savedsearch.runSearch();
var searchid = 0;
do {
var resultslice = resultset.getResults( searchid, searchid+1000 );
for (var rs in resultslice) {
results.push( resultslice[rs] );
searchid++;
}
} while (resultslice.length >= 1000);
return results;
}