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

如何用Python+Google Calendar API筛选无结束日期的重复事件

解决Google Calendar API筛选无结束日期重复事件的问题

你之前的判断逻辑出错是因为直接检查'UNTIL='是否在event字典中——这实际是在判断字典的键,而非recurrence字段里的规则内容。正确的做法是遍历event['recurrence']数组中的每条规则字符串,确认其中没有包含UNTIL=的条目。

修改后的代码如下:

try:
    # 调用Calendar API拉取日历列表中的重复事件
    page_token = None
    for el in cal_list:
        # 修正分页逻辑,确保拉取所有页的事件
        while True:
            events = cal_service.events().list(calendarId=el, pageToken=page_token).execute()
            for event in events['items']:
                if 'recurrence' in event:
                    # 检查所有重复规则是否都不含UNTIL=标记
                    has_until = any('UNTIL=' in rule for rule in event['recurrence'])
                    if not has_until:
                        event_list.append(event)
            page_token = events.get('nextPageToken')
            if not page_token:
                break
    print(event_list)

except HttpError as error:
    print('An error occurred: %s' % error)

关键说明:

  • 用any('UNTIL=' in rule for rule in event['recurrence'])检测是否存在带结束日期的规则,只有当所有规则都不含UNTIL=时,才将事件加入结果列表。
  • 修复了原代码的分页逻辑漏洞:原代码的分页token更新放在循环外,会导致仅处理第一页数据,现在调整为在每个日历的循环内处理分页,确保拉取全部事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:05:20