我一直在尝试创建一个工作脚本来从其他人的日历中提取事件。可以使用读取事件。
我在另一个工作表(“ Cals2Extract”)中的ID在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);
//遍历找到的所有日历事件,并从计算的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();
}