下午好。
我正在尝试使用User Event脚本来调用或使用Map Reduce脚本。我对Map Reduce脚本的概念很陌生,并且没有太多运气找到资源。基本上,我想要做的是调用Map Reduce脚本来查找具有相同项目名称的打开事务,并将该项目上的Class设置为User设置的新项目。 Map Reduce脚本需要来自当前记录的Item Name和Class。
这是我的用户活动:
/**
* @NApiVersion 2.0
* @NScriptType UserEventScript
*/
define(['N/record', 'N/log'],
function (record, log) {
function setFieldInRecord (scriptContext) {
log.debug({
'title': 'TESTING',
'details': 'WE ARE IN THE FUNCTION!'
});
if (scriptContext.type === scriptContext.UserEventType.EDIT) {
var old_Record = scriptContext.oldRecord;
var cur_Record = scriptContext.newRecord;
var oldClassId = old_Record.getValue({ fieldId: 'class'});
var curClassId = cur_Record.getValue({ fieldId: 'class'});
if ( oldClassId != curClassId ) {
// CALL MAP REDUCE HERE
}
}
}
return {
beforeSubmit: setFieldInRecord
};
}
);
Map Reduce Script是一个单独的文件还是嵌入在User Event脚本中?如果我知道如何从用户事件中调用它,我想我可以让Map Reduce工作。我对这个问题的任何意见表示感谢。谢谢!
答案 0 :(得分:1)
以下是我们处理这种情况的方法。
我们确保将'N/task'
添加到上述用户事件代码中的define
语句中。然后,在满足条件的用户事件中,为了调用Map / Reduce Script,我们这样做了:
var scriptTask = task.create({
taskType: task.TaskType.MAP_REDUCE
});
scriptTask.scriptId = 'customscript_id';
scriptTask.deploymentId = 'customdeploy_id';
var scriptTaskId = scriptTask.submit();
这成功地从用户事件中调用了Map Reduce脚本。
我希望将来可以帮助某人。
谢谢。