131361
Goto Top

Google Calendar API - Freebusy

Guten Morgen zusammen,

ich arbeite das erste mal mit der Google Calendar API und würde gerne via PHP die Information abfragen, an welchen Tagen ich wann einen Termin habe.
Dafür habe ich mir "Freebusy" angesehen - leider ist die Google Dokumentation nicht so PHP-freundlich, was mir die Sache erschwert.

Das habe ich bislang:

<?php
	
require_once 'vendor/autoload.php';  

$client = new Google_Client();
$client->setScopes('https://www.googleapis.com/auth/calendar');  
$client->addScope(Google_Service_Calendar::CALENDAR);
$client->setDeveloperKey("MEIN_API_KEY");  

$cal = new Google_Service_Calendar($client);
$calendarId = 'primary';  
$freebusy_req = new Google_Service_Calendar_FreeBusyRequest();
$freebusy_req->setTimeMin('2019-10-01T08:00:00.000-07:00');  
$freebusy_req->setTimeMax('2019-10-31T10:00:00.000-07:00');  
$freebusy_req->setTimeZone('Europe/Berlin');  
$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();


echo '<pre>';  
print_r($response_calendar);
echo '</pre>';  
	
?>


Die Antwort sieht so aus:

Array
(
    [primary] => Google_Service_Calendar_FreeBusyCalendar Object
        (
            [collection_key:protected] => errors
            [busyType:protected] => Google_Service_Calendar_TimePeriod
            [busyDataType:protected] => array
            [errorsType:protected] => Google_Service_Calendar_Error
            [errorsDataType:protected] => array
            [internal_gapi_mappings:protected] => Array
                (
                )

            [modelData:protected] => Array
                (
                )

            [processed:protected] => Array
                (
                )

            [errors] => Array
                (
                     => Google_Service_Calendar_Error Object
                        (
                            [domain] => global
                            [reason] => internalError
                            [internal_gapi_mappings:protected] => Array
                                (
                                )

                            [modelData:protected] => Array
                                (
                                )

                            [processed:protected] => Array
                                (
                                )

                        )

                )

            [busy] => Array
                (
                )

        )

)

Leider ist das "Busy-Array" komplett leer.
Vermutlich, weil Google_Service_Calendar_Error einen "internalError" vorweist.
Leider hänge ich jetzt hier fest, da ich nicht weiß, wodurch der internalError zustande kommt :/

Hoffe ihr könnt helfen ! face-smile

Content-ID: 506314

Url: https://administrator.de/forum/google-calendar-api-freebusy-506314.html

Ausgedruckt am: 22.04.2025 um 08:04 Uhr

BirdyB
BirdyB 18.10.2019 um 09:58:11 Uhr
Goto Top
Hi,

hier gibt es ein Beispiel

VG
131361
131361 18.10.2019 um 10:06:50 Uhr
Goto Top
das hatte ich bereits gesehen, allerdings unterscheidet sich das nicht gravierend zu meinem Script, oder habe ich etwas übersehen?
helenaorstem
Lösung helenaorstem 21.10.2019, aktualisiert am 22.10.2019 um 10:30:27 Uhr
Goto Top
$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);
Quelle