Невозможно назначить идентификатор календаря итеративно для извлечения событий из календаря Google - PullRequest
0 голосов
/ 19 ноября 2018

Я пытался создать рабочий скрипт для извлечения событий из календаря разных людей. Доступ доступен для чтения событий.

У меня есть идентификаторы на другом листе («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();
}
...