无法迭代分配日历ID以从Google日历提取事件

时间:2018-11-19 17:06:37

标签: events calendar google-calendar-api extract spreadsheet

我一直在尝试创建一个工作脚本来从其他人的日历中提取事件。可以使用读取事件。

我在另一个工作表(“ Cals2Extract”)中的ID在A2范围内:B4列标题A(Cal_ID)和B(活动)。

虽然我能够从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: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();
}

0 个答案:

没有答案