Встроенные триггеры гугл скриптов, покрывают 99% нужд запуска по событию или времени, но не позволяют делать это, к примеру, как запуск по рабочим дням или по определенным часам.
Чтобы как-то решить эту проблему можно написать промежуточный скрипт, отсекающий на уровне постоянно работающего триггера запуск основного скрипта, тем самым уменьшающий время и частоту работы этого самого основного скрипта.
Например: мне необходимо запускать скрипт только в рабочие дни, раз в час и, например с 10 утра до 6 вечера.
Промежуточный скрипт проверки дня и времени
function checkDateTime() {
const currentDate = new Date();
const currentDay = currentDate.getDay();
const currentHour = currentDate.getHours();
if(currentDay > 0 && currentDay < 6){
if(currentHour > 10 && currentHour < 18){
return true
}
}
}
где, if(currentDay > 0 && currentDay < 6)
— проверка Date getDay(), которая возвращает воскресенье как число 0, понедельник — 1 и так далее. Таким образом, ограничивая с 1 по 6 как рабочие дни.
и currentHour > 10 && currentHour < 18
— проверка Date getHours(), которая возвращает текущее время в числовом формате. Таким образом, ограничивая время с 10 утра до 18 вечера.
В заданные дни и временные промежутки функция возвращает true
Основной скрипт
function mainFunction(){
if (checkDateTime()){
// любой код здесь
}
}
Тут все просто. Если if
возвращает true
— происходит выполнение кода функции.
Далее основной скрипт завешивается на триггер, например по часам:
Но по своей сути он не будет работать каждый час «24 на 7», а только в рабочие дни и с 10 до 18.