You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetSuite SS2.0中如何将参数从Suitelet传递到Scheduled Script?

NetSuite SS2.0 中Suitelet向Scheduled Script传递自定义参数为null的问题

我在NetSuite SS2.0里尝试把自定义参数从Suitelet传到Scheduled Script,但传递的参数一直是null。Suitelet里解析客户端传来的数据时,日志显示数据是正确的,但从Suitelet传到Scheduled Script的环节出了问题。

我试过两种获取参数的写法:

var WOObjId = runtime.getCurrentScript().getParameter({name: 'custparam_wo_record'});
var WOObjId = context.request.parameters.custparam_wo_record;

Scheduled Script 代码

define(['N/record', 'N/redirect', 'N/ui/serverWidget', 'N/task', 'N/error', 'N/file', 'N/render', 'N/runtime', 'N/search', 'N/config'],

(record, redirect, serverWidget, task, error, file, render, runtime, search, config) => {

    /**
     * Defines the Scheduled script trigger point.
     * @param {Object} scriptContext
     * @param {string} scriptContext.type - Script execution context. Use values from the scriptContext.InvocationType enum.
     * @since 2015.2
     */
    const execute = (context) => {
                    try{
                        //Get XML File information
                            log.debug('Request Received');
                            var WOObjId = runtime.getCurrentScript().getParameter({name: 'custparam_wo_record'});
                            log.debug('object received', WOObjId)
                        //var WOObjId = [9073,9059]
                            var WOObjLength = WOObjId.length;
                            log.debug('WOObjId', WOObjId + ' length is '+ WOObjLength );

Suitelet 代码

(task) => {
    /**
     * Defines the Suitelet script trigger point.
     * @param {Object} scriptContext
     * @param {ServerRequest} scriptContext.request - Incoming request
     * @param {ServerResponse} scriptContext.response - Suitelet response
     * @since 2015.2
     */
    const onRequest = (context) => {
        var WOObjId = context.request.parameters.custparam_wo_record;
        log.debug('Inside Suitelet Call received', 'WO Params: ' + WOObjId);
        executeScheduled(WOObjId);
    }

    function executeScheduled(param) {
        var scriptTask = task.create({
            taskType: task.TaskType.SCHEDULED_SCRIPT,
            scriptId: "customscript_ns_ss_printwo_batchschprint",
            deploymentId: "customdeploy_ns_ss_printwo_batchschprint",
            params: {
                'custparam_wo_record' : param
            }
        });

        var scriptTaskId = scriptTask.submit();

        log.debug("scriptTaskId", scriptTaskId);
    }

    return {onRequest}

});

排查与解决方法

  • 确认脚本部署的参数配置
    检查Scheduled Script的部署记录,在「参数」标签页中确认已添加custparam_wo_record,并勾选「允许脚本设置值」。未添加的参数无法接收动态传递的值。

  • 严格匹配参数名称
    NetSuite自定义参数名称区分大小写,确保Suitelet中传入的'custparam_wo_record'与Scheduled Script中获取的参数名称拼写、大小写完全一致。

  • 处理参数类型限制
    NetSuite任务参数仅支持字符串类型,若传递的是数组(如示例中注释的[9073,9059]),需在Suitelet中转成字符串:

    params: {
        'custparam_wo_record' : param.join(',')
    }
    

    再在Scheduled Script中还原:

    var WOObjId = context.request.parameters.custparam_wo_record.split(',').map(Number);
    
  • 改用scriptContext获取参数
    Scheduled Script中动态传递的参数,推荐通过scriptContext.request.parameters获取,而非runtime.getCurrentScript().getParameter(后者更适合静态预设参数):

    var WOObjId = context.request.parameters.custparam_wo_record;
    
  • 校验脚本部署状态与ID
    确保Scheduled Script部署处于「已启用」状态,且Suitelet中填写的scriptId、deploymentId与部署记录完全匹配,无拼写错误。

内容的提问来源于stack exchange,提问作者Saahir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:15:49