Проблема
Вложенный триггер на движке GAS v8 не работает, если я использую проект машинного ввода cl asp. «Вложенный триггер» означает запланированную функцию, которая программно создается другой запланированной функцией.
Как воспроизвести
- Создать проект cl asp
clasp create --type standalone
- Создать файл 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()
не срабатывает. Триггер установлен, но он будет отключен по НЕИЗВЕСТНОЙ причине.
Примечание
- Если я вручную выполню
schedule()
, то doSomething()
срабатывает, как и ожидалось. - Если я создаю проект GAS с точно таким же содержимым без cl asp, то
doSomething()
срабатывает, как и ожидалось. - Если я пу sh код без двигателя v8 как следует, то все работает нормально.
- Удалить
"runtimeVersion": "V8"
из appsscript.json
- Удалить
tsconfig.json
файл из проекта.
Есть что-то, что я пропускаю ?
Обновление (2020/04/18)
Я создал проблему на трекере проблем.
https://issuetracker.google.com/154366756