Google Calendar API 批量请求 PHP
Posted
技术标签:
【中文标题】Google Calendar API 批量请求 PHP【英文标题】:Google Calendar API batch request PHP 【发布时间】:2013-07-24 07:15:06 【问题描述】:我正在尝试通过批量请求向 Google 日历发送一堆事件。 但我不知道该怎么做。 https://developers.google.com/google-apps/calendar/batch 帮不了我。
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_CalendarService.php';
$client = new Google_Client();
$client->setUseBatch(true);
$batch = new Google_BatchRequest();
$uri = 'http://www.google.com/calendar/feeds/default/private/full/batch';
$batchContent = file_get_contents('xxxxx/google-api-php-client/batch.xml');
$batch->add($batchContent);
batch.xml 包含 2 个项目。 到目前为止就是这样。但是什么也没发生。
我也试过
$batch->execute()
但这会引发没有消息的错误。
我的问题:如何通过 PHP 将批次发送到 Google 日历?
【问题讨论】:
【参考方案1】:我正在使用最新版本的 PHP 版 Google API 客户端库(Google 日历 v.3)。我使用批处理操作将讲师课程推送到 Google 日历。这是我的代码示例(multipleInsert 函数)。祝你好运!
<?php
require_once(APPPATH . 'libraries/Google/Client.php');
require_once(APPPATH . 'libraries/Google/Http/Batch.php');
require_once(APPPATH . 'libraries/Google/Service/Calendar.php');
class My_google_calendar
...
/** Add single Event for Student */
function addEvent($lesson, $instructor, $return_request = false, $enable_attendees = false)
$calendar = $this->getGoogleCalendar(); // get calendar service variable
$lesson_from = date(DATE_RFC3339, $lesson->from);
$lesson_to = date(DATE_RFC3339, $lesson->from + $lesson->duration);
$event = new Google_Service_Calendar_Event();
$event->setSummary('Lesson with student: '$lesson->student_full_name);
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime($lesson_from);
$start->setTimeZone($this->getGoogleCalendarTimeZone());
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime($lesson_to);
$end->setTimeZone($this->getGoogleCalendarTimeZone());
$event->setEnd($end);
$event->setColorId(4);
$description = "...";
$event->setDescription($description);
if (isset($student->email) && $enable_attendees)
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setResponseStatus('needsAction');
$attendee1->setEmail($student->email);
$attendees = array($attendee1);
$event->setAttendees($attendees);
$createdEvent = $this->calendar->events->insert($this->calendar_id, $event, array('fields' => 'id'));
return $return_request ? $createdEvent : $createdEvent->getId();
/** Push group of events to the Calendar */
function multipleInsert ($lessons, $instructor)
$this->use_batch = true;
$this->client->setUseBatch($this->use_batch);
$batch = new Google_Http_Batch($this->client);
$optParams = array('fields' => 'status,updates');
foreach($lessons as $time => $lesson)
$lesson = array_shift($group['lessons']);
$req = $this->addEvent($lesson, $instructor, true);
$batch->add($req, $time);
$results = $batch->execute();
return $results;
【讨论】:
这是一个完美的例子。帮了我很多忙,谢谢@Natali!以上是关于Google Calendar API 批量请求 PHP的主要内容,如果未能解决你的问题,请参考以下文章
Google Calendar API - 请求的身份验证范围不足
通过多封电子邮件从 google calendar api 查询事件
如何从 Google Calendar API 获取刷新的令牌