Google Workspace日历资源写入权限疑问及相关API使用咨询
问题1 两套日历列表不一致的原因及操作方法
不是两套日历数据,是两个API的定位完全不同:
CalendarList.list返回的是当前授权用户个人日历列表中已订阅的日历,对应谷歌日历网页端左侧“我的日历”“其他日历”展示的内容,未主动订阅的全域资源日历(比如全公司会议室日历)不会出现在返回结果中- 管理目录侧的
Resources.calendars.list返回的是Google Workspace全域下所有已注册的日历资源(含全部会议室、设备日历等),不管当前用户是否订阅都会全量返回
你不需要先将资源日历添加到个人日历列表,直接调用Events.insert/Events.patch/Events.update接口即可操作资源日历的事件,核心注意两点:
- 调用接口时,
calendarId参数填目标资源日历的ID(即管理目录API返回的资源日历id字段,一般为xxx@resource.calendar.google.com格式) - 如果是给已有会议添加会议室,找到原会议所属的用户/日历ID,获取原事件的
attendees字段,将对应会议室的资源日历ID作为参会者添加即可,和UI端添加会议室的逻辑完全一致
问题2 从已有会议中移除会议室的实现方法
直接调用Events.patch(推荐,增量修改更简便)或Events.update接口即可,操作步骤:
- 调用
Events.get接口,传入会议所属的日历ID和事件ID,获取当前事件的完整数据,找到attendees字段中对应会议室的条目 - 可以直接将该条目从
attendees数组中删除,也可以将该条目的responseStatus设为declined,两种方式都可以释放该会议室的预约资源 - 将修改后的
attendees数组作为参数传入Events.patch接口,调用成功后会议室即被释放,其他用户可正常预约该时间段的资源
新手常见避坑提示
- 操作资源日历前确认当前超级账号对目标资源日历有编辑权限,默认全域超级管理员拥有所有资源日历的编辑权限,若遇到403权限报错可先到Workspace管理后台核对资源日历的权限配置
- 修改事件参会者时可将
sendUpdates参数设为none,避免给所有参会者发送邮件通知,更适配后台静默修改的场景
内容的提问来源于stack exchange,提问作者Sparsh
相关产品推荐
相关产品推荐

