Рекурсивный триггер расписания Google Apps Script - PullRequest
2 голосов
/ 04 мая 2020

Я пытаюсь программно добавить триггер в скрипт Google Apps - у меня есть функция main() Я хочу составить расписание, которое оборачивает другой синхронизированный вызов с использованием времени ScriptApp.newTrigger().create(), например,

 function main(){
/*
* do stuff
*/

doScriptCallback();
}
 function doScriptCallback(){
  if(CONFIG.CALLBACK_SCRIPT_NAME != ''){
    try {
      ScriptApp.newTrigger(CONFIG.CALLBACK_SCRIPT_NAME)
      .timeBased()
      .after(5000)
      .create()
      Logger.log('Scheduled ' + CONFIG.CALLBACK_SCRIPT_NAME);
    } catch(e) {
      Logger.log(e);
    }
  }
}

работает main() из редактора правильно запускает doScriptCallback() и планирует функцию в CONFIG.CALLBACK_SCRIPT_NAME

Но если я планирую main(), doScriptCallback только регистрирует сообщение, но функция не запустить.

Это ограничение в скрипте Google Apps?

1 Ответ

2 голосов
/ 04 мая 2020

Похоже, что это ошибка!

В системе отслеживания проблем Google уже есть отчет, в котором подробно описан тот же тип поведения:

Похоже, Google знает об этой проблеме, но если она вызывает проблемы, вы можете отправить свою ошибку об этом здесь .

Вы также можете нажать ☆ рядом с номером проблемы в левом верхнем углу на вышеупомянутых страницах, что позволяет Google знать, что больше людей сталкиваются с этим, и, таким образом, вероятность того, что его увидят быстрее, - кажется, уже это часто встречающаяся проблема.

Обходной путь:

Между тем, оказывается, что вы можете отключить среду выполнения V8 в скрипте Apps, и это будет запускать ваши триггеры во время выполнения Rhino. Отчеты влияют только на V8, и я могу подтвердить, что смог запустить функцию, созданную вложенным триггером в Rhino.

Вы можете отключить V8, выполнив Run > Disable new Apps Script runtime powered by Chrome V8.

Надеюсь это полезно для вас!

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