Почему основанный на времени триггер GAS отключается по неизвестной причине в V8? - PullRequest
1 голос
/ 28 февраля 2020

У меня есть (среди прочих) следующие четыре функции.

  • fallback()
  • newSubmission()
  • installSubmissionTrigger()
  • uninstallSubmissionTrigger()

У меня есть триггер, который:

  1. Работает при отправке формы.
  2. Вызывает fallback(), который что-то отправляет в электронную таблицу для просмотра .
  3. fallback звонки installSubmissionTrigger().
  4. installSubmissionTrigger создает основанный на времени триггер, работающий каждую минуту.
  5. Триггер вызывает newSubmission().
  6. newSubmission делает то, что я хочу, и вызывает uninstallSubmissionTrigger().
  7. uninstallSubmissionTrigger удаляет основанный на времени триггер.

Все это прекрасно работает с использованием Rhino, но когда Я включаю V8, когда по неизвестным причинам, когда он должен работать, отключается основанный на времени триггер.

Также при использовании V8, если я запускаю installSubmissionTrigger() вручную, триггер срабатывает.
Если я запускаю fallback() вручную, триггер также срабатывает.

В чем может быть неизвестная причина, по которой триггер отключается?

function fallback(event) {
  ...
  installSubmissionTrigger();
  ...
}

function newSubmission() {
  ...
  uninstallSubmissionTrigger();
  ...
}

function installSubmissionTrigger() {
  var properties = PropertiesService.getScriptProperties();
  if(!properties.getProperty("triggerID")) {
    var trigger = ScriptApp.newTrigger('newSubmission').timeBased().everyMinutes(1).create();
    properties.setProperty("triggerID", trigger.getUniqueId());
    Logger.log("Creating newSubmission trigger: " + trigger.getUniqueId());
  }
}

function uninstallSubmissionTrigger() {
  var properties = PropertiesService.getScriptProperties();
  properties.deleteProperty("triggerID");
  // Loop over all triggers.
  var allTriggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < allTriggers.length; i++) {
    // If the current trigger is the correct one, delete it.
    if (allTriggers[i].getHandlerFunction() === 'newSubmission') {
      ScriptApp.deleteTrigger(allTriggers[i]);
    }
  }
}

Пример использования:

  1. Затем они также подают запрос на расширение цен в своем доме.
  2. Эта дверь, скорее всего, будет частью расширения, поэтому в идеале мы бы отправили этот запрос в компанию, которая занимается с домом, а также с дверями.
  3. Но если запрос на дверь был обработан немедленно, он мог быть отправлен специалисту, который занимается исключительно дверями.

1 Ответ

1 голос
/ 04 марта 2020

Об этой проблеме сообщалось, и она связана со средой выполнения V8 [1]. Вы можете работать с DEPRECATED_ES5 исполняемой версией, которая работает как положено.

[1] https://issuetracker.google.com/issues/150756612

...