snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iCalendar の繰り返し予定の例外

iCalendar の繰り返し予定は RRULE で指定する事は分った。 でも、その繰り返し中の特定の日だけ日時をずらしたり削除したり する事がある。これらはどう表現するのか。 Google カレンダでそういう予定を作成してエクスポートして内容を見てみた。

元になる予定として、2009/08/26 9:00~10:00 が 8/29 まで繰り返す予定を定義。
BEGIN:VEVENT
DTSTART;TZID=Asia/Tokyo:20090826T090000
DTEND;TZID=Asia/Tokyo:20090826T100000
RRULE:FREQ=DAILY;UNTIL=20090829T000000Z;WKST=MO
UID:7e8oi2hfvtntpvq0iv9819fqc4@google.com
END:VEVENT

まず変更例外の実験。 8/27 だけ 10:00~11:00 に変更してみた。
すると、上記の VEVENT はそのままに、以下が追加された。
BEGIN:VEVENT
DTSTART;TZID=Asia/Tokyo:20090827T100000
DTEND;TZID=Asia/Tokyo:20090827T110000
UID:7e8oi2hfvtntpvq0iv9819fqc4@google.com
RECURRENCE-ID;TZID=Asia/Tokyo:20090827T090000
END:VEVENT
この DTSTART と DTEND は変更後の日時を表している。 UID が元の予定の UID 、 RECURRENCE-ID が変更した日の DTSTART を表している。 UID と RECURRENCE-ID で、 どの VEVENT のいつの繰り返し日を変更したかが分る様だ。

次に削除例外の実験。 8/28 を削除してみた。
すると、繰り返し元の予定の VEVENT 中に EXDATE 削除した予定の DTSTART が追加された。
BEGIN:VEVENT
DTSTART;TZID=Asia/Tokyo:20090826T090000
DTEND;TZID=Asia/Tokyo:20090826T100000
RRULE:FREQ=DAILY;UNTIL=20090829T000000Z;WKST=MO
EXDATE;TZID=Asia/Tokyo:20090828T090000
UID:7e8oi2hfvtntpvq0iv9819fqc4@google.com
END:VEVENT
8/27 も削除してみた。
すると EXDATE が 2 つになり、 RECURRENCE-ID が定義された VEVENT が削除された。
BEGIN:VEVENT
DTSTART;TZID=Asia/Tokyo:20090826T090000
DTEND;TZID=Asia/Tokyo:20090826T100000
RRULE:FREQ=DAILY;UNTIL=20090829T000000Z;WKST=MO
EXDATE;TZID=Asia/Tokyo:20090828T090000
EXDATE;TZID=Asia/Tokyo:20090828T090000
UID:7e8oi2hfvtntpvq0iv9819fqc4@google.com
END:VEVENT
元の予定の VEVENT 中に削除した日の EXDATE が追加されていくらしい。
スポンサーサイト

« Palm Desktop の予定データを iCalendar 形式に変換|Top|Google カレンダでウェブから作成できない予定をインポート »

コメント

おおお

いろいろと便利な情報ありがとうございます。
大変勉強になります。
平日のみとか、休日の場合前倒し、後ろ倒しとかも設定できるようになるんでしょうか?
うーん。条件が増えると難しいですね。

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://snbhsmt.blog110.fc2.com/tb.php/119-65d6895c

Top

HOME

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。