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

使用Golang调用Google Calendar API时重复事件仅返回单次的问题

解决Google Calendar API只返回单条重复事件的问题
  • 问题根源:Google Calendar API的events.list接口默认不会展开重复发生的事件,仅返回重复事件的原始主实例,不会自动生成后续重复日期的独立条目。你遇到的10月10日和11日的销售日,大概率是同一个重复事件,因此API只返回了创建时的主实例(10号的记录)。

  • 解决方案:在API请求中添加SingleEvents(true)参数,该参数会将所有重复事件拆分为独立的单个实例返回,这样就能获取到所有重复日期的事件记录。

修改后的代码如下:

events, err := w.GCalendar.Calendar.Events.
        List(CALENDAR_ID).
        MaxResults(90).
        TimeMin(currentDate).
        TimeZone("Asia/Singapore").
        SingleEvents(true) // 新增该行,展开重复事件为单个实例
        Do()
    if err != nil {
        w.Logger.Errorf("Unable to retrieve the user's events: %v", err)
    }

// 后续处理逻辑保持不变
for _, item := range events.Items {
            date := item.Start.DateTime
            if date == "" {
                date = item.Start.Date
            }
            
            layout := "2006-01-02"
            dateTime, err := time.Parse(layout, date)
            formattedDate := dateTime.Format("02/Jan/06")

            if err != nil {
                w.Logger.Errorf("Parsing Time.err=%s", err.Error())
            }
            dateList = append(dateList, formattedDate)
}

补充注意点:

  • 确认currentDate的时间范围是否覆盖到10月11日,避免TimeMin的设置过滤掉目标日期的事件(你已指定Asia/Singapore时区,这部分无需额外调整)。
  • 如果重复事件存在例外修改(比如某一天的销售日时间调整),SingleEvents(true)也会返回这些修改后的实例,保证数据准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 22:00:58