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

如何用Python高效导出指定日期范围的公开Google Calendar事件至CSV

用Python导出公开Google日历指定时间段事件到CSV的最优方案

最高效的方式是直接调用Google Calendar官方API,在请求阶段就完成日期过滤,无需额外后续处理,也不用手动导出ICS再转换。以下是具体实现步骤:

1. 前期准备

  • 前往Google Cloud控制台启用Calendar API,生成一个API密钥(公开日历无需OAuth授权,API密钥足够)。
  • 安装依赖包:
    pip install google-api-python-client python-dateutil pandas
    

2. 完整代码实现

from googleapiclient.discovery import build
from dateutil.parser import parse
import pandas as pd

# 配置参数
API_KEY = "你的API密钥"
CALENDAR_ID = "公开日历的ID"
# 设置起止日期(格式:YYYY-MM-DD)
START_DATE = "2024-01-01"
END_DATE = "2024-06-30"

# 初始化API客户端
service = build('calendar', 'v3', developerKey=API_KEY)

# 转换日期为API要求的RFC3339格式(UTC时区)
time_min = f"{START_DATE}T00:00:00Z"
time_max = f"{END_DATE}T23:59:59Z"

# 请求指定时间段的事件
events_result = service.events().list(
    calendarId=CALENDAR_ID,
    timeMin=time_min,
    timeMax=time_max,
    singleEvents=True,  # 展开重复事件为单独实例
    orderBy='startTime'
).execute()

events = events_result.get('items', [])

# 提取需要的字段(可按需调整)
event_data = []
for event in events:
    # 区分日期型和日期时间型事件
    start = event['start'].get('dateTime', event['start'].get('date'))
    end = event['end'].get('dateTime', event['end'].get('date'))
    event_data.append({
        '标题': event.get('summary', ''),
        '开始时间': parse(start).strftime('%Y-%m-%d %H:%M:%S') if 'T' in start else start,
        '结束时间': parse(end).strftime('%Y-%m-%d %H:%M:%S') if 'T' in end else end,
        '描述': event.get('description', ''),
        '地点': event.get('location', '')
    })

# 写入CSV文件
df = pd.DataFrame(event_data)
df.to_csv('calendar_events.csv', index=False, encoding='utf-8-sig')

print(f"成功导出{len(events)}个事件到calendar_events.csv")

3. 方案优势

  • 高效过滤:通过API的timeMin和timeMax参数在服务器端完成日期筛选,无需拉取全量数据后本地处理。
  • 数据直接可用:API返回结构化数据,无需解析ICS文件或二次转换JSON格式,一步生成CSV。
  • 灵活扩展:可根据需求轻松添加/修改提取字段(比如会议链接、参与者信息等)。

注意事项

  • 确保API密钥已正确启用Calendar API权限。
  • 日期格式需严格遵循RFC3339规范,代码中已封装转换逻辑,只需修改START_DATE和END_DATE即可。
  • 若日历包含重复事件,singleEvents=True会将其展开为独立事件实例,便于完整导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:41:04