【问题标题】:Condition Issue NetSuite Email Merge from SuiteScript With Template Using Freemarker条件问题 NetSuite 电子邮件从 SuiteScript 与使用 Freemarker 的模板合并
【发布时间】:2019-05-15 04:03:34
【问题描述】:

我正在开发一些发送通知电子邮件的功能。可能有也可能没有指定的联系人。所以当我最初设置邮件合并时,这就是我正在做的事情:

var template = nlapiCreateEmailMerger(_TEMPLATE_ID);
template.setEntity("customer", customerId);
if (!isEmpty(contactID)) {
    template.setEntity("contact", contactID);
}

因为可能有也可能没有指定联系人,所以在我的电子邮件模板中,我使用了 Freemarker 来检查是否有联系人。如果是这样,它会添加他们的名字和姓氏。如果没有,它会从客户记录中添加“公司名称”值。这就是我所拥有的:

<#if contact.id?has_content>${contact.firstName} ${contact.lastName}<#else>${customer.companyName}</#if>

我遇到的问题是,当添加联系人时,它会很好地显示联系人姓名。但是,如果没有添加联系人,则条件语句完全失败。即使“公司名称”有值,也没有任何显示。我尝试了以下方法,但条件语句始终解析为 false:

<#if contact?has_content>${contact.firstName} ${contact.lastName}<#else>${customer.companyName}</#if>

我试过看看发生了什么,如果我将所有值放在条件语句之外,我会在我期望的时候得到值,在我期望的时候得到空格。所以我知道数据本身没有问题,据我所知。

我知道我可以通过创建两个单独的模板并在脚本中选择正确的模板来解决这个问题,但是当必须进行更改时这会变得很麻烦,我宁愿只维护一个模板。

所以,我想真正的问题是,无论是否添加联系人记录,在适用的条件语句中使用什么合适的值?

【问题讨论】:

    标签: javascript html netsuite freemarker


    【解决方案1】:

    好的,我顿悟并解决了这个问题。事后看来,这很明显。这就是我所做的。

    我基本上创建了一个变量,并将其设置为“公司名称”值。然后,如果有联系人,则为其分配联系人的姓名。代码如下:

    <#assign greeting = customer.companyName>
    <#if contact.id?has_content><#assign greeting = contact.firstName + " " + contact.lastName></#if>
    ${greeting},<br />
    

    我希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-25
      • 1970-01-01
      相关资源
      最近更新 更多