Триггер календаря «Обновление событий» не работает - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь вызвать функцию calendarScan() при внесении изменений в события моего Календаря Google с использованием приведенного ниже кода.

ScriptApp.newTrigger('calendarScan')
  .forUserCalendar(Session.getActiveUser().getEmail())
  .onEventUpdated()
  .create();

Я не могу понять, почему триггер не работает.Сценарий автономный.Функции calendarScan() работают нормально вручную.

Ваша помощь искренне ценится.

1 Ответ

0 голосов
/ 04 октября 2018

Для создания Триггера события календаря для всех календарей, которыми владеет пользователь, можно использовать Календарь API (после включения) :

function getOwnedCalendars_() {
  const options = {
    minAccessLevel: "owner", // freeBusyReader, reader, writer
    fields: "nextPageToken, items(id,summary,description)"
  };

  const cals = [];
  do {
    var search = Calendar.CalendarList.list(options);
    options.pageToken = search.nextPageToken;
    if (search.items && search.items.length)
      Array.prototype.push.apply(cals, search.items);
  } while (options.pageToken);
  return cals;
}
function giveMeTheTrigger(e) {
  console.log(e);
}
function makeTriggers() {
  getOwnedCalendars_().forEach(function (cal) {
    var t = ScriptApp.newTrigger("giveMeTheTrigger")
         .forUserCalendar(cal.id)
         .onEventUpdated()
         .create();
    console.log({message: "Created event trigger for calendar '" + cal.summary + "'",
                 desc: cal.description, id: cal.id, triggerId: t.getUniqueId()});
  });
}

Учитывая, что вы ожидаете, что будете использовать API-интерфейс Календаря для эффективного использования этого триггера Обновление события , это не должно быть слишком большим дополнительным расходом.

...