えっと、このサイトは技術系サイトなので、ちょっと技術的なフォローしておきます。
今回 Google Calendar に接続するにあたり、使うことにしたのが Zend_Gdata というライブラリです。
この API は phpdoc で公開されているのですが、これがどうにもがっかりな使えなさっぷりなので、マニュアルを読んでもよくわからなかった点をまとめときます。
■ Google Calendar から取得できるデータ
Google Calendar から取得した1件のスケジュールデータはZend_Gdata_Calendar_EventEntry です。
このクラスから主要な情報を取得する方法は以下のようになります。
- $eventFeed = $service->getCalendarEventFeed($query);
- foreach ($eventFeed as $event) {
- // タイトル
- $summary = mb_convert_encoding($event->title->text, ‘SJIS‘, ‘UTF-8‘);
- // 更新日時("2009-02-27T16:53:43.000Z")
- $upd = $event->updated->text;
- // 開始日時(2009-03-27T10:00:00.000+09:00)
- $start = $event->when[0]->getStartTime();
- // 終了日時(2009-03-27T11:00:00.000+09:00)
- $end = $event->when[0]->getEndTime();
- // 場所
- $location = mb_convert_encoding($event->where[0]->getValueString(), ‘SJIS‘, ‘UTF-8‘);
- // 説明
- $detail = mb_convert_encoding($event->content->text, ‘SJIS‘, ‘UTF-8‘);
- }
取得できる情報は UTF-8 なので必要に応じて変換する必要があります。(iスケジュールは Shift-JIS)
日時情報はタイムゾーンなど統一されていませんが、基本的に strtotime 関数の引数に直接指定できます。
ただし、Google Calendar 上で終日の指定をしたときは”Y-m-d”形式となり、時間が含まれないフォーマットで返却されてきます。
■ quoted-printable
Zend_Gdata とは関係ありませんが、iスケジュールでは日本語を quoted-printable に変換しなければなりません。
PHP には quoted_printable_encode という関数がありますが、これは PHP5.3 以降でしか使えません。
現時点では PHP5.3 以上を使えないことも多いと思います。そのときはマニュアルを参考に自分で関数を用意します。
- if (!function_exists("quoted_printable_encode")) {
- function quoted_printable_encode($string) {
- return preg_replace(‘/[^\r\n]{73}[^=\r\n]{2}/‘, "$0=\r\n",
- str_replace("%", "=", str_replace("%0D%0A", "\r\n",
- str_replace("%20"," ",rawurlencode($string)))));
- }
- }
今後 PHP5.3 以降にバージョンアップする可能性を考えて function_exists で判定しておけば万全です。
■ 参考
作ろうiモードコンテンツ:スケジューラデータフォーマット | サービス・機能 | NTTドコモ
[PHP]Zend Google Data Client Libraryで gCal APIs を使う[その3]|株式会社 フラッツ
- Newer: はわわ~EXカード当選したのです~
- Older: Google Calendar と iスケジュールをほげってみた@SH-04A
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.magellanic.net/archives/321/trackback
- Listed below are links to weblogs that reference
- Google Calendar と iスケジュールをほげってみた(続き) from Olen Onnellinen 2



