Home » March 2007 » Cybozu2iCal 0.12公開

Cybozu2iCal 0.12公開

サイボウズオフィス6のカレンダーアイテムを取得して、iCalendar形式に変換するスクリプト、Cybozu2iCalを久々に更新しました。

Cybozu2ICal - Ogawa::Code - Trac
Cybozu2ICal.ja_JP - Ogawa::Code - Trac

0.10でサイボウズカレンダーの反復イベントに対応したつもりだったのですが、どうも不十分だったようでいくつかフィードバックをいただきました。遅くなりましたが、0.12ではそれらの対策をしたつもりなのでご確認いただければと思います。

RFC2445: Internet Calendaring and Scheduling Core Object Specification (iCalendar)を読むと、反復条件(RRULE)では、終了日時UNTILは「日付」または「UTC時刻」で指定することになっています。0.11までは、すべての反復イベントに対してUNTILに「日付」のみを指定していましたが、0.12ではなるべく標準に即すべく、時刻指定のある反復イベントのUNTILはUTC時刻で指定し、時刻指定のない反復イベントのUNTILは日付で指定するようにしました。

また、この修正をしてもGoogle Calendarには時刻指定のない反復イベントの終了日時が一日早まってしまうバグがある様子です。私の勘違いなのかもしれませんが。

2007年3月21日から25日までの終日イベントは以下のように指定できるはずです。

DTSTART;VALUE=DATE:20070321
DTEND;VALUE=DATE:20070322
RRULE:FREQ=DAILY;UNTIL=20070325

しかし、Google Calendarでは24日までのイベントとして認識されていまいます。なんとなく、UNTILの日付(20070325)を時刻(20070325T000000)として解釈しているような気がします。

ところが、こんな具合に、

DTSTART;VALUE=DATE:20070321
DTEND;VALUE=DATE:20070322
RRULE:FREQ=DAILY;UNTIL=20070325;WKST=SU

RRULEにWKST=SUオプション(週の開始を「日曜」とするオプション)を指定すると、Google Calendarの問題が回避できることを発見したので、cybozu2ical 0.12はこの回避策を採用しています。

関連:
Cybozu2iCal 0.10公開 - Ogawa::Memoranda
Cybozu Office 6のカレンダーをGoogle Calendarで表示する - Ogawa::Memoranda

このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/499

Links referred to this entry

Comments (0)

Post a comment

Remember me?