使用API创建Google Calendar会议时如何设置免审批加入
Google Calendar v3 API 不支持在创建日历事件的流程中直接配置Hangouts Meet会议的「Quick Access(快速访问)」参数。
原因说明
Quick Access 是Google Meet侧的会议管控属性,不属于Calendar API 公开的Event资源可写字段:你当前代码里使用的ConferenceData结构,仅支持指定会议解决方案、传入创建请求ID,没有暴露入会审批、快速访问相关的配置字段,创建事件时传自定义参数也会被接口直接忽略。
另外注意你对Quick Access的规则描述写反了:
- 开启Quick Access:被邀请的参会者、同组织域内用户可直接加入会议,无需主持人审批
- 关闭Quick Access:所有参会者必须在等候室等待主持人手动审批才能入会
可行实现方案
你可以分两步实现需求:
- 用你现有的Java代码调用Calendar API创建带Hangouts Meet的日历事件,保存接口返回结果里的
conferenceId(即对应Meet会议的唯一标识)
你当前使用的创建事件代码如下:
Event event = new Event()
.setSummary(calevent.getTitle())
.setDescription(calevent.getDescription());
ConferenceSolutionKey conferenceSolutionKey = new ConferenceSolutionKey().setType("hangoutsMeet");
CreateConferenceRequest createRequest = new CreateConferenceRequest().setRequestId("xxsdswwadx")
.setConferenceSolutionKey(conferenceSolutionKey);
ConferenceData conferenceData = new ConferenceData().setCreateRequest(createRequest);
event.setConferenceData(conferenceData);
DateTime startDateTime = convertDate(calevent.getStartDateTime());
EventDateTime start = new EventDateTime()
.setDateTime(startDateTime)
.setTimeZone("Europe/London");
event.setStart(start);
DateTime endDateTime = convertDate(calevent.getEndDateTime());
EventDateTime end = new EventDateTime()
.setDateTime(endDateTime)
.setTimeZone("Europe/London");
event.setEnd(end);
```
2. 拿到conferenceId后,调用Google Meet API的会议更新接口,将对应会议的quickAccess字段设置为true即可。调用该接口需要提前给授权账号开通Meet相关的OAuth权限范围,确保账号对该会议有编辑权限。
注意事项
- 不要在日历事件创建请求发出后立刻调用Meet接口修改配置,需要等Calendar接口返回创建成功、Meet会议资源正式生成后再发起请求,否则会出现资源不存在的报错。
- 如果你的使用场景是组织内统一配置,可以在Google Workspace管理后台给全组织设置Meet会议默认开启Quick Access,这样通过API创建的会议会默认继承组织配置,不需要逐个修改。
内容的提问来源于stack exchange,提问作者jvence

