获取非默认日历当日事件报错:.getEventsForDay is not a function
解决
.getEventsForDay is not a function错误及非默认日历事件提取方法 错误原因
CalendarApp.getCalendarsByName('日历名称')返回的是Calendar对象数组,而非单个Calendar实例。你直接对数组调用getEventsForDay方法,自然会触发“不是函数”的错误——数组本身没有这个方法,只有单个Calendar对象才有。
正确写法
方法1:取数组第一个匹配的日历(假设同名日历唯一)
// 获取同名日历数组,取第一个匹配项 let myCalendar = CalendarApp.getCalendarsByName('MyCalendarName')[0]; // 检查日历是否存在,避免undefined报错 if (myCalendar) { let myEvent = myCalendar.getEventsForDay(new Date(2023, 3, 3), {search: 'Event Title'}); // 处理获取到的事件 console.log(myEvent); } else { console.log('未找到指定名称的日历'); }
方法2:遍历所有同名日历(处理多个同名日历的情况)
如果存在多个同名日历,可以遍历数组逐个处理:
let calendars = CalendarApp.getCalendarsByName('MyCalendarName'); calendars.forEach(calendar => { let events = calendar.getEventsForDay(new Date(2023, 3, 3), {search: 'Event Title'}); console.log(`从日历${calendar.getName()}中找到${events.length}个匹配事件`); // 进一步处理事件 });
额外注意事项
- 日期参数:
new Date(2023, 3, 3)中的月份是从0开始计数的,这里实际代表2023年4月3日,而非3月3日,注意不要混淆。 - 权限:确保脚本拥有访问该非默认日历的权限,否则会返回空数组或报错。
内容的提问来源于stack exchange,提问作者DD1229
相关产品推荐
相关产品推荐

