Bound Apps脚本正在从其他项目中提取

问题描述 投票:-1回答:1

我已经创建了一个应用脚本(绑定到Google表格)来使用HTML模板发送电子邮件。

但是,当我运行脚本时,似乎选择了另一个模板。

我已经设法通过更改HTML文件名和变量名来运行模板,但是考虑到项目已绑定到我的工作表,是否应该这样做?

谢谢

google-apps-script
1个回答
0
投票

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'];
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.