Google Calendar API freeBusy多个日历

时间:2017-05-15 17:32:37

标签: php google-calendar-api

我已经成功地使用PHP从单个日历中获取freeBusy数据,但是当我尝试按照Google的建议在一个调用中获取多个日历时:

"items": 
  [
    {
      "id": string
    }
  ]

我似乎无法使用PHP来使数组对象正确,因为我已经尝试了StackOverflow上的一些示例以及我处理PHP数组的一般技巧而没有成功。目的是将多个日历ID作为一个数组,然后循环通过该数组,根据Google API使请求对象正确。有没有人看到同样的问题,实际上尝试使用多个日历ID。我有一种轻微的感觉,这可能是PHP日历的PHP SDK中的一个错误。任何人都可以指向任何方向吗?这是我单个日历ID的工作代码:

$client = new Google_Client();
$client->setAuthConfig("credentials/oauth-credentials.json");
$client->setScopes('https://www.googleapis.com/auth/calendar');

$client->addScope(Google_Service_Calendar::CALENDAR);
$client->useApplicationDefaultCredentials();

$cal = new Google_Service_Calendar($client);
$calendarId = 'narvik.kommune.no_2d37393134@resource.calendar.google.com';
//$calendarId = array('narvik.kommune.no_37383343730@resource.calendar.google.com','narvik.kommune.no_2d1383134@resource.calendar.google.com');
$freebusy_req = new Google_Service_Calendar_FreeBusyRequest();
$freebusy_req->setTimeMin(date(DateTime::ATOM, strtotime('2017-05-01T08:00:00.000Z')));
$freebusy_req->setTimeMax(date(DateTime::ATOM, strtotime('2017-05-19T17:00:00.000Z')));
$freebusy_req->setTimeZone($timezone);
$freebusy_req->setCalendarExpansionMax(10);
$freebusy_req->setGroupExpansionMax(10);

$item = new Google_Service_Calendar_FreeBusyRequestItem();
$item->setId($calendarId);
$freebusy_req->setItems(array($item));
$query = $cal->freebusy->query($freebusy_req);

$response_calendar = $query->getCalendars();
$busy_obj = $response_calendar[$calendarId]->getBusy();

这是结果print_r($ busy_obj);

Array
(
[0] => Google_Service_Calendar_TimePeriod Object
    (
        [end] => 2017-05-01T14:50:00Z
        [start] => 2017-05-01T09:00:00Z
        [internal_gapi_mappings:protected] => Array
            (
            )

        [modelData:protected] => Array
            (
            )

        [processed:protected] => Array
            (
            )
    )

1 个答案:

答案 0 :(得分:0)

我相信你正在寻找类似下面的内容。

$item = new Google_Service_Calendar_FreeBusyRequestItem();
$item->setId($calendarId);
$item2 = new Google_Service_Calendar_FreeBusyRequestItem();
$item2->setId($calendarId2);
$freebusy_req->setItems(array($item, $item2));

基本上你只需要创建另一个Google_Service_Calendar_FreeBusyRequestItem和逗号分隔两个日历项的数组()中的项目。