いきさつ
Python温泉 #6で@yoshioriが「自動化できるところは自動化しないとー」と言っていて「たしかに!」と思ったので思いついた自動化をしてみようと考えた。でもって、ATNDでイベント登録して忘れてることがちょいちょいあるので忘れないようにGoogle Calendarに自動で登録できるようにしてみた。
参考
使い方
Google CalendarのEmailアドレスとパスワード、あとATNDのユーザIDを渡してあげます。
$ python atnd2gcal.py -e <email address> -p <password> -a <atnd user id>
おおむね向こう2ヶ月分のイベントを持ってきてくれるはずです。*1
既知の問題
削除されたイベントが返ってきてしまう
上記のコードではもし同一の名前のイベントが同じ日にカレンダーに登録されてたら更新、なかったら新規作成というように判断しています。しかし一回登録されたイベントをGoogle CalendarのWeb UIから削除しても、gdata-python-clientのcalendar_service.CalendarQueryは削除されたはずのイベントを取ってきてしまうのです。
そのため存在しないはずのイベントを更新するためステータスコードは200が返ってきていても実際は作成されていないという状況になります。これはgdata-python-clientのバグだと思っているのですが、もし回避策を知っている方がいたら教えてください。
まとめ
まあバグはあるもののある程度動いてるんでcronにつっこんでおきます。こういう自動化をするのは楽しいですね。