使用 suitescript 2.0 通过列索引获取保存的搜索结果
Get saved search result through column index using suitescript 2.0
我正在使用 Map/Reduce 脚本加载“getInputData”函数中保存的搜索。我的客户希望保存的搜索是动态的,这意味着他将根据他们的需要创建保存的搜索,因此保存的搜索结果列会发生变化。在那种情况下,我需要在“地图”阶段提取第一列索引而不是列名。但它不适合我。下面是我试过的脚本。
function getInputData() {
var dsParam = runtime.getCurrentScript();
var searchParam = dsParam .getParameter({name: 'custscript_myck_gen'});
var dsSearch = search.load({
id: searchParam
});
return dsSearch;
}
function map(context) {
var searchResults = JSON.parse(context.value);
var value = searchResults.getValue(searchResults.columns[0]);
}
但没有任何效果。所以任何人都可以通过列索引帮助获取字段值。提前致谢。
你不能那样做。结果中没有索引。 JSON stringify|parse 的结果是每一行看起来像:
{
recordType:'recordtype',
id: recordId,
values:{
listRecordColumnName : {value:number, text:"text"},
simpleColumName : text
}
}
在开发过程中记录 context.value 是一个很好的做法,这样您就可以准确地看到您正在处理的内容。
log.debug({
title: 'Map',
details: JSON.stringify(context.value)
});
var result = JSON.parse(context.value);
var firstColumn = Object.keys(result.values)[0];
log.debug({
title: firstColumn,
details: JSON.stringify(result.values[firstColumn])
});
我正在使用 Map/Reduce 脚本加载“getInputData”函数中保存的搜索。我的客户希望保存的搜索是动态的,这意味着他将根据他们的需要创建保存的搜索,因此保存的搜索结果列会发生变化。在那种情况下,我需要在“地图”阶段提取第一列索引而不是列名。但它不适合我。下面是我试过的脚本。
function getInputData() {
var dsParam = runtime.getCurrentScript();
var searchParam = dsParam .getParameter({name: 'custscript_myck_gen'});
var dsSearch = search.load({
id: searchParam
});
return dsSearch;
}
function map(context) {
var searchResults = JSON.parse(context.value);
var value = searchResults.getValue(searchResults.columns[0]);
}
但没有任何效果。所以任何人都可以通过列索引帮助获取字段值。提前致谢。
你不能那样做。结果中没有索引。 JSON stringify|parse 的结果是每一行看起来像:
{
recordType:'recordtype',
id: recordId,
values:{
listRecordColumnName : {value:number, text:"text"},
simpleColumName : text
}
}
在开发过程中记录 context.value 是一个很好的做法,这样您就可以准确地看到您正在处理的内容。
log.debug({
title: 'Map',
details: JSON.stringify(context.value)
});
var result = JSON.parse(context.value);
var firstColumn = Object.keys(result.values)[0];
log.debug({
title: firstColumn,
details: JSON.stringify(result.values[firstColumn])
});