我已经创建了一个应用脚本(绑定到Google表格)来使用HTML模板发送电子邮件。
但是,当我运行脚本时,似乎选择了另一个模板。
我已经设法通过更改HTML文件名和变量名来运行模板,但是考虑到项目已绑定到我的工作表,是否应该这样做?
谢谢
Scriptlets(HTML模板化的HTML),如文档中所述:
[...]可以调用其他代码文件中定义的函数,引用全局变量或使用任何Apps Script API。您甚至可以在scriptlet中定义函数和变量,但要注意,代码文件或其他模板中定义的函数不能调用它们。
这意味着它们可以访问在任何脚本中全局定义的变量。为了避免出现问题,建议您执行以下操作:
[all在函数内部编写代码。而不是像这样的脚本:
bad.gs
function salute(name) {
Logger.log('Hello ' + name);
}
salute('Jack');
salute('Jane');
使用函数包装代码;如:
good.gs
function salute(name) {
Logger.log('Hello ' + name);
}
function myFunction() {
salute('Jack');
salute('Jane');
}
未声明全局变量。声明变量时,请确保此操作在函数内部发生,并确保使用var关键字进行此操作。
bad.gs
function salute(name) {
Logger.log('Hello ' + name);
}
function myFunction() {
names = ['Jack', 'Jane'];
for (i=0; i<names.length; i++) {
name = names[i];
salute(name);
}
}
good.gs
function salute(name) {
Logger.log('Hello ' + name);
}
function myFunction() {
var names = ['Jack', 'Jane'];
for (var i=0; i<names.length; i++) {
var name = names[i];
salute(name);
}
}
最后,在创建函数时要小心。在Javascript中,它们也是变量,因此也可以引用它们。因此,我建议您使用适当的名称以避免任何混淆。
bad.gs
function names() {
return ['Jack', 'Jane'];
}
good.gs
function getNames() {
return ['Jack', 'Jane'];
}