Можно ли выполнять функцию каждый день с помощью триггера, управляемого по времени, без активной электронной таблицы? - PullRequest
1 голос
/ 03 октября 2019

У меня есть функция, которая обновляет ячейки и отправляет электронные письма при вызове. Я хотел бы запускать его каждый день, не открывая электронную таблицу (метод getActiveSpreadsheet()).

Поэтому я попытался вызвать его, используя метод на стороне сервера openById(). Но функция не срабатывает, когда электронная таблица не открыта.

Есть ли способ запустить его с закрытой таблицей?

Вот код:

function updateNote() {
var ss = SpreadsheetApp.openById("MySpreadsheetID");
//do things
};`

function createTimeDrivenTriggers() {
// Trigger fonction everyday at 10.35am   
  ScriptApp.newTrigger('updateNote')
      .timeBased()
      .atHour(10)
      .nearMinute(35)
      .everyDays(1)
      .create();
};

1 Ответ

1 голос
/ 03 октября 2019

Ответ:

Вы можете создать устанавливаемый триггер для запуска каждый день без необходимости открывать электронную таблицу.

Подробно:

Использованиеоснованный на времени триггер, который вы можете запускать ежедневно, хотя в соответствии с документацией :

Время может быть немного случайным - например, если вы создаете повторяющиесяТриггер 9 утра, Apps Script выбирает время между 9 утра и 10 часами утра, а затем сохраняет это время постоянным изо дня в день, чтобы прошло 24 часа, прежде чем триггер снова сработает.

Если это непроблема для вас, тогда вы можете сделать это из редактора скриптов приложений для вашего проекта - следуйте по пути Edit > Current project's triggers, который откроет страницу триггеров для проекта в новой вкладке.

В левом нижнем углу щелкнитена кнопке + Add Trigger, чтобы вызвать модальное окно Add Trigger, используйте следующие свойства:

  • Выберите, какую функцию запустить: updateNote()
  • Выберите, какое развертывание должно выполняться:Head
  • Выбор источника события: Time-driven
  • Выбор типа триггера на основе времени: Day timer
  • Выбор времени дня: 10am to 11am

Если для вас важен ровно 10:35:

Вы можете выполнить те же действия, что и выше, но с немного другими свойствами:

  • Выберите, какую функцию запустить: createTimeDrivenTriggers()
  • Выберите, какое развертывание следует запустить: Head
  • Выберите источник события: Time-driven
  • Выберите тип триггера на основе времени: Day timer
  • Выберите время суток: 9am and 10am

Таким образом, вы будете создавать свой основанный на времени триггер для ежедневного запуска в 10:35. , всегда работает до срабатывания триггера.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...