在使用以下脚本时,如果我在电子邮件模板中指示的列的单元格中的值为"0“,则它不会出现在发送的最终电子邮件中。
它被空字符串替换,就好像单元格是空的一样。
我想问题就在这句话中:
// Replace variables from the template with the actual values from the data object.
// If no value is available, replace with the empty string.
for (var i = 0; i < templateVars.length; ++i) {
// normalizeHeader ignores ${"} so we can call it directly here.
var variableData = data[normalizeHeader(templateVars[i])];
email = email.replace(templateVars[i], variableData || "");
}但是,如果删除布尔符号而只留下"variableData“,问题就会在空单元格上移动(在发送的电子邮件中显示0值,但空单元格在电子邮件文本中作为”未定义“返回)。
我希望有人能帮我。谢谢
发布于 2018-05-25 12:12:27
欢迎来到JavaScript,其中0、''、""、null和undefined都意味着false-y。
您面临的问题是,||执行的逻辑OR使用非严格的等式比较,因此当variableData为0时,类型转换为false (以及所需的null和undefined转换),并选择""的替代。
要解决这个问题,您需要在替换variableData之前对它的值执行更严格的检查。
例如,可以使用三元操作符:
var variableData = ...
variableData = (!variableData && variableData !== 0) ? "" : variableData这将用""替换其他false-y值,但允许用数值0替换。还请注意,String(0)是真实的,所以如果您将找到的变量作为字符串返回,短路操作符应该会产生所需的结果。
https://stackoverflow.com/questions/50528574
复制相似问题