Синхронизирую календарь с внешним приложением. У меня должны быть одинаковые идентификаторы событий в этом приложении и в Календаре Google. Но в этом приложении при удалении события его идентификатор доступен для будущего нового события. Поэтому я бы хотел, чтобы при удалении события с помощью API календаря был доступен идентификатор события. Но он всегда остается в корзине, и я не могу очистить его с помощью API.
Итак, два решения, которые я нашел:
Используйте функцию
clear
:$cld = $service->calendars->get($calendarId); $calendarList = $service->calendarList->listCalendarList()->getItems(); $summary = $cld->getSummary(); $timeZone = $cld->getTimeZone(); $events = $service->events->listEvents("primary")->getItems(); $service->calendars->clear('primary'); $cld->setSummary($summary); $cld->setTimeZone($timeZone); foreach($events as $event){ $service->events->insert("primary", $event); }
Но этот код возвращает сообщение «Запрещено» с кодом 403 в строке
$service->calendars->clear('primary');
.Создайте новый календарь и сделайте его
primary
$cld = $service->calendars->get($calendarId); $calendarList = $service->calendarList->listCalendarList()->getItems(); $summary = $cld->getSummary(); $timeZone = $cld->getTimeZone(); $events = $service->events->listEvents("primary")->getItems(); $calendarListEntry = new Google_Service_Calendar_CalendarListEntry(); $calendarListEntry->setId("[email protected]"); $calendarListEntry->setSummary($summary); $calendarListEntry->setTimeZone($timeZone); $createdCalendarListEntry = $service->calendarList->insert($calendarListEntry); foreach($events as $event){ $service->events->insert("[email protected]", $event); }
Но этот код возвращает сообщение «Недопустимое значение» с кодом 400 в строке
$createdCalendarListEntry = $service->calendarList->insert($calendarListEntry);
.
Если у кого-то есть идея для меня, это было бы потрясающе!
Спасибо.
https://www.googleapis.com/auth/calendar
- person Thomas Caillier   schedule 29.05.2017