Вставка событий в Календарь Google создает дубликаты (php) - PullRequest
2 голосов
/ 22 марта 2012

Я пишу php-скрипт, отвечающий за извлечение событий календаря из системы управления проектами и синхронизацию их с Календарем пользователя Google.У меня есть код, способный создавать события и отправлять их в Календарь Google, но проблема, с которой я столкнулся, заключается в том, что событие можно создавать несколько раз с одинаковыми параметрами.Мой код для создания события выглядит следующим образом (это из документации API Календаря Google):

$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);

Если я запустил этот код, он создаст событие по мере необходимости.Сейчас, возможно, я делаю это неправильно, но этот код я буду использовать для синхронизации календарей.Этот код будет запущен, пока пользователь просматривает сайт, но проблема в том, что любые события, которые он уже создал, просто воссоздают.

Для уточнения: у пользователя встреча в 11:00 25го числа.Код запускается и вставляет эту встречу в Google.Следующая итерация кода снова вставит это же собрание.

Как узнать, совпадает ли созданное событие в Google с тем, которое в настоящее время находится в моей системе?Я могу перечислить события от Google, которые предоставляют идентификаторы и электронные теги, но они не совпадают с идентичными событиями, которые еще должны быть добавлены, приходящими из моей системы ...

Кто-нибудь?

Ответы [ 2 ]

1 голос
/ 13 мая 2012

Каждое событие имеет уникальный идентификатор. При создании нового события календарь Google возвращает созданное событие. Вы должны сохранить идентификатор, чтобы обновить это событие в будущем. Попробуйте это ..

$calendarService->events->update($calendarId, $eventId, Event $postBody, $optParams = array())
0 голосов
/ 28 августа 2015

Я знаю, что этому вопросу 3 года, но я думаю, что у меня есть простое решение.

Отметить событие в вашей собственной базе данных. Поэтому в следующий раз, когда вы запустите экспорт, он не будет поднят, потому что вы знаете, что он уже был экспортирован.

Удачи.

...