私は誰かのためにブログを作成中です。彼らは大量のデータを取り込み、それをデザインにしっかりと統合したいと考えているため、標準のウィジェットは使えません。それは今まで大丈夫だった。
彼らはさまざまなイベントを含むパブリック アクセスの Google カレンダーを持っており、次の 5 つのイベント (「今」以降) を取得し、イベントのタイトル、イベントのインスタンスの開始時、その場所、および gcal へのリンクを表示したいと考えています。アイテム。
私が見る限り、gcal フィードを取得するための 3 つのオプションがあります。XML は論理的な選択のように思えますよね?
XML フィードは (atom フィードの説明の後に) 実際にはたくさんの安っぽい HTML です。これを解析することは可能ですが、定期的なイベント (カレンダーにはいくつかあります) はそのイベントの最初のインスタンスのみを表示し、(明らかに) 次のインスタンスがいつであるかに関する情報を表示しないため、背後では大きな苦痛です。
それで、私は少し密度が高いだけですか?XML API を使ってハッキングしたいものを表示する方法はありますか?
それとも、iCal を使った方がうまくいくでしょうか? 私は PHP で iCal を使用したことがありません。
編集:答えのおかげで、Zend Gdataパックをダウンロードしました(ありがたいことに、Zend Frameworkの残りの部分とは別のものです)。私が必要とすることは、これと同じくらい簡単でした:
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_HttpClient');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
$service = new Zend_Gdata_Calendar();
$query = $service->newEventQuery();
$query->setUser('your_user@googlemail.com');
$query->setVisibility('public');
$query->setProjection('full');
$query->setStartMin(date('Y-n-j'));
$query->setStartMax(date('Y-n-j', time() + (60*60 *24*8)));
$query->setOrderby('starttime');
try { $eventFeed = $service->getCalendarEventFeed($query); }
catch (Zend_Gdata_App_Exception $e) { return; }
foreach ($eventFeed as $event)
echo $event; // do something real here
これで 1 週間分のイベントが取得できます (setStartMax は排他的であるため、8 日後に設定する必要があります)。
これが将来誰かに役立つことを願っています。