概要
Google Calendar API を使って、既存のカレンダーアプリの内容をGoogle Calendarに反映する。
ということをしたかった。。。がしばらくはまったことのメモ。
環境
- CakePHP
- Zend Gdata 1.11.2
ZendのGdataを使えばさくさくっとできるだろうと思っていたが、
APIのバージョンが上がっていることで、一部うまく動かない模様。
具体的には、ZendのSiteのドキュメントを見ながら値を設定したが、
イベント作成の時に設定したcontentが登録されない。
時間やタイトル、場所等はちゃんと設定された。
JSON-C
バージョン2からの新しいデータフォーマットのようだ。
JSON-C
対処
検索してみると、githubに新しいフォーマットで書かれたものを見つけた。
Google-Calendar-API-PHP-Class
まだバージョン2のApiも完全ではないようなので、出来る機能は限られているようだ。
でもこれを使うとちゃんとイベント作成時に、contentも反映されてた。
ただしバージョン2では名前がdetailsになっている。
必要だった物
- pecl_http
- libcurl-devel
インストール
#yum -y libcurl-devel
#pecl install pecl_http
peclインストール時にエラーがでたら、他のものも必要かもしれません。
設定
ファイルの配置
app/libs/gcalendar.class.php
処理実行
e.g. app/contorllers/hoge_controller.php
<?php public funciton googlecalendar(){ App::import('Lib', 'GCalendar', array('file' => gcalendar.class.php)); $gcalendar = new GCalendar('your_email', 'your_password'); if($gcalendar->authenticate()){ $gcalendar->createEvent(....); // 実行したい処理 ........ } } ?>