我在创造了别人博客的过程。他们希望在大量的数据拉和相当紧密地集成入设计,所以标准的部件是一个没有没有。这一直很好,直到如今。

他们有一个公共访问谷歌日历,上面有各种各样的活动,我想抓住未来5个事件(从“现在”起),当事件的该实例启动时,它的位置和一个链接显示该事件的标题,到GCAL项。

这是我所看到的,有三个选项抓兆千卡提要:XML,iCal或HTML(包含一些非常重击JSON)。 XML似乎是合乎逻辑的选择,是吗?

井XML进料是(原子饲料描述之后)实际上只是很多faffy HTML的。解析这是可能的,但它在背后隐藏着巨大的痛苦,因为重复事件(其中有日历上的几个)只显示该事件的第一个实例,并在接下来的实例是(显然)的任何信息。

所以我只是作为一个有点迟钝?有没有一种方法来展示我只想通过XML API黑客?

或者我将通过iCal中有更好的运气?我从来没有做过任何的iCal用PHP,所以如果你有,请提出你用来做简单的事情为自己的任何库。

修改由于答案,我下载了Zend GDATA包(其,幸运的是,独立于Zend框架的其余部分)。做什么,我需要的是那么容易,因为这样的:

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

这应该让你一个星期的事件(是setStartMax被排斥所以设置它在未来8天是必需的)。

希望这有助于在未来别人。

有帮助吗?

解决方案

另一种选择是使用Zend谷歌日历库,它是Zend Framework的一个独立部分,所以你并不需要整个Zend框架

http://framework.zend.com/manual/en /zend.gdata.calendar.html

这并不难,一旦你看看例子。

其他提示

在情况下,它可以帮助别人,我想通了,如何让非默认的日历。如果你进入你的谷歌日历和查找日历设置,在底部有被格式化像一个很长的电子邮件地址,日历ID。(例如:adg5jcq8gk7lsp6rrbmrm8c@group.calendar.google.com)使用与查询 - $ > SETUSER()使用该特定的日历。

作为抬起头来使用代码的人,echo $event;没有为我显示任何东西,所以我想查询是失败。

下面是一个代码段应打印的东西:

foreach ($eventFeed as $event) {
  echo $event->title->text . '<br />';
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top