Запустить скрипт onDelete () или onUpdate () - PullRequest
1 голос
/ 29 октября 2019

У меня есть скрипт Google, который запускается при создании события и копирует его в другой календарь. Теперь я хочу иметь возможность удалить скопированное событие из календаря при удалении оригинала.

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

Я уверен, что могу написать код для удаления события с совпадающим Id-тегом, я просто не уверен, как заставить код запускаться при удалении.

Это мой текущий код:

function copyBandGigsToPersonalCalendar() {

 var personalCalendar = CalendarApp.getDefaultCalendar();
 var bandCalendar = CalendarApp.getCalendarById("CalendarIdHere");

 var date = new Date();
 var firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
 var lastDay = new Date(date.getFullYear(), date.getMonth() + 12, 0);

 var events = bandCalendar.getEvents(firstDay, lastDay);

  for (var i in events){

     if(events[i].getTag("CopiedToJoesCalendar") == null && events[i].getColor() == 10){

      var startDate = events[i].getStartTime();
      var location  = events[i].getLocation();
      var newEvent  = personalCalendar.createAllDayEvent("Gig", startDate, {location:location});
                  newEvent.removeAllReminders();
                  newEvent.setColor(8);
                  newEvent.setTag("OriginalID", events[i].getId());

      events[i].setTag("CopiedToJoesCalendar", "Yes");

    }

  }


}

1 Ответ

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

Вы можете использовать триггер onEventUpdated() .

(...), который запускается при создании, обновлении или удалении записи календаря .

Однако, имейте в виду, что вам нужно будет вручную выяснить, какие события были удалены, поскольку эти триггеры не несут эту информацию .

Эти триггеры не сообщают вам, какое событие изменилось или как оно изменилось. Вместо этого они указывают, что вашему коду необходимо выполнить операцию инкрементной синхронизации, чтобы получить последние изменения в календаре. Полное описание этой процедуры см. В руководстве по синхронизации ресурсов для API-интерфейса календаря.

Однако вы можете использовать Service Property , чтобы отслеживать события, а затем определитьчто было удалено на основе этого.

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

Надеюсь, это поможет.

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