javascript - 条件问题 NetSuite 电子邮件从 SuiteScript 与使用 Freemarker 的模板合并

标签 javascript html netsuite freemarker

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

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>

我遇到的问题是,添加联系人后,它会很好地显示联系人姓名。但是,如果没有添加联系人,则条件语句将完全失败。什么都没有显示,即使“companyname”有一个值。我试过以下方法,但条件语句总是解析为 false:

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

我已经尝试查看发生了什么,如果我将所有值都放在条件语句之外,我会在期望值时得到值,在期望值时得到空格。因此,据我所知,我知道数据本身没有问题。

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

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

最佳答案

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

我基本上创建了一个变量,并将其设置为“companyname”值。然后,如果有联系人,则为其指定联系人的姓名。这是代码:

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

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

关于javascript - 条件问题 NetSuite 电子邮件从 SuiteScript 与使用 Freemarker 的模板合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53770315/

相关文章:

javascript - jQuery ajax - 为什么没有响应?

javascript - 错误: uncaughtException: primordials is not defined

netsuite - 使用 RESTlet 在 NetSuite 中支付发票(全额付款)

javascript - 有没有办法编写使子列表字段列变灰的客户端脚本(Netsuite 2.0)?

javascript - 用 mysql 结果创建一个 foreach

javascript - IOS (Phonegap) 按姓名排序联系人(中英文姓名显示)

javascript - 如何轻松地在 HTML 中插入工具提示?

jquery - 如何使 hc-sticky 插件引用其容器

javascript - 使用一个命令放置一个按钮及其 div

javascript - 如何使用 netsuite 上的用户事件 suitescript 更新不支持的事务类型(例如 Bill)的字段