将事件插入Google日历会创建重复项(php)

时间:2012-03-22 13:37:35

标签: php synchronization google-calendar-api

我正在编写一个php脚本,负责从项目管理系统中检索日历事件,并将其与用户的Google日历同步。我有能够创建事件并将它们推送到Google日历的代码,但我遇到的问题是可以使用相同的参数多次创建事件。我创建活动的代码如下(来自Google Calendar API文档):

$event = new Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new EventDateTime();
$start->setDateTime('2012-03-21T10:00:00.000-04:00');
$event->setStart($start);
$end = new EventDateTime();
$end->setDateTime('2012-03-21T11:25:00.000-04:00');
$event->setEnd($end);
$attendees = array($attendee1);
$event->attendees = $attendees;

$createdEvent = $calendarService->events->insert('myCalendarId', $event);

如果我运行此代码,它会根据需要创建事件。现在,也许我没有正确地做到这一点,但这是我将用于同步日历的代码。我将在用户浏览网站时运行此代码,但问题是它已经创建的任何事件都将重新创建。

澄清:用户在25日上午11点召开会议。代码运行,并将会议插入Google。代码的下一次迭代将再次插入相同的会议。

如何判断Google中创建的事件是否与我系统中当前的事件相同?我可以枚举来自谷歌的事件,这些事件确实暴露了ID和eTag,但是它们与来自我的系统的尚未添加的相同事件不一样......

任何?

2 个答案:

答案 0 :(得分:1)

每个活动都有唯一的ID。在创建新事件时,Google日历会返回创建的事件。您必须保存ID以便将来更新此事件。 试试这个..

$calendarService->events->update($calendarId, $eventId, Event $postBody, $optParams = array())

答案 1 :(得分:0)

我知道这个问题就像3岁一样,但我认为我有一个简单的解决方案。

在您自己的数据库上标记该事件。因此,下次运行导出时,它将无法获取,因为您知道它已经导出。

祝你好运。