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

