【问题标题】:Email template netsuite电子邮件模板网络套件
【发布时间】:2017-01-17 21:56:25
【问题描述】:

我有一个非常大的问题,我的意思是我在一家公司工作,我们使用 NetSuite 作为我们的业务平台,现在他们用新的 API 更新了我们的帐户。

我之前的开发者写了这段代码

for(var k = 0; k < ResultsPPCI.length; k++){

    EmployeePPCI = ResultsPPCI[k].getValue('internalid'); //get the value
    // log('Internal ID', EmployeePPCI);

    // Merge, send, and associate an email with Purchase Order record (id=1000)
    var mergeValuesPPCI = {};
    mergeValuesPPCI.NLEMPFIRST = nlapiLookupField('employee', EmployeePPCI, 'firstname');
    mergeValuesPPCI.NLEMPLAST = nlapiLookupField('employee', EmployeePPCI, 'lastname');
    mergeValuesPPCI.NLSUPPLIER = nlapiLookupField('customer', cust, 'companyname');
    mergeValuesPPCI.NLPRODUCTCODE = productcodehtml;

    var emailBodyPPCI = nlapiMergeRecord(65, 'purchaseorder', poID, null, null, mergeValuesPPCI);
    var recordsPPCI = {};
    recordsPPCI['transaction'] = poID;

    nlapiSendEmail(EmployeePPCI, EmployeePPCI, emailBodyPPCI.getName(), emailBodyPPCI.getValue(), null, null, recordsPPCI);
    // log('EmployeePPCI',EmployeePPCI);
    nlapiLogExecution('AUDIT', 'Potentional Problem', 'Email Sent');
}

我现在有问题,因为 nlapiMergeRecord 已被弃用,它不会工作。但我真的无法在网上找到任何工作示例......这里最重要的部分实际上是必须发送的这封电子邮件的正文。在这种情况下,它是 productcodehtmlmergeValuesPPCI.NLPRODUCTCODE

这就是我的模板的样子:

<p>The QA Release has been submitted by <nlsupplier> for ${transaction.tranId}.</nlsupplier></p>

<p>The following item(s) have a short shelf life:</p>
<nlproductcode></nlproductcode>

请您帮我将此代码转换为新方法吗?如何将模板中的nlproductcode 与我的代码中的mergeValuesPPCI.NLPRODUCTCOD 连接起来?

提前致谢!

【问题讨论】:

    标签: netsuite


    【解决方案1】:

    您可以使用新的nlapiCreateEmailMerger(templateId)

    首先您需要在 netsuite 中创建您的电子邮件模板并获取内部 ID。 那么:

    1. 使用 nlapiCreateEmailMerger(templateId) 创建一个 nlobjEmailMerger 对象。

      var emailMerger = nlapiCreateEmailMerger(templateId);

    2. 使用 nlobjEmailMerger.merge() 方法执行邮件合并。

      var mergeResult = emailMerger.merge();

    3. 使用 nlobjMergeResult 方法以字符串格式获取电子邮件分发的主题和正文。

      var emailBody = mergeResult.getBody();

    4. 发送您的电子邮件

      nlapiSendEmail(senderInternalId, 'receiver@email.com','subject',emailBody, null, null, null);

    祝你好运!

    【讨论】:

      【解决方案2】:

      您可以使用 kotnMergeTemplate 作为 nlapiMergeRecord 的替代品

      例如:

      kotnMergeTemplate(65, 'purchaseorder', poID, null, null, mergeValuesPPCI);
      

      nlobjEmailMerger 不采用自定义值,因此您必须发布处理结果。您可以再次查看我的脚本中的示例,您将在其中获取合并的字符串,然后运行:

              var oldCustFieldPatt = /<(nl[^ >]+)>(\s*<\/\1>)?/ig;
              content = content.replace(oldCustFieldPatt, function(a,m){
                  return mergeValuesPPCI[m.toUpperCase()] || mergeValuesPPCI[m.toLowerCase()] || '';
              });
      

      【讨论】:

      • 有什么原生方式吗?不使用第三部分库?
      • 该库是开源的,是您解决问题的最快方法。否则请查看 nlapiCreateEmailMerger 或 nlapiCreateTemplateRenderer
      • 如何使用这个 kotnMergeTemplate?如何将它添加到我的脚本中?
      • 下载它并将其添加到您的 SuiteScripts 文件夹中。然后在您的脚本定义中将其添加为库。然后在您的脚本文件中将 nlapiMergeRecord 的实例更改为 kotnMergeTemplate
      • 你能解释一下我如何将这个对象mergeValuesPPCI 从我的代码转换为记录,以便我可以将它加载到模板上吗?我现在使用nlapiCreateEmailMerger...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-18
      • 2013-08-12
      • 2021-09-12
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多