Удалить события Google Календаря на основе названия события - PullRequest
0 голосов
/ 14 июля 2020

По какой-то причине в моем календаре была создана серия событий, которые не считаются повторяющимися. Поскольку мы говорим о двух событиях в неделю в течение следующих 3 лет, я ищу скрипт Google Apps, чтобы удалить эти события из моего календаря.

События имеют одно конкретное c имя и созданы мной. Я хочу удалить все события в будущем, которые имеют это имя c и созданы мной.

Поскольку я новичок в написании сценариев, я попробовал приведенный ниже пример кода. К сожалению, он ничего не делает в настроенном мной календаре тестов (Test). Параметр отладки в скрипте Google Apps не генерирует никаких ошибок или сообщений. Запуск сценария также не генерирует никаких журналов ...

Итак, кто может помочь указать, что не так с приведенным ниже кодом, и как я могу удалить определенные c события на основе названия события и создатель этого события?

function delete_events()
{
    var calendarName = 'Test';
    // for month 0 = Jan, 1 = Feb etc
    // below delete from Jul 13 2020 to Jul 18 2020
    var fromDate = new Date(2020,7,13,0,0,0); 
    var toDate = new Date(2020,7,18,0,0,0);
    var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
    var events = calendar.getEvents(fromDate, toDate);
    for(var i=0; i<events.length;i++){
        var ev = events[i];
        // show event name in log
        Logger.log(ev.getTitle()); 
        ev.deleteEvent();
     }
}

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Хорошо, думаю, мне удалось решить эту проблему. Мне удалось удалить определенные c события, которые были связаны с конкретным c создателем и заголовком. Другие мероприятия с тем же названием, но с другим создателем все еще в повестке дня.

function delete_events()
{
    var calendarName = 'Test';
    // for month 0 = Jan, 1 = Feb etc
    // below delete from Jul 13 2020 to Jul 18 2020
    var fromDate = new Date("2020-07-13"); 
    var toDate = new Date("2020-07-18");
    var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
    var events = calendar.getEvents(fromDate, toDate);
    for(var i=0; i<events.length;i++){
        var ev = events[i];
        if(ev.getTitle()=="EventX" & ev.getCreators()=="xyz@gmail.com"){
        // show event name in log
        Logger.log(ev.getTitle()); 
        ev.deleteEvent();
     }
}
}
0 голосов
/ 14 июля 2020

Убедитесь, что вы правильно установили даты и запросили создателей []

  • Как указано в комментариях к вашему вопросу и в комментарии внутри вашего кода - Javascript считает месяцы , начиная с 0
  • Скрипт приложений содержит методы getCreators(), которые возвращают вам массив (!) Потенциально нескольких создателей
  • Таким образом, вы не можете провести сравнение с ==, но необходимо использовать, например, indexOf ()

Пример:

function delete_events()
{
  var calendarName = 'Test';
  var myEmail = "YOUR EMAIL";
  var myTitle = "Hello";
  // for month 0 = Jan, 1 = Feb etc
  // below delete from now to Jul 18 2020
  var now = new Date(); 
  var toDate = new Date(2020,6,18,0,0,0);
  var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
  var events = calendar.getEvents(now, toDate);
  for(var i=0; i<events.length;i++){
    var ev = events[i];
    // show event name in log
    Logger.log(ev.getTitle()); 
    var creators = ev.getCreators();
//check if you are the calendar creator and the event title matches
    if(creators.indexOf(myEmail) >-1 && ev.getTitle() == myTitle){
      ev.deleteEvent();
    }
  }
}
...