Como terminar este Google Calendar Api v3 – FreeBusy PHP – exemplo?

Eu quero usar o google api v3 freebusy (php) para encontrar informações de freebusy gratuitas de três dos meus calendars, mas não encontro o final correto do meu código. Eu quero acessar os valores “agendados – ocupados” da $ freebusy-response.

Uma vez que não existe um código de exemplo na api-reference e não consegui encontrar nenhum código de trabalho na web (mas muitas pessoas pedem isso) vocês são minha última esperança para que isso seja executado.

... $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 

Isto é o que a referência da API diz sobre a resposta:

  { "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 } ] } } } 

Aqui está a minha resolução (apenas a parte setItems do seu código está errada):

 $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); 

Espero que isso ajude, cheers!

 $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); 

Estou trabalhando no Grails e isso funciona para mim.

 def heute = new DateTime(false, new Date().time, null) def heutePlusEinJahr = new DateTime(false, (new Date() + 365).time, null) println heute println heutePlusEinJahr Events feed = servicecalendar.events().list(calendarId).setTimeMin(heute).setTimeMax(heutePlusEinJahr).execute(); return feed