Я создаю приложение, которое добавляет события в календарь из электронной таблицы, а затем обновляет события, если электронная таблица изменяется. Прямо сейчас мой код просто удаляет все существующие события и добавляет новое для каждой записи в электронной таблице, но иногда мой код выдает ошибки, потому что это означает, что я добавляю и удаляю слишком много записей календаря. (Да, я использую утилиту сна. Иногда она все равно падает.)
Кажется, что более эффективный способ сделать это - проверить, существует ли событие; если это так, обновите любые изменения в дате; а если нет, то создайте новое событие. Но я не могу понять, как связать два списка друг с другом. Если я скажу l oop по всем событиям в электронной таблице, а внутри это l oop по каждому событию в календаре, чтобы найти совпадение, и если нет совпадения для создания нового события, это выглядит как это создаст новое событие для каждого несоответствующего элемента, который существует в календаре для каждой строки электронной таблицы.
Вот базовый код c:
function UpdatePrintCalendar() {
SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/16U6am5GvgWxh0gcRS8FWf9ws7BxaiJU5KOnSo7kOUlg/edit?usp=sharing&key=AIzaSyBe4KN8M-HhMUbN0UcAao7Xm4rIMgOOC6g")
.getSheetByName("PD Hed List").sort(3).sort(4);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cols = sheet.getLastColumn();
var endofthings = sheet.getLastRow();
var stories = sheet.getRange(1,1, endofthings, cols).getValues();
var rownum = stories.length
var printCal = CalendarApp.getCalendarById("4d1aq2jtt795hfemn7i76cfi30@group.calendar.google.com");
var fromDate = new Date(2019,11,1,0,0,0);
var toDate = new Date(2020,3,31,0,0,0);
var events = printCal.getEvents(fromDate, toDate);
for(var i=0; i<events.length;i++){ /* Clear the calendar. This prevents duplicates. */
var ev = events[i];
ev.deleteEvent();
}
for (x=0; x<stories.length; x++) {
if (x % 10 == 0) { Utilities.sleep(3000); }
var story = stories[x];
var onlinedate = story[1];
var printdate = story[2];
var section = story[5];
var slug = story[6];
var hed = {
'location': section,
'description': slug,
}
if (Boolean(printdate)) {
if (slug) {
printCal.createAllDayEvent(slug, new Date(printdate));
}
}
}
}
}