如何通过Google Script获取Google Groups组成员的日历ID
解答
获取其他用户有效calendarId的方法
对于谷歌日历来说,用户的默认主日历ID和用户的谷歌账号邮箱完全一致,如果你需要访问对方的主日历,直接将对方的完整邮箱地址作为calendarId传入即可。
如果你需要获取对方非主日历的其他日历ID,可以通过以下方式操作:
- 调用
Calendar.CalendarList.list()方法拉取你当前账号有权限访问的所有日历列表,遍历返回结果中的id字段,结合日历名称、所有者邮箱等信息筛选出目标日历的ID - 如果你是谷歌Workspace域管理员,可通过域管理权限直接拉取域内所有用户的日历ID列表
入参正确但返回结果不符的排查方案
- 首先确认当前运行脚本的账号,已经获得目标日历的至少「查看所有事件详情」权限,权限不足时接口只会返回基础忙闲信息甚至报错,不会返回完整事件内容
- 核对传入的
calendarId拼写是否正确,没有多余空格、符号错误或大小写偏差 - 检查
Calendar.Events.list方法的入参过滤规则:比如timeMin、timeMax的时间范围是否覆盖了目标事件的时间,是否添加了关键词过滤、参与者过滤等限制条件导致匹配结果不符合预期 - 可以先在网页版谷歌日历中手动添加目标日历,确认你可以正常看到对应事件后再运行脚本调试,排除目标日历本身无对应事件的问题
代码示例
var TEAM_CALENDAR_ID = 'team_calender_id' var GROUP_EMAIL = 'group_email@group.com'; var KEYWORDS = ['vacation'] var MONTHS_IN_ADVANCE = 3; // 替换为目标用户的谷歌账号邮箱即可访问对方主日历 var TARGET_USER_CALENDAR_ID = 'user@yourdomain.com'; function listTargetUserNext10Events() { var now = new Date(); var events = Calendar.Events.list(TARGET_USER_CALENDAR_ID, { timeMin: now.toISOString(), singleEvents: true, orderBy: 'startTime', maxResults: 10 }); // 后续事件处理逻辑 }
内容的提问来源于stack exchange,提问作者newbieeyo
相关产品推荐
相关产品推荐

