Триггеры, основанные на времени:
Вы можете использовать метод after (durationMilliseconds) , чтобы вызвать вашу функцию через указанное количество миллисекунд, если вы создадите триггер в конце вашего функция, подобная этой:
function myFunction() {
Logger.log("Logging");
ScriptApp.newTrigger("myFunction")
.timeBased()
.after(1000 * X) // Fire "myFunction" after X seconds
.create();
}
Но кажется, что этот метод (по крайней мере, в настоящее время) не может быть использован для запуска функции спустя гораздо меньше минуты, как вы можете видеть в в этом случае Issue Tracker .
Кроме этого, не существует триггера, основанного на времени, который можно использовать для вашей цели .
Обходной путь:
Другой вариант, если вы просто хотите выполнить некоторые действия через X секунд, будет использовать Utilities.sleep (миллисекунды) и for
l oop.
Конечно, вы в конечном итоге достигнете Apps Script ограничение по времени выполнения , и по этой причине вам следует:
- Узнать, сколько итераций вы можете выполнить до достижение этого предела.
- Сделайте, чтобы каждое выполнение делало это число итераций.
- Создайте триггер, который будет запускать вашу функцию через определенное время, с
after(durationMilliseconds)
.
Это может быть что-то похожее на это:
function myFunction() {
var numIterations = 10; // Number of iterations before reaching time limit (change accordingly)
for (var i = 0; i < numIterations; i++) {
// Your actions
Utilities.sleep(1000 * X); // Pause execution for X seconds
}
ScriptApp.newTrigger("myFunction")
.timeBased()
.after(1000 * Y) // Fire "myFunction" after Y seconds
.create();
}
Таким образом, вы можете большую часть времени сохранять желаемую частоту, и только по достижении лимита времени исполнения (каждые 6 или каждые 30 минут, в зависимости от вашей учетной записи) эта частота будет однажды ниже (около 1 минуты), прежде чем вернуться к желаемой частоте. Это не то поведение, которого вы ожидаете, но я думаю, что оно ближе всего к нему.
Ссылка: