PHP Google Calendar API - 更新活动

时间:2012-06-06 21:13:48

标签: php google-calendar-api

这是一个新手问题,我还不熟悉Google API


您好,

我正在使用Google提供的代码(https://developers.google.com/google-apps/calendar/downloads)附带一些示例(最初因为它似乎更新)。

我正在成功检索日历,例如“calendar / simple.php”显示(OAuth2设置正确)。

之后,我正在做这个并且它有效(这是一个非必要的代码,只是为了检查事件是否可以正确检索而没有任何错误):

$test = $cal->events->get("calendar@gmail.com","longeventcodegivenbygoogle");

现在,我希望能够设置特定事件的某些值。

$event = new Event();
$event->setLocation('Somewhere');
$test = $cal->events->update("calendar@gmail.com","longeventcodegivenbygoogle",$event);

但它给了我:

( ! ) Fatal error: Uncaught exception 'apiServiceException' with message 'Error calling PUT https://www.googleapis.com/calendar/v3/calendars/calendar@gmail.com/events/longeventcodegivenbygoogle?key=myapikey: (400) Required' in C:\wamp\www\test\Gapi3\src\io\apiREST.php on line 86
( ! ) apiServiceException: Error calling PUT https://www.googleapis.com/calendar/v3/calendars/calendar@gmail.com/events/longeventcodegivenbygoogle?key=myapikey: (400) Required in C:\wamp\www\test\Gapi3\src\io\apiREST.php on line 86

我做错了什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

为了更新事件,首先检索它,然后更改其属性的值,而不是实例化新的事件。

请尝试以下代码:

$event = $cal->events->get("calendar@gmail.com","longeventcodegivenbygoogle");
$event->setLocation('Somewhere');
$updated = $cal->events->update("calendar@gmail.com", $event->getId(), $event);

答案 1 :(得分:3)

Claudio Cherubino给出了真正的解决方案,调用事件Class来创建事件对象。

默认情况下,似乎get()不返回事件对象而是返回数组。

$event = new Event($cal->events->get("calendar@gmail.com","longeventcodegivenbygoogle"));
$event->setLocation('Somewhere');
$updated = new Event($cal->events->update("calendar@gmail.com", $event->getId(), $event));

如果你不使用update()或get()提供的数组创建事件,它将无法工作,因为它是这些调用返回的简单数组。