使用 Google Apps 脚本简单邮件合并不会显示 0 个值
0 value doesn't appear using Google Apps Script Simple Mail Merge
在使用以下 script 期间,如果我在电子邮件模板中指定的列的一个单元格中出现“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 值但空单元格返回为 "undefined"电子邮件正文)。
希望有人能帮助我。
谢谢
欢迎来到 JavaScript,其中 0、''
、""
、null
和 undefined
均表示 false
-y。
您遇到的问题是 ||
执行的逻辑或使用非严格相等比较,因此当 variableData
为 0 时,它被类型转换为 false
(连同 null
和 undefined
的所需转换)和 ""
的替代替换被选中。
要解决此问题,您需要在替换之前对 variableData
的值执行更严格的检查。
例如,可以使用三元运算符:
var variableData = ...
variableData = (!variableData && variableData !== 0) ? "" : variableData
对于其他 false
-y 值,这将替换为 ""
,但允许替换为数值 0
。另请注意 String(0)
是真实的,因此如果您 return 将找到的变量作为字符串,则短路运算符应产生所需的结果。
在使用以下 script 期间,如果我在电子邮件模板中指定的列的一个单元格中出现“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 值但空单元格返回为 "undefined"电子邮件正文)。
希望有人能帮助我。 谢谢
欢迎来到 JavaScript,其中 0、''
、""
、null
和 undefined
均表示 false
-y。
您遇到的问题是 ||
执行的逻辑或使用非严格相等比较,因此当 variableData
为 0 时,它被类型转换为 false
(连同 null
和 undefined
的所需转换)和 ""
的替代替换被选中。
要解决此问题,您需要在替换之前对 variableData
的值执行更严格的检查。
例如,可以使用三元运算符:
var variableData = ...
variableData = (!variableData && variableData !== 0) ? "" : variableData
对于其他 false
-y 值,这将替换为 ""
,但允许替换为数值 0
。另请注意 String(0)
是真实的,因此如果您 return 将找到的变量作为字符串,则短路运算符应产生所需的结果。