Триггер времени сценария приложения не выполняет мой сценарий вообще - PullRequest
1 голос
/ 20 марта 2020

У меня есть две функции, которые отвечают за запуск и остановку выполнения моего скрипта из пользовательского интерфейса.

function runScript() {
  stopScript();
  ScriptApp.newTrigger("start").timeBased().everyHours(1).create();
}

и

function stopScript() {
  let triggers = ScriptApp.getProjectTriggers();

  for (var i = 0; i < triggers.length; i++) {
    ScriptApp.deleteTrigger(triggers[i]);
  }
}

Они оба запускаются пользовательским интерфейсом, для которого я использую этот фрагмент кода:

function onOpen(e) {
  let sheetUi = SpreadsheetApp.getUi();

  sheetUi.createMenu('Menu')
  .addItem('Run', 'runScript')
  .addItem('Stop', 'stopScript')
  .addToUi();
}

Они работают как положено : stopScript() удалить старый триггер времени и runScript() создать новый.

После запуска функции runScript() создается новый триггер времени, и я вижу его на своей панели инструментов. Однако триггер времени никогда не выполняет сценарий. Например, за последние 2 дня временной триггер, который был установлен для выполнения скрипта каждый час, не выполнял его ни разу. Я не понимаю, почему это происходит.

Сценарий можно использовать с любого Google Sheet. Я попробовал любое решение, которое я нашел на inte rnet и здесь, но оно не работает. У меня нет выбора.

Я что-то упустил?

1 Ответ

0 голосов
/ 06 апреля 2020

После 2 недель тестирования и обращения в службу поддержки G Suite (кому тоже не удалось помочь) я обнаружил проблему.

Каждая часть моего скрипта верна и работает. Проблема возникает, когда вам нужно протестировать триггер времени или даже устанавливаемый триггер в целом для вашего дополнения (опция Test as add-on из редактора скриптов) - это невозможно и никогда не будет работать, потому что способ, которым Google создал это. С Тестирование надстройки редактора :

Устанавливаемые триггеры не поддерживаются при тестировании. Функциональность, которая зависит от installable triggers is not testable.

Так как же тогда проверять свои временные триггеры?

В моем случае, когда я тестировал скрипт через редактор, был создан триггер времени, и он работал периодически (каждые 1 час). И это ответ. Если ваш триггер времени (или вообще устанавливаемый триггер) работает таким образом, это означает, что он работает и будет работать на производстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...