You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用服务账号创建Google Calendar Meet事件遇400错误求助

问题解决方案

错误googleapi: Error 400: Invalid conference type value., invalid的核心原因是会议类型参数值不匹配当前API版本要求,结合你使用的google.golang.org/api@v0.213.0/calendar/v3版本,按以下步骤修复:

1. 修正会议类型参数

将ConferenceSolutionKey.Type的值从"hangoutsMeet"改为"googleMeet"。Google Calendar API在后续版本中已将Meet会议的类型标识更新为googleMeet,旧值hangoutsMeet已不再被支持。

2. 修复变量名重复问题

代码中创建事件时的变量event被重新声明,虽然不影响编译,但会导致原事件定义的变量被遮蔽,建议重命名返回的事件变量(比如createdEvent)。

3. 正确获取Meet会议链接

原代码使用event.HangoutLink获取链接,该字段已逐渐被弃用,建议从ConferenceData.EntryPoints中提取官方推荐的会议链接。

修改后的完整代码

func CreateEvent(startDate time.Time, duration int, headerText string) (string, error) {
    endDate := startDate.Add(time.Hour * time.Duration(duration))
    event := &calendar.Event{
        Summary:     headerText,
        Description: "AutomateCreate",
        Start: &calendar.EventDateTime{
            DateTime: startDate.Format(time.RFC3339),
            TimeZone: "Europe/Moscow",
        },
        End: &calendar.EventDateTime{
            DateTime: endDate.Format(time.RFC3339),
            TimeZone: "Europe/Moscow",
        },
        ConferenceData: &calendar.ConferenceData{
            CreateRequest: &calendar.CreateConferenceRequest{
                ConferenceSolutionKey: &calendar.ConferenceSolutionKey{
                    Type: "googleMeet", // 修正为当前API支持的类型
                },
                RequestId: uuid.New().String(),
            },
        },
    }
    // 重命名返回变量,避免遮蔽原event
    createdEvent, err := calendarService.Events.Insert("calendar@gmail.com", event).ConferenceDataVersion(1).Do()
    if err != nil {
        return "", err
    }

    // 从ConferenceData中提取Meet链接
    var meetLink string
    if createdEvent.ConferenceData != nil && len(createdEvent.ConferenceData.EntryPoints) > 0 {
        for _, entry := range createdEvent.ConferenceData.EntryPoints {
            if entry.EntryPointType == "video" {
                meetLink = entry.Uri
                break
            }
        }
    }

    text := createdEvent.Summary + "\n" + meetLink
    return text, nil
}

额外说明

  • ConferenceDataVersion(1)参数必须保留,这是创建带会议的事件时API要求的必要参数。
  • RequestId使用UUID确保唯一性,这部分无需修改。

内容的提问来源于stack exchange,提问作者lorenso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:51:03