cl asp: вложенный триггер не срабатывает на двигателе V8 - PullRequest
2 голосов
/ 04 апреля 2020

Проблема

Вложенный триггер на движке GAS v8 не работает, если я использую проект машинного ввода cl asp. «Вложенный триггер» означает запланированную функцию, которая программно создается другой запланированной функцией.

  • cl asp: v2.3.0

Как воспроизвести

  1. Создать проект cl asp
    clasp create --type standalone
  2. Создать файл TypeScript с именем main.ts со следующим содержимым:
// Set trigger on a specific time.
function setTrigger(time:Date, func:string): void {
  console.log('This is scheduling: ' + func + ' on ' + time);
  ScriptApp.newTrigger(func)
      .timeBased()
      .at(time)
      .create();
}
// Set trigger on 5 minutes after.
function schedule() {
  const toBeScheduled = new Date();
  toBeScheduled.setMinutes(toBeScheduled.getMinutes() + 5);
  setTrigger(toBeScheduled, "doSomething");
}

// function which will fire.
function doSomething() {
  console.log("DO SOMETHING");
}
Создайте json файл с именем tsconfig.json со следующим содержимым:
{
  "compilerOptions": {
    "lib": ["esnext"],
    "target": "ES2019",
    "experimentalDecorators": true
  }
}
pu sh код
clasp push Установите триггер для функции schedule() каждые 5 минут, чтобы doSomething() срабатывал каждые 5 минут.

но на самом деле doSomething() не срабатывает. Триггер установлен, но он будет отключен по НЕИЗВЕСТНОЙ причине.

Примечание

  1. Если я вручную выполню schedule(), то doSomething() срабатывает, как и ожидалось.
  2. Если я создаю проект GAS с точно таким же содержимым без cl asp, то doSomething() срабатывает, как и ожидалось.
  3. Если я пу sh код без двигателя v8 как следует, то все работает нормально.
    • Удалить "runtimeVersion": "V8" из appsscript.json
    • Удалить tsconfig.json файл из проекта.

Есть что-то, что я пропускаю ?

Обновление (2020/04/18)

Я создал проблему на трекере проблем.
https://issuetracker.google.com/154366756

...