Как удалить повторяющиеся события календаря при экспорте данных листов? - PullRequest
0 голосов
/ 24 июня 2018

Я хочу, чтобы мои Листы Google импортировались в мой Календарь каждый раз, когда я редактирую столбец D. У меня есть скрипт, который работает, но он дублирует эти записи.Я хочу удалить все события с одинаковыми именами (столбец E).Проще говоря, каждый раз, когда я редактирую столбец D, я хочу, чтобы все записи календаря были удалены и добавлены новые.

Есть идеи, что я делаю неправильно?

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh0 = ss.getSheetByName("DATA");
  var entries = [{
    name : "Export Events",
    functionName : "addEvents"
  }];
  ss.addMenu("Calendar Actions", entries);
};

function addEvents(){
  var ss = SpreadsheetApp.getActiveSheet();
  var headerRows = 1;
  var range = ss.getDataRange();
  var values = range.getValues(); 
  var data = ss.getRange("D2:E24").getValues();
  var cal = CalendarApp.getCalendarById('k8kjmthm3fmcapidh9urkk6h2g@group.calendar.google.com');
  var calID = "k8kjmthm3fmcapidh9urkk6h2g@group.calendar.google.com";
  //Logger.log(cal);
  //Logger.log(data.length);

  for(var i = 0;i<data.length;i++){
    if (i < headerRows) continue; 
    var column = data[i];
    var row = data[i];
    Logger.log(row);
    var date = row[0];
    //Logger.log(date);
    var title = row[1];
    var date = row[0];
    var id = row[1];
    var event = row[1]
    var eventSeries = row[1]
    var startDate = row[0]
    var endDate = row[0]

    try {
      var event = cal.getEventSeriesById(id);
      event.deleteEventSeries();
      row[1] = '';
      var event = cal.deleteEvent(row[1]);
    }
    catch (e) {
      Logger.log(event);
    }

    var newEvent = cal.createAllDayEvent(title, startDate).getId();
    row[1] = newEvent;  // Update the data array with event ID
  }
}
...