Google Calendar API v3:使用第三方会议系统时禁用自动会议创建
解决Google Calendar API v3创建事件时禁用自动生成会议的问题
我之前帮朋友排查过一模一样的问题——用户日历开了自动生成Google Meet/Hangouts的选项,用API创建事件时怎么都绕不开自动生成的会议链接,试了各种conferenceData组合都没用。后来翻透官方文档才搞明白,核心是两个容易被忽略的配置点:
必须先开启会议数据处理
首先,请求里必须指定conferenceDataVersion: 1,这个参数是让API识别并处理conferenceData配置的开关,没加的话,你写再多会议配置都是白搭。
显式禁用所有自动会议生成
当用户有自动创建会议的全局设置时,API默认会遵循这个规则,但你可以通过显式指定none类型的会议方案来覆盖它,具体配置要满足两个要求:
- 给
conferenceData.createRequest.requestId传一个唯一字符串(比如UUID,用来避免重复创建会议) - 设置
conferenceData.createRequest.conferenceSolutionKey.type为"none"
完整请求示例
JSON请求体(POST到日历事件接口)
{ "summary": "第三方会议测试", "start": { "dateTime": "2024-05-20T10:00:00+08:00", "timeZone": "Asia/Shanghai" }, "end": { "dateTime": "2024-05-20T11:00:00+08:00", "timeZone": "Asia/Shanghai" }, "conferenceData": { "createRequest": { "requestId": "unique-uuid-123456", "conferenceSolutionKey": { "type": "none" } } } }
注意:请求URL要带上conferenceDataVersion=1参数
比如:POST https://www.googleapis.com/calendar/v3/calendars/primary/events?conferenceDataVersion=1
客户端库示例(以Python为例)
如果你用Google的Python客户端库,代码可以这么写:
from googleapiclient.discovery import build import uuid # 假设已经获取了有效的credentials service = build('calendar', 'v3', credentials=creds) event_body = { 'summary': '第三方会议测试', 'start': { 'dateTime': '2024-05-20T10:00:00+08:00', 'timeZone': 'Asia/Shanghai', }, 'end': { 'dateTime': '2024-05-20T11:00:00+08:00', 'timeZone': 'Asia/Shanghai', }, 'conferenceData': { 'createRequest': { 'requestId': str(uuid.uuid4()), # 生成唯一ID 'conferenceSolutionKey': { 'type': 'none' } } } } # 插入事件时必须指定conferenceDataVersion=1 created_event = service.events().insert( calendarId='primary', body=event_body, conferenceDataVersion=1 ).execute() print(f"事件创建成功,ID: {created_event['id']}")
这样创建出来的事件就不会带有自动生成的Google Meet链接,你可以在事件的description或者location字段里手动添加第三方会议的链接。
内容的提问来源于stack exchange,提问作者lrossi
相关产品推荐
相关产品推荐

