[Python] icsファイルから特定の日時以降を抽出する

投稿者: | 2023年2月24日

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です