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 でしか取り込めなかった。
おわりに
日本語情報が少なかったのでまとめておきました。間違っている点などがあればコメント欄などからご連絡頂ければと思います。
コメント