Я пытался создать рабочий скрипт для извлечения событий из календаря разных людей. Доступ доступен для чтения событий.
У меня есть идентификаторы на другом листе («Cals2Extract») в диапазоне A2: B4 Заголовок столбца A (Cal_ID) и B (Активный).
Хотя я могу извлечь события из первого имени в столбце A2, я не могу перебрать второе и третье имя в столбце A (A3, A4 ....).
Извлеченные события записываются на другой лист (EventCal).
Образец листа
Любая помощь приветствуется.
function Get(){
var ss=SpreadsheetApp.openById("ID of the sheet")
var sheet=ss.getSheetByName("Cals2Extract");
var sheetArr=sheet.getDataRange().getValues();
var range = sheet.getRange(1, 1, 1, sheet.getMaxColumns());
var values = range.getValues();
var ColIndexmap = {};
var mycal="";
var cal="";
Logger.log(sheet);
Logger.log (sheetArr);
for (var row in values) {
for (var col in values[row]) {
ColIndexmap[values[row][col]]=parseInt(col);
}}
for(var i=1;i<sheetArr.length;i++){
mycal ="";
cal ="";
Logger.log(sheetArr.length);
Logger.log(i);
mycal=sheetArr[i][ColIndexmap["Cal_ID"]];
Logger.log(mycal);
cal = CalendarApp.getCalendarById(mycal);
Logger.log(cal);
if(sheetArr[i][ColIndexmap["Active"]] != ""){
var events = cal.getEvents(new Date("November 1, 2018 00:00:00 CST"), new
Date("November 14, 2018 23:59:59 CST"), {search: ''});
var sheet1 = ss.getSheetByName("EventCal");
sheet1.clearContents();
Logger.log(sheet1);
// Создать запись заголовка в текущей электронной таблице в ячейках A1: N1 - сопоставить количество записей в "header =" с последним параметром
// записи getRange ниже
var header = [["Calendar Address", "Event Title", "Event Description",
"Event Location", "Event Start", "Event End", "Calculated Duration",
"Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All
Day Event", "Recurring Event"]]
var range = sheet1.getRange(1,1,1,14);
range.setValues(header);
// Перебрать все найденные события календаря и выписать их, начиная с заданного ряда 2 (i + 2)
for (var i=0;i<events.length;i++) {
var row=i+2;
var myformula_placeholder = '';
var details=[[mycal,events[i].getTitle(), events[i].getDescription(),
events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(),
myformula_placeholder, ('' + events[i].getVisibility()),
events[i].getDateCreated(), events[i].getLastUpdated(),
events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(),
events[i].isRecurringEvent()]];
var range=sheet1.getRange(row,1,1,14);
range.setValues(details);
var cell=sheet1.getRange(row,7);
cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+
')+(MINUTE(E' +row+ ')/60))');
cell.setNumberFormat('.00');
}
}
}
SpreadsheetApp.flush();
}