Триггеры на встроенные триггеры Google apps script

Встроенные триггеры гугл скриптов, покрывают 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.

Добавить комментарий