使用Freemarker从条件脚本与SuiteScript合并条件问题NetSuite电子邮件

时间:2018-12-13 21:26:38

标签: javascript html netsuite freemarker

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

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

因为可能没有指定联系人,所以在我的电子邮件模板中,我有Freemarker来检查联系人是否存在。如果是这样,它将添加其名字和姓氏。如果不是,它将在客户记录中添加“ companyname”值。这就是我所拥有的:

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

我遇到的问题是,添加联系人后,它会很好地显示联系人姓名。但是,如果未添加任何联系人,则条件语句将完全失败。即使“ companyname”具有值,也没有任何显示。我尝试了以下操作,但条件语句始终解析为<​​strong> false :

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

我尝试查看正在发生的情况,如果将所有值都放在条件语句之外,则在期望时会得到值,而在期望时会得到空格。因此,据我所知,我知道数据本身没有问题。

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

因此,我想真正的问题是,无论是否添加了联系记录,在条件语句中使用的适当值是多少?

1 个答案:

答案 0 :(得分:1)

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

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

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

希望这对其他人有帮助。