getCalendarEventFeed(Zend_Gdata_Calendar_EventQueryオブジェクト)を実行することで、Zend_Gdata_Calendar_EventEntryの配列を受け取る。
getWhenという関数を用いてZend_Gdata_Extension_When Objectの配列を受け取る。
あとは、自由に必要なモノをとりだすだけ。
require_once 'Zend/Loader.php';
Zend_Loader::registerAutoload();
// ClientAuth 認証用のパラメータ
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "googleのアカウント";
$pass = "アカウントのパスワード";
// 認証済みの HTTP クライアントを作成します
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata_Calendar($client);
$calendar_id = "カレンダーのID";
$query = $service->newEventQuery();
$query->setUser($calendar_id);
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setFutureevents('true');
try {
$eventFeed = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
echo "エラー: " . $e->getMessage();
}
echo "<ul>";
foreach ($eventFeed as $event) {
$when = $event->getWhen();
$starttime = $when[0]->startTime;
preg_match("/(....)-(.*?)-(.*?)T(.*?):(.*?):(.*?)\./" , $starttime, $startrow);
$timestamp[start] = gmmktime($startrow[4], $startrow[5], $startrow[6], $startrow[2], $startrow[3], $startrow[1]);
$x = getdate($timestamp[start]);
$date = $x[year].'年'.$x[mon].'月'.$x[mday].'日'.$x[hours].'時'.$x[minutes].'分'.$x[seconds].'秒';
print $date;
echo "<li>" . $event->title . " (Event ID: " . $event->id . ")</li>";
}
echo "</ul>";
追記
・カレンダーのXMLは、自分のカレンダーの設定画面からも確認することができる。
/User/Visibility/Projectionという形でアクセスするので必要にZend_Gdata_Calendar_EventQueryにセットする。
・時間を指定して検索する場合、
//$query->setFutureevents('true');
//上のコードを消して、下記を追加する必要がある。
$query->setStartMin('2009-07-23');
$query->setStartMax('2009-07-30');
0 件のコメント:
コメントを投稿