使用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
相关产品推荐
相关产品推荐

