在NetSuite字段值更新脚本中使用什么NScriptType: ServerScript



我希望用算术更新多个记录的数字字段,而不仅仅是用新值覆盖当前值。为此,我计划上传一个包含项目标识符和新添加值的文件。解析文件并使用自定义搜索来查找相应的记录,然后加载、更新和保存适当的记录。然而,如何运行脚本是我感到困惑的地方。

我已经创建了以前的脚本在进入一个项目的编辑视图上运行的load脚本,但我还没有使用任何服务器端脚本(我读到,当从文件柜访问文件时,你必须使用服务器端脚本)。

关于服务器脚本类型和何时使用它们的任何信息将不胜感激。谢谢你。

对于这种事情,Map/Reduce脚本是您最好的选择

您可以传递一个fileId作为参数,并且您的getInputData阶段可以加载并返回文件(它将每一行发送到您的map阶段)。您的映射阶段必须忽略标题(如果存在)和任何尾随的坏行。

我还没有能够很容易地找到一个脚本,我已经写了,但我很确定我已经做到了。通常我会这样处理一个文件到映射阶段:

function getInputData(){ 
try{
var me = runtime.getCurrentScript();

var targetFileId = <number>me.getParameter({name:'custscript_kotn_att_emp_file'});
var targetFile = file.load({id:targetFileId});
log.audit({title: 'getting data', details:targetFile.name +' ' + targetFile.size});
var empLines = [];
targetFile.lines.iterator().each(line=>{
var parts = line.value.split('|');
if(parts.length >2 && parts.length != expectColumns.length){
throw new Error('Unexpected line length. Had '+ parts.length +' expected '+ expectColumns.length);
}
if(parts.length > 2){
empLines.push(parts);
}
return true;
});
log.audit({title: 'got employee lines', details:empLines.length});
return empLines;
}catch(e){
log.error({
title:"in input stage", 
details : (e.message || e.toString()) + (e.getStackTrace ? (' n n' + e.getStackTrace().join(' n')) : '')
});
return null;
}

};
function map(ctx){
const empLine = JSON.parse(ctx.value);
//you have an array of the parsed line
}

最新更新