У меня возникают трудности с пониманием процесса вставки в API календаря Google. У меня есть код, который они дали в своем примере, но он не работает, когда я его использую, страница отображается пустым (если я повторяю текст ниже, он не отображается). Вот ссылка на страницу, на которую я ссылаюсь:
https://developers.google.com/google-apps/calendar/v3/reference/events/insert
Вот код:
$event = new Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new EventDateTime();
$start->setDateTime('2011-06-03T10:00:00.000-07:00');
$event->setStart($start);
$end = new EventDateTime();
$end->setDateTime('2011-06-03T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new EventAttendee();
$attendee1->setEmail('attendeeEmail');
// ...
$attendees = array($attendee1,
// ...
);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('primary', $event);
echo $createdEvent->getId();
Насколько я понимаю, я должен заменить 'primary'
с моим кодом календаря Google. Я сделал это и заменил 'attendeeEmail'
с адресом электронной почты владельца календаря удалил лишнюю запятую, и я не получаю никакого ответа. Ссылочная страница ссылается на «устаревший код», поэтому я не уверен, является ли то, что я использую, наиболее актуальным примером.
Есть ли рабочий пример, на который я могу сослаться? Или что-то не так с тем, что я делаю? Любой совет с благодарностью.
Последний вопрос: все это связано в каталоге «События -> Вставить». Существует также каталог «Календари -> Вставка» и каталог «CalendarList -> Вставка». «CalendarList -> Insert» говорит, что я должен использовать этот код для вставки в календарь пользователя:
$calendarListEntry = new CalendarListEntry();
$calendarListEntry->setId("calendarId");
$createdCalendarListEntry = $service->calendarList->insert($calendarListEntry);
echo $createdCalendarListEntry->getSummary();
Должен ли я использовать это вместо этого? Если так, где я могу найти пример или учебник, чтобы использовать это? (Как вставить startDateTime, endDateTime, timeZone и т. Д.)
Решено — вот правильный код:
$event = new Google_Service_Calendar_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime('2011-06-03T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2011-06-03T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('email');
// ...
$attendees = array($attendee1
//, ...
);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('primary', $event);
echo $createdEvent->getId();
Вы можете использовать «первичную» строку напрямую, не нужно заменять ее на электронную почту, если вы хотите получить доступ к основному календарю вошедшего в систему пользователя. Однако, прежде чем вы сможете вставить что-либо куда-либо, вам нужно правильно пройти аутентификацию. Пожалуйста, следуйте началу работы здесь: https://developers.google.com/google-apps/calendar/instantiate Существует также пример кода PHP.
Также есть много других рабочих образцов вставок на SO, например здесь: Создать простое событие Google Calendar в PHP
Что касается вашего последнего вопроса, коллекция CalendarList предназначена для отображения календарей, которые ваши аутентифицированные пользователи добавили в список своих календарей (левая панель в веб-интерфейсе). Он никак не предназначен для работы с событиями. Для этого вам нужно будет придерживаться коллекции событий.
Других решений пока нет …