我一直在寻找我的错误的答案,但没有运气。我发现这个Google应用程序脚本能够在私有Google日历上的日期范围内进行搜索。我尝试更改出现错误的代码行上的日期。它会引发以下错误:
TypeError:无法调用null的方法"getEvents“。(第39行,文件“Code”)驳回。
引发错误的代码行是:
var events = cal.getEvents(new Date("Feburary 5, 2018 00:00:00 CST"), new Date("March 2, 2018 23:59:59 CST"));
function export_gcal_to_gsheet(){
var mycal = "https://calendar.google.com/calendar/ical/compucom.com_3hd44kal0eabhffqoqgijs6it8%40group.calendar.google.com/private-dd5e021b521802f13b6d664dd3d275fa/basic.ics";
var cal = CalendarApp.getCalendarById(mycal);
var events = cal.getEvents(new Date("Feburary 5, 2018 00:00:00 CST"), new Date("March 2, 2018 23:59:59 CST"));
var sheet = SpreadsheetApp.getActiveSheet();
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 = sheet.getRange(1,1,1,14);
range.setValues(header);
for (var i=0;i发布于 2018-03-07 00:06:29
你收到这个错误,Cannot call method "getEvents" of null,因为cal变量为空。
根据Google Calendar的文档参考getCalendarById method,方法如果日历不存在,或者您没有访问它的权限,则返回null。
您的日历id不正确,或者您没有访问该日历的权限(即该日历既未与您共享,也未公开)。当该问题得到解决时,您的脚本将能够检查其事件。
我建议修改脚本的这一部分,以:
var cal = CalendarApp.getCalendarById(mycal);
if(!cal) {
Browser.msgBox("Unable to access calendar with id=" + mycal);
return;
}
var events = cal.getEvents(....这将避免空引用,并提醒您日历隐私问题或其id问题。
发布于 2019-06-27 08:05:06
getCalendarById方法需要日历id而不是日历地址。尝试将地址替换为mycal由id变量。google日历的日历id可以在“我的日历设置”下拉菜单的“集成日历”选项中找到。它应该看起来像"blah@blah.xxx“或"blah@group.calendar.google.com”
发布于 2021-03-01 06:38:02
我试着改变mycal = calendar通过电子邮件发送到calendar id并且工作得很完美
https://stackoverflow.com/questions/49131696
复制相似问题