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

How to Reschedule the Schedule Script in Netsuite using SuiteScript 2.0 version

我想重新安排调度脚本,当调度脚本的使用量在达到调控器限制之前。 Netsuite 中的调度脚本有 10,000 个单元。 在SuiteScript 1.0版本中,重新调度是通过"nlapiScheduleScript() api "实现的,但在SuiteScript 2.0版本中如何重新调度脚本。

帮助我实现这一目标,在此先感谢。

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
    };
});

似乎 scheduledScriptTask.submit() 正在返回 null。

var taskId = rescheduleCurrentScript();

taskId 以上 returns 记录时为空。 是否可能是 NetSuite 方面的错误?

接受的答案对偶尔的收益有好处。除此之外,如果您知道自己将经常违反治理限制,您可能需要考虑使用 Map/Reduce script,因为它内置了 yielding/resuming。