netsuite - SuiteScript 2.0:使用复选框参数重新安排预定脚本
问题描述
我有一个预定的脚本,它做两件事。我有复选框参数来确定脚本运行是否需要这些东西。第一次两者都默认为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 方法中提供的任何值都将覆盖配置的值。
推荐阅读
- javascript - 创建和选择
- 动态列出元素
- string - 在 Rust 的命令调用中使用 PathBuf 的最佳方法是什么?
- symfony - 在 Akeneo EventListener 中标准化对象
- c# - NuGet 恢复在 Docker 容器内停止工作
- r - 来自 R 中的 lm 或 glm 函数的自动单面 90% CI
- javascript - 中小企业答案变体不起作用 discord.js
- java - 如何通过 Spring Boot 和 Angular 9 下载 xls 文件
- css - React:如何在 Styled-Components 上为依赖于父级的子元素设置样式
- angular - 在Angular超时之前刷新令牌
- security - Office 365 - 当有新设备登录或多次登录失败时发送警报通知