Google カレンダーにはエクスポート機能がありますが、期間指定で予定のエクスポートができずに困っていました。そこで、いったん全部icsファイルにエクスポートした後、Pythonで特定の日時以降を抽出しました。
方法
簡単なのでコードを載せてしまうのが一番手っ取り早いでしょう。「ics」というライブラリを用いることで、python から ics ファイルを操作できるようです。
pip install ics
ソースコードはこちら。自分の無知で気付かなった点としては、
- タイムゾーン情報を含む datetime 型(icsファイルから得られる)と、タイムゾーン情報を含まない datetime 型(datetim.today() などで得られる)の比較はできないこと
- encoding を 明示的に ‘utf-8’ で指定しないと日本語が文字化けすること
くらいだと思います。
from ics import Calendar
from datetime import datetime, timezone, timedelta
filename = 'カレンダー名.ics'
tz_jst = timezone(timedelta(hours=9)) # JST
with open(filename,'r', encoding='utf-8') as f:
ics_str = f.read()
gcal = Calendar(ics_str)
new_gcal = Calendar()
for event in gcal.events:
if event.begin.datetime >= datetime(2023,2,24,tzinfo=tz_jst):
new_gcal.events.add(event)
print(event.name)
with open('new_' + filename, 'w', encoding='utf-8') as f:
f.write(new_gcal.serialize())