Jan 28, 2009

ical2caldav公開

iCalendar形式のカレンダーデータをCalDAVを使ってカレンダーサーバに突っ込むスクリプトを書きました。

ical2caldav-0.01.zip - ogawa - ical2caldav-0.01.zip - Google Code
ogawa - Revision 607: /trunk/ical2caldav

このスクリプトを使うと、iCalendar形式での出力に対応したカレンダーアプリケーションのデータを、簡単にGoogle Calendarに代表されるCalDAV対応のカレンダーサーバに統合できます。

応用的な使い方としては、サイボウズオフィスのカレンダーをcybozu2icalを使ってスクレイプし、そのデータをical2caldavを使ってGoogle Calendarに統合することもできます。

また、メールに添付されてきたiCal/vCalファイルをカレンダーサーバに自動的に追加する目的でも使えるでしょう。さまざまなイベントデータをカレンダーサーバに集約しやすくする(カレンダーサーバをwhiteboard的に使えるようにする)ことで、CalDAVクライアント(iCalやMozilla Sunbird)の利便性がより向上することを期待しています。

さて使い方ですが、config.yamlをこんな感じで書きます。

caldav_url: https://www.google.com/calendar/dav/calid/events/
caldav_user: user@gmail.com
caldav_passwd: password

calid (カレンダーID)の調べ方はCalDAV Developer's Guide - Google Calendar APIs and Tools - Google Codeの後半を読むと分かります。

あとはコマンドラインから以下のように呼び出します。

$ ical2caldav --filename /path/to/calendar.ics --conf /path/to/config.yaml

--filenameを省略すると標準入力から読み込みます。--confを省略するとスクリプトのあるディレクトリのconfig.yamlを読み込みます(多分)。以下は注意点。

  • まだまだ不完全です。Google Calendarで試した限りでは、統合できるデータとそうでないデータがあります。
  • iCalendarの各イベントにはUIDが必要です。UIDがないイベントは無視されます。
  • 上のダイアグラムを見て「サイボウズのカレンダーがGoogle Calendarに同期できるんだー」と思ってしまう、うっかりさんのあなたは(きっと天使のような方なのでしょうが)思慮が足りません。きっと実生活で痛い目を見ます、もう見てるかも。例えば、サイボウズ上でイベントを削除してもGoogle Calendar上では反映されません。移動は反映されると思いますが。

Perlがどうもな、という人にはcurlコマンドをお勧めしておきます。

$ curl -H 'If-None-Match: *' -u user@gmail.com:passwd -X PUT -T calendar.ics \
  https://www.google.com/calendar/dav/calid/events/

ただし、この方法ではイベントを一件のみ含むiCalendarファイルしか登録できません。これに対してical2caldavは、iCalendarファイルを読み込んでイベントごとにiCalendarファイルを生成し、それを順次CalDAVにPUTするという操作を内部的に実行してくれます。

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com