我已经成功地使用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
(
)
)
答案 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
和逗号分隔两个日历项的数组()中的项目。