API Календаря Google/очистить корзину основного календаря

Синхронизирую календарь с внешним приложением. У меня должны быть одинаковые идентификаторы событий в этом приложении и в Календаре 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);.

Если у кого-то есть идея для меня, это было бы потрясающе!

Спасибо.


person Thomas Caillier    schedule 29.05.2017    source источник
comment
с какой областью вы аутентифицируетесь?   -  person DaImTo    schedule 29.05.2017
comment
Я аутентифицируюсь следующим образом: https://www.googleapis.com/auth/calendar   -  person Thomas Caillier    schedule 29.05.2017
comment
Ваш идентификатор календаря содержит заглавные буквы? Я спрашиваю, потому что в этом сообщении SO он должен был разрешить недопустимое значение, используя строчная версия букв.   -  person noogui    schedule 30.05.2017
comment
Я не знал, что это может быть проблемой, но там нет заглавных букв...   -  person Thomas Caillier    schedule 30.05.2017
comment
Наконец-то я не использую одни и те же идентификаторы событий в своем приложении и в Календаре Google. Немного жаль, но у меня нет проблем. Я оставил этот пост открытым, он может заинтересовать кого-то еще.   -  person Thomas Caillier    schedule 31.05.2017