はじめての iCalendar でスケジュールを作成する方法

Google カレンダーや Apple の iCal に照会することができる iCalendar についてまとめています。iCalendar は iCal とも略されており、拡張子は .ics となります。詳細は下記ページを参考にしてください。

iCal については具体的な仕様の日本語訳などはありませんが、下記ページで分かりやすく仕様をまとめてくれています。本記事では下記サイトに載っていない記述を含めたサンプルやや私が躓いた点などを紹介していきます。

テンプレート

XML などと違いインデント等が無いので少し分かり辛いですが、BIGIN:hoge から始まり END:hoge で終わるようになっています。BIGIN と END で改行などをして区切ると理解しやすいかと思います。詳しい意味などについては仕様サイトを確認してください。

基本部分

色々と無駄なものを省いたり、記述を変更したりして下記のような状態で読み込むことができました。スケジュールファイルの名前については仕様サイトにはありませんが、Apple の iCal から書きだしたファイルや他の iCal 形式のファイルに設定してあったので真似して設定しています。これを設定すると URL から読み込んだ時にデフォルトの名前がこれになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
PRODID:[作成したアプリケーション?]
CALSCALE:GREGORIAN
X-WR-CALNAME:[このスケジュールファイルの名前]
X-WR-CALDESC:[このスケジュールファイルの名前]
X-WR-TIMEZONE:Asia/Tokyo
BEGIN:VTIMEZONE
TZID:Japan
BEGIN:STANDARD
DTSTART:19390101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
TZNAME:JST
END:STANDARD
END:VTIMEZONE
 
// ここからスケジュールを書いていく
 
END:VCALENDAR

スケジュール部分

スケジュール部分は下記で1セットです。複数のスケジュールがある場合は下記を複数追加していけば良いわけです。UID は設定されていなくても問題ありませんが、スケジュールが複数ある場合は UID にユニークな値を入れて置かなければ1つしかスケジュールが追加されませんので注意してください。

1
2
3
4
5
6
7
8
9
10
BEGIN:VEVENT
UID:[ユニークなID]
DTSTAMP:[スケジュールの作成日時]
SUMMARY:[スケジュールのタイトル]
DESCRIPTION:[スケジュールの詳細]
DTSTART;VALUE=DATE:[スケジュールの開始日時];
DTEND;VALUE=DATE:[スケジュールの終了日時];
RRULE:FREQ=WEEKLY;INTERVAL=1;COUNT=1
TRANSP:OPAQUE
END:VEVENT

日時の部分は Ymd\THis で入力します。

気をつけたい注意事項

下記の点でトラブルが発生しましたので気をつけてください。しっかりと不具合を検証しているわけではないので、実際に起こった問題を上手く捉えていないかもしれませんのでご了承ください。

  • 改行コードを意識すること。
  • ファイルの末尾などに余計なスペースを入れない。
  • ヘッダの Content-Type で text/calendar を設定する。
  • Google カレンダーには webcal://url でしか取り込めなかった。

おわりに

日本語情報が少なかったのでまとめておきました。間違っている点などがあればコメント欄などからご連絡頂ければと思います。

コメント

コメントは受け付けていません。