SuiteScript 2.0:使用复选框参数重新安排预定脚本

SuiteScript 2.0: Rescheduling a Scheduled Script With Checkbox Parameter

我有一个预定的脚本可以做两件事。我有复选框参数来确定脚本的 运行 是否需要这些东西。第一次左右都默认为 true。

function execute(scriptContext) {
    var script = runtime.getCurrentScript();
    doTask1 = script.getParameter({name: "custscript_tmh_do_task1"});
    doTask2 = script.getParameter({name: "custscript_tmh_do_task2"});

    if(doTask1){
        //Do something
    }
    if(doTask2){
        //Do something
    }

    //Determine if task1 or task2 needs to happen and set them to true or false.

    //Reschedule script if required
    if(doTask1 || doTask2){
    var scheduledScriptTask = task.create({
        taskType: task.TaskType.SCHEDULED_SCRIPT
    });
    scheduledScriptTask.scriptId = runtime.getCurrentScript().id;
    scheduledScriptTask.deploymentId = runtime.getCurrentScript().deploymentId;
    scheduledScriptTask.params = {'custscript_tmh_do_task1': doTask1 ,
                                    'custscript_tmh_do_task2': doTask2 };
    return scheduledScriptTask.submit();
    }
}

问题是第二次出现,当布尔值设置为 true 时它没有执行任务。它只是跳过它们。我已经使用调试器在重新安排脚本时确认布尔值是真的。

问题:如何通过设置布尔值来重新安排预定的脚本。

附带问题 我将参数创建为脚本参数。是否可以在不在 NetSuite 中设置脚本参数的情况下执行此操作?

这不是生成任务的正确构造函数。我总是使用:

var scheduledScriptTask = task.create({
    taskType: task.TaskType.SCHEDULED_SCRIPT,
    scriptId: runtime.getCurrentScript().id,
    deploymentId: runtime.getCurrentScript().deploymentId,
    params: {'custscript_tmh_do_task1': doTask1 ,
             'custscript_tmh_do_task2': doTask2 }
});

此外,脚本参数以字符串形式传递,因此您需要进行转换。

任一:

doTask1 = 'T' == script.getParameter({name: "custscript_tmh_do_task1"});

doTask1 = script.getParameter({name: "custscript_tmh_do_task1"});
...
if('T' == doTask1){ ...

在使用它们时进行检查 ('T' == doTask1) 让您可以将字符串值往返到下一次迭代中。如果您将它们用作布尔值,以便您可以决定下一次迭代是否需要执行这两个任务,那么当您将它们传递给下一次迭代时,您需要将它们转回字符串:custscript_tmh_do_task1 : doTask1 ? 'T' : 'F'

您无需为参数提供默认值即可将它们传递给下一次迭代。您在 task.create 方法中提供的任何值都将覆盖配置的值。