3

Google api v3 freebusy (php) を使用して、3 つの予定表の無料の freebusy 情報を見つけたいのですが、コードの正しい末尾が見つかりません。$freebusy-response の「calendars - busy」の値にアクセスしたいと考えています。

api-reference に example-code がなく、ウェブ上で動作するコードを見つけることができなかったので (しかし、多くの人がそれを求めています)、皆さんはこれを実行する最後の希望です。

...
$service = new Google_CalendarService($client); // successfully connected
$freebusy = new Google_FreeBusyRequest();
$freebusy->setTimeMin('2013-07-08T08:00:00.000-07:00');
$freebusy->setTimeMax('2013-07-08T10:00:00.000-07:00');
$freebusy->setTimeZone('Europe/Berlin');
$freebusy->setGroupExpansionMax(10);
$freebusy->setCalendarExpansionMax(10);
$mycalendars= array("my_calendar_id1@developer.gserviceaccount.com","my_calendar_id2@group.calendar.google.com","my_calendar_id3@group.calendar.google.com");
$freebusy->setItems = $mycalendars;
$createdReq = $service->freebusy->query($freebusy);

echo $createdReq->getKind(); // works
echo $createdReq->getTimeMin(); // works
echo $createdReq->getTimeMax(); // works
$s = $createdReq->getCalendars($diekalender);  
Print_r($s, true); // doesn't show anything
    // needed: the value of "calendars": { (key): { "busy" - array of one or all calendars

これは、API リファレンスが応答について述べていることです。

  {
    "kind": "calendar#freeBusy",
    "timeMin": datetime,
    "timeMax": datetime,
    "groups": {
        (key): {
        "errors": [
            {
            "domain": string,
            "reason": string
            }
        ],
        "calendars": [
            string
        ]
        }
    },
    "calendars": {
        (key): {
        "errors": [
            {
            "domain": string,
            "reason": string
            }
        ],
        "busy": [
            {
            "start": datetime,
            "end": datetime
            }
        ]
        }
    }
    }
4

2 に答える 2

6

これが私の解決策です(コードのsetItems部分のみが間違っています):

$freebusy_req = new Google_FreeBusyRequest();
$freebusy_req->setTimeMin(date(DateTime::ATOM, strtotime($date_from)));
$freebusy_req->setTimeMax(date(DateTime::ATOM, strtotime($date_to)));
$freebusy_req->setTimeZone('America/Chicago');
$item = new Google_FreeBusyRequestItem();
$item->setId('{calendarId}');
$freebusy_req->setItems(array($item));
$query = $service->freebusy->query($freebusy_req);

これが役に立てば幸いです、乾杯!

于 2013-08-01T10:19:34.360 に答える
0
$service = new Google_CalendarService($client); // successfully connected
$freebusy = new Google_FreeBusyRequest();
$freebusy->setTimeMin('2013-07-08T08:00:00.000-07:00');
$freebusy->setTimeMax('2013-07-08T10:00:00.000-07:00');
$freebusy->setTimeZone('Europe/Berlin');
$freebusy->setGroupExpansionMax(10);
$freebusy->setCalendarExpansionMax(10);
$mycalendars = array( array("id"=>"my_calendar_id1@developer.gserviceaccount.com"), array("id"=>"my_calendar_id2@group.calendar.google.com"), array("id"=>"my_calendar_id3@group.calendar.google.com"));
$freebusy->setItems($mycalendars);
$createdReq = $service->freebusy->query($freebusy);
于 2014-04-22T10:29:18.847 に答える