5

特定のカレンダーのイベントフィードを取得する方法について長い質問がありましたが、投稿する前に解決策を見つけました(私は思います)。しかし、解決策があっても、私はこのプロセスについて何が欠けているのか疑問に思っています。単一のカレンダーのイベントフィードを取得する(またはそのフィードを検索する)には、次のようにします。

  • 認証する(明らかに)
  • カレンダーのリストを取得します:getCalendarListFeed();
  • 'calendar'オブジェクトの1つからidプロパティを取得します
  • 変更:... / calendar / feeds / default / XXX%40YYY
  • 宛先:... / calendar / feeds / XXX%40YYY / private / full
  • それをgetCalendarEventFeed()に渡して、そのカレンダーを照会します。

IDを操作する必要があるのはなぜですか?Zend_Gdataのドキュメントは、GoogleとZendの両方のサイトに分散しているようです。getCalendarListFeed()から利用可能なプロパティに関する適切な参照を見つけられなかったので、ID以外のものを取得する必要がありますか?

もっと簡単な方法が必要なようです-私はここで何が欠けていますか?

4

2 に答える 2

3

IDを操作する必要はありません。

プロトコルガイドを見ると、必要なURLを含む要素があり<link rel="alternate" .../>ます。

PHPクライアントでは、次のコマンドを呼び出すことでこのリンクを取得できます。

// $entry is an instance of Zend_Gdata_Calendar_ListEntry
$link = $entry->getAlternateLink()->getHref();

また、お探しのドキュメントはこちらです:http: //framework.zend.com/apidoc/1.9/Zend_Gdata/Calendar/Zend_Gdata_Calendar_ListEntry.html

于 2009-12-22T09:13:23.383 に答える
2

私はこれと同じ質問に対する答えを探していましたが、最終的に次のことを思いつきました。

$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$Client = Zend_Gdata_ClientLogin::getHttpClient('googleaccount','googlepass',$service);
$Service = new Zend_Gdata_Calendar($Client);

$Query = $Service->newEventQuery();
$Query->setUser('calendarid'); # As you know, you can obtain this with getCalendarListFeed()
$Query->setVisibility('public');
$Query->setProjection('full');
$Query->setOrderby('starttime');
$Query->setFutureevents('true');

最初に私を思いとどまらせたのは、通話の「ユーザー」部分が実際にはカレンダーIDであるということでした。次に、次のようなことを行うことができます。

$events = $Service->getCalendarEventFeed($Query);
foreach ($events as $Event)
{
   // work with Event object here...
}

(上記は実際にはtry / catchで囲む必要がありますが、ここではそれを行うのが面倒です。)

于 2009-12-31T20:54:49.230 に答える