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())