1つの.icsをGoogleカレンダー と iCal 両方に最適化

まずはこのURLを見てみましょう

http://67.org/67ws.ics

中身はiCalender形式のテキストファイルです
文字コードはUTF-8ですね

これが正常に読み込める環境は動作確認済環境
・Mac iCal
・MS outlook
・YagoonTime Pro
・Googleカレンダー(URLインポート)

たぶん他の.icsを扱えるソフトでも普通に読み込めると思います。

このicsファイルは
mySQL > PHP > ics と動的に生成しています。

http://67.org/ws/workshop/schedule.html
このページの作成に使っているデータそのものなので、常に最新の情報になります。

上記のicsクライアントの中で、Googleカレンダーに対応させるためには、いろいろとポイントがあります。

・開始時刻をUTCで表記
時刻の表記を世界標準時で指定します
タイムゾーンは日本にします。これで自動的に日本時間になります。
逆にDBからの出力時に世界標準時に変換しています。


X-WR-TIMEZONE:Asia/Tokyo

・UTCで表記しているよ宣言


DTSTAMP:20090404T152833Z

行末に Z をつけます。

・終了時刻を削除
・イベント時間(duration)を新しく追加
予定に対して開始時刻と終了時刻 という表現ではなく


DTSTART:20090405T020000Z
DURATION:PT7H0M0S

開始時刻+継続時間 という表現を使います。

GoogleカレンダーがiCalender形式にフル対応しているわけではないのがミソです。

村田くん<お疲れさまでした!