如何使用SuiteScript 2.0版本在Netsuite中重新安排计划脚本

时间:2016-07-21 04:41:13

标签: javascript scheduled-tasks netsuite suitescript

我希望重新安排日程安排脚本,当调度脚本使用到达调控器限制之前。 Netsuite中的计划脚本有10,000个单位。 在SuiteScript 1.0版本中,重新安排是由" nlapiScheduleScript()api"但在SuiteScript 2.0版本中如何重新安排脚本。

帮助我实现这一目标,提前谢谢。

3 个答案:

答案 0 :(得分:10)

N/taskN/runtime模块具有您正在寻找的内容。您将使用N/task进行重新安排,并使用N/runtime获取当前的脚本信息。

如果没有您的确切代码,我无法提供一个非常具体的示例,但您的预定脚本最终会看起来像:

/**
 * @NApiVersion 2.x
 * @NScriptType ScheduledScript
 */
define(['N/task', 'N/runtime'], function(task, runtime) {

    /**
     * Reschedules the current script and returns the ID of the reschedule task
     */
    function rescheduleCurrentScript() {
        var scheduledScriptTask = task.create({
            taskType: task.TaskType.SCHEDULED_SCRIPT
        });
        scheduledScriptTask.scriptId = runtime.getCurrentScript().id;
        scheduledScriptTask.deploymentId = runtime.getCurrentScript().deploymentId;
        return scheduledScriptTask.submit();
    }

    function execute(context) {

        // Do stuff...

        while(...) {
            // Do processing in loop

            // Check remaining usage and reschedule if necessary
            if (runtime.getCurrentScript().getRemainingUsage() < 100) {
                var taskId = rescheduleCurrentScript();
                log.audit("Rescheduling status: " + task.checkStatus(taskId));
                return;
            }
        }
    }

    return {
        execute: execute
    };
});

答案 1 :(得分:0)

似乎scheduledScriptTask.submit()返回null。

var taskId = rescheduleCurrentScript();

上面的taskId在记录时返回null。 它可能是NetSuite方面的一个错误吗?

答案 2 :(得分:0)

可接受的答案对偶尔的收益很有帮助。除此之外,如果您知道自己将经常违反治理限制,则可能要考虑使用Map/Reduce script,因为它内置了屈服/恢复功能。