Я синхронизирую календарь с внешним приложением. У меня должны быть одинаковые идентификаторы событий в этом приложении и в Календаре Google. Но в этом приложении, когда событие удаляется, его идентификатор доступен для будущего нового события. Поэтому мне бы хотелось, чтобы при удалении события с помощью Calendar 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);
Если бы у кого-то была идея для меня, это было бы удивительно!
Спасибо.
Задача ещё не решена.
Других решений пока нет …