Связанные скрипты приложений получают из других проектов - PullRequest
0 голосов
/ 05 ноября 2019

Я создал скрипт приложения (привязанный к Google Sheet) для отправки электронного письма с использованием шаблона HTML.

Однако, когда я запускаю скрипт, он, похоже, подбирает другой шаблон.

Мне удалось запустить мой шаблон, изменив имя файла HTML и имена переменных, но должно ли это произойти, если проект привязан к моему листу?

Спасибо

1 Ответ

0 голосов
/ 07 ноября 2019

Scriptlets (Шаблонный HTML) в Google Apps Script, как объяснено в документации:

[...] может вызывать функции, определенные в других файлах кода, ссылаясь на глобальныепеременные или используйте любой из API скриптов приложений. Вы даже можете определять функции и переменные в скриптлетах, с оговоркой, что они не могут быть вызваны функциями, определенными в файлах кода или других шаблонах.

Это означает, что они могут обращаться к переменным, которые определены глобальнов любом из ваших сценариев. Чтобы избежать проблем, я предлагаю вам сделать следующее:

  • Написание всего вашего кода внутри функций. Вместо таких сценариев, как:

    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'];
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...