API Календаря Google / Очистить корзину основного календаря
Я синхронизирую календарь с внешним приложением. У меня должны быть одинаковые идентификаторы событий в этом приложении и в Календаре 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("account_mail@gmail.com"); $calendarListEntry->setSummary($summary); $calendarListEntry->setTimeZone($timeZone); $createdCalendarListEntry = $service->calendarList->insert($calendarListEntry); foreach($events as $event){ $service->events->insert("account_mail@gmail.com", $event); }
Но этот код возвращает сообщение "Неверное значение" с кодом 400 на линии
$createdCalendarListEntry = $service->calendarList->insert($calendarListEntry);
Если у кого-то есть идея для меня, это было бы удивительно!
Спасибо.
1 ответ
Думаю, у меня есть решение вашей проблемы. Мои шаги:
- Создать новый календарь
- Переместить событие в календарь
- Удалить календарь
Насколько я вижу, в календарях нет мусора...
$calendar = new Google_Service_Calendar_Calendar();
$calendar->setSummary('calendarSummary');
$calendar->setTimeZone('America/Los_Angeles');
$createdCalendar = $service->calendars->insert($calendar);
$result = $service->events->move('primary', 'eventId', $createdCalendar->getId());
$service->calendars->delete($createdCalendar->getId());
Извините за мои плохие навыки PHP.
Будьте осторожны с ограничениями календаря (на данный момент 60, подробнее об этом читайте здесь: https://support.google.com/a/answer/2905486?hl=en).