我正在尝试弄清楚如何更新群组保存搜索的过滤器。
我从通用保存的搜索中保存过滤器:
var searchGen = search.load({
id: 'customsearch_ca_export_detail_search__38'
});
var filter = searchGen.filters;
然后我使用循环将过滤器插入搜索:
for (var i = 0; i<selectedMarkets.length; i++){
var selectedSearchId = marketplaces[selectedMarkets[i]].searchId;
var searchObj = search.load({id:selectedSearchId});
var filters = searchObj.filters;
filters = filter;
searchObj.save();
}
我的所有变量都包含正确的信息。但是将通用保存搜索中的数据推送到我想要更新的搜索不起作用:
filters = filter;
任何帮助?
答案 0 :(得分:2)
尝试解构过滤器并将其重建为:
for (var i in selectedMarkets){
var selectedSearchId = marketplaces[selectedMarkets[i]].searchId;
var searchObj = SEARCHMODULE.load({id:selectedSearchId});
var oldFilters = searchObj.filters;
var newFilters = [];
for (var k in oldFilters) {
var oldFilter = oldFilters[k];
var filter = {};
filter.name = oldFilter.name;
filter.operator = oldFilter.operator;
filter.values = oldFilter.values;
filter.join = oldFilter.join;
if (typeof(oldFilter.formula) !== 'undefined'){
filter.formula = oldFilter.formula;
}
newFilters.push(SEARCHMODULE.createFilter(filter));
}
searchObj.filters = newFilters;
searchObj.save();
}
注意:您需要调整代码以适用于摘要过滤器。
答案 1 :(得分:0)
超级关闭,尝试:
searchObj.filters = filter;
searchObj.save();
如上所述,您只是将'local'变量 filters
设置为过滤,而不是实际的搜索对象参数。
这是一个非常可怕的答案,建议极端谨慎,但如果您真的需要在SS2中执行此操作,则可能适用于您的目的。您可以重新创建整个搜索,删除原始,并保存重新创建的搜索:
var searchObj = search.load({
id: 'customsearch_test'
});
log.debug('first search', searchObj.filterExpression);
var otherSearch = search.load({
id: 'customsearch_test_2'
});
log.debug('second search', otherSearch.filterExpression);
var newSearch = search.create({
type: otherSearch.searchType,
filters: searchObj.filters, //everything is unchanged but the filters
columns: otherSearch.columns,
title: otherSearch.title || "testy test", //apparently the title doesn't come through in search.load()?!?
id: otherSearch.id,
isPublic: otherSearch.isPublic
});
search.delete({
id: 'customsearch_test_2'
});
var id = newSearch.save();
log.debug('result', id);
var otherSearchAgain = search.load({
id: 'customsearch_test_2'
});
log.debug('second search, after save', otherSearchAgain.filterExpression);
答案 2 :(得分:0)
所以我花了几个星期来回与NetSuite代表进行交流,他们已经确认search.save()
存在一个阻止此工作的错误。
他们现在已经提出了一个缺陷。对于其他感兴趣的人来说,仅供参考。