我一直在尝试创建一个工作脚本来从不同的人日历中提取事件 . 可以访问以读取事件 .

我在A2:B4列 Headers A(Cal_ID)和B(活动)范围内的不同表(“Cals2Extract”)中有ID .

虽然我能够从A2列中的第一个名称中提取事件,但我无法遍历A列中的第二个和第三个名称(A3,A4 ....) .

提取的事件写在不同的工作表(EventCal)中 .

Sample Sheet

任何帮助表示赞赏 .

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中创建当前电子表格的 Headers 记录: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);

//循环查找找到的所有日历事件,并从计算出的ROW 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();
}