2016-11-14 81 views
0

我在Google工作表中有一个Google电子邮件用户列表(名为Master,E列)。每个用户还有一个以该电子邮件地址命名的空白工作表([email protected])。遍历Google日历用户列表

我打算做的事是通过用户列表,为每个用户检索今天的日历条目,并将它们输入到其相关工作表中。到目前为止,我有下面的代码,但它的返回

TypeError: Cannot call method "getEventsForDay" of null. (line 15, file "Calendar Update")

代码如下:

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); 
    } 
} 
} 

干杯,

回答

0

你确定,你拥有所有权限查看那些日历和他们的事件?另外,你有这一行 var cal = CalendarApp.getCalendarById(employeeObjects [j]); 其中employeeObjects [j]是日历ID,cal是相对日历。 你有两行后 var events = CalendarApp.getCalendarById(cal).getEventsForDay(today); 但cal是一个日历,而不是它的id。为什么你不使用cal.getEventsForDay(今天)?

+0

感谢您的答复。我可以访问日历,如果我仅使用电子邮件地址,那么获取事件详细信息的位就可以工作。 我试过你使用cal.getEventsforDay(今天)的例子,但是这并没有工作,我恐怕。 –

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); 
} 
} 
}