使用 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])
});