循环浏览Google日历用户列表

时间:2016-11-14 11:36:51

标签: javascript google-sheets

我在Google工作表中有一个Google电子邮件用户列表(名为Master,E列)。每个用户还有一个以该电子邮件地址命名的空白页(User@Whatever.com)。

我的目标是浏览用户列表,为每个用户检索今天的日历条目,并将其输入到相关表格中。到目前为止,我有以下代码,但它已返回

  

TypeError:无法调用方法" getEventsForDay"为null。 (第15行,   文件"日历更新")

代码如下:

var employeeDataRange = SpreadsheetApp.getActiveSpreadsheet().getRange("Master!E2:E");
var employeeObjects = employeeDataRange.getValues();

for (var j=0; j<employeeObjects.length; j++) {  
    var cal = CalendarApp.getCalendarById(employeeObjects[j]);
    var sheet =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName(employeeObjects[j])
    var today = new Date();

    var events = CalendarApp.getCalendarById(cal).getEventsForDay(today);
    for (var i=0;i<events.length;i++) {    
        var details=[[events[i].getTitle(), events[i].getStartTime(), events[i].getEndTime(), events[i].getAllTagKeys()]];
        var row=i+1;
        var range=sheet.getRange(row,1,1,4);
        range.setValues(details);
    }
}  
}

干杯,

2 个答案:

答案 0 :(得分:0)

您确定拥有查看这些日历及其活动的所有权限吗?

此外,你有这一行 var cal = CalendarApp.getCalendarById(employeeObjects [j]); employeeObjects [j]是日历id,cal是相对日历。 你有两排 var events = CalendarApp.getCalendarById(cal).getEventsForDay(today); 但是cal是一个日历,而不是它的id。为什么你不使用cal.getEventsForDay(今天)?

答案 1 :(得分:0)

我想出来了:

  var calendar = SpreadsheetApp.getActiveSpreadsheet().getRange("Master!E2:E");
var employeeObjects = calendar.getValues();

for (var j=0; j<employeeObjects.length; j++) {

var cal = CalendarApp.getCalendarById(employeeObjects[j]);
var sheet =   SpreadsheetApp.getActiveSpreadsheet().getSheetByName(employeeObjects[j])
var today = new Date();

 var events = CalendarApp.getCalendarById(employeeObjects[j]).getEventsForDay(today);
for (var i=0;i<events.length;i++) {

var details=[[events[i].getTitle(), events[i].getStartTime(), events[i].getEndTime(), events[i].getAllTagKeys()]];
var row=i+1;
var range=sheet.getRange(row,1,1,4);
range.setValues(details);
}
}  
}