【问题标题】:Netsuite Transform Invoice to Custom Record Scheduled ScriptNetsuite 将发票转换为自定义记录计划脚本
【发布时间】:2019-11-27 13:52:32
【问题描述】:

我正在尝试创建一个脚本,将发票记录转换为基于Scheduled Script 的自定义记录。 我创建了已保存的搜索,但是在上传 script 时收到错误消息:

无法评估脚本:{"type":"error.SuiteScriptModuleLoaderError","name":"UNEXPECTED_ERROR","message":"missing ) 在参数列表 (SS_SCRIPT_FOR_METADATA#57)","stack":[] 之后}

/**
 *@NApiVersion 2.x
 *@NScriptType ScheduledScript
 */
define(['N/search', 'N/record', 'N/email', 'N/runtime'],

    function(search, record, email, runtime) {
        function execute(context) {
            if (context.type !== context.InvocationType.ON_DEMAND)
                return;
            var searchId = runtime.getCurrentScript().getParameter("custscript_searchid"); //add from script deployment
            try {
                search.load({
                    id: searchId
                }).run().each(function(result) {
                    log.debug({
                        details: 'creating invoice to email record from INV: ' + result.id
                    });
                    var invoiceToEmail = record.transform({
                        fromType: record.Type.INVOICE,
                        fromId: result.id,
                        toType: record.Type.customrecord_invoice_to_email,
                        isDynamic: false
                    });
                    invoiceToEmail.setValue({
                        fieldId: custrecord_email_template,
                        value: //add internal id of email template to use
                    });
                    invoiceToEmail.setValue({
                        fieldId: custrecord_invoice_number,
                        value: result.id
                    });
                    invoiceToEmail.setValue({
                        fieldId: custrecord_script_error,
                        value: //create variable for script error
                    });
                    invoiceToEmail.setValue({
                        fieldId: custrecord_ap_contact_email,
                        value: //populate from result information
                    });
                    invoiceToEmail.save();
                })
            } catch (e) {
                log.error({
                    title: e.name,
                    details: e.message
                });

            }
            return {
                execute: execute
            };
        }
    }

不确定这是否是我做过的事情,它仍在进行中,因为我还没有为设定值定义值。

【问题讨论】:

    标签: netsuite suitescript


    【解决方案1】:

    最后你错过了一个“)”

    define(['N/search', 'N/record', 'N/email', 'N/runtime'],
    
        function (search, record, email, runtime) {
            function execute(context) {
                if (context.type !== context.InvocationType.ON_DEMAND)
                    return;
                var searchId = runtime.getCurrentScript().getParameter("custscript_searchid"); //add from script deployment
                try {
                    search.load({
                        id: searchId
                    }).run().each(function (result) {
                        log.debug({
                            details: 'creating invoice to email record from INV: ' + result.id
                        });
                        var invoiceToEmail = record.transform({
                            fromType: record.Type.INVOICE,
                            fromId: result.id,
                            toType: record.Type.customrecord_invoice_to_email,
                            isDynamic: false
                        });
                        invoiceToEmail.setValue({
                            fieldId: custrecord_email_template,
                            value: //add internal id of email template to use
                        });
                        invoiceToEmail.setValue({
                            fieldId: custrecord_invoice_number,
                            value: result.id
                        });
                        invoiceToEmail.setValue({
                            fieldId: custrecord_script_error,
                            value: //create variable for script error
                        });
                        invoiceToEmail.setValue({
                            fieldId: custrecord_ap_contact_email,
                            value: //populate from result information
                        });
                        invoiceToEmail.save();
                    })
                } catch (e) {
                    log.error({
                        title: e.name,
                        details: e.message
                    });
    
                }
                return {
                    execute: execute
                };
            }
        }
    )

    【讨论】:

      【解决方案2】:

      您的脚本中存在语法错误,无论是顶级脚本本身还是包含的模块之一。修复语法错误,您的脚本将成功上传。

      在 WebStorm 等优秀的 IDE 中开发您的代码,该 IDE 可以突出显示 JavaScript 语法错误以避免此类问题。

      【讨论】:

      • 谢谢 Eric,我现在就下载。你更喜欢 webstorm 还是 eclipse?
      • 我个人是这样做的,是的,但我始终提倡使用你所知道的和你最有效率的东西。Eclipse 和 WebStorm 都已正式支持 NetSuite 插件,尽管我相信 Eclipse 支持即将结束。
      【解决方案3】:

      您需要为三个字段输入值。参考下面代码中的问题(????)标记。:

        });
                      var invoiceToEmail = record.transform({
                          fromType: record.Type.INVOICE,
                          fromId: result.id,
                          toType: record.Type.customrecord_invoice_to_email,
                          isDynamic: false
                      });
                      invoiceToEmail.setValue({
                          fieldId: custrecord_email_template,
                          value: **????**//add internal id of email template to use
                      });
                      invoiceToEmail.setValue({
                          fieldId: custrecord_invoice_number,
                          value: result.id
                      });
                      invoiceToEmail.setValue({
                          fieldId: custrecord_script_error,
                          value: **????** //create variable for script error
                      });
                      invoiceToEmail.setValue({
                          fieldId: custrecord_ap_contact_email,
                          value: **????** //populate from result information
                      });
                      invoiceToEmail.save();
      

      【讨论】:

      • 谢谢 Sid,我刚刚在上传到 Stack Overflow 之前删除了这些内容,但我会将它们包含在套件脚本上传中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多