Google Kalender Termine im WebFront anzeigen

@stele99

Danke für deine gute Erklärung! => Läuft auf Anhieb :smiley:

Bei Punkt 6, Besorgen der beiden Dateien, bin ich leider gescheitert… wo sollen diese sein, hab sie so nicht gefunden.:confused:
Hab dann die Dateien aus diesem Link genommen:

http://www.ip-symcon.de/files/service/OpenSSL-0.9.8.zip

Insgesamt ist es alles ein wenig tricky…Wenn ich mir das nicht aufschreibe und in einem Jahr ist wieder was… seh ich alt aus.

Ansonsten lief es auf Anhieb. Fehlt nur noch aufhübschen für das WFE.

Jürgen

Vielen Dank für dein Script und die tolle Anleitung dazu - hat bei mir auf Anhieb funktioniert, ich wusste nicht mal, das Google diese Möglichkeit bietet.

Jetzt muss ich mur noch überlegen, wie ich die Daten sinnvoll in Variablen verpacke um die z.b. für die Heizungssteuerung nutzen zu können.

geht mir genauso, ich schreibe mir mittlerweile alles was ich so konfiguriere oder bastele in eine Wiki rein

Hallo zusammen,

Also ei mir läuf es icht so gut.
Ich bekomme folgende fehlermeldung:

Fatal error: Uncaught exception ‚Google_Auth_Exception‘ with message ‚Error refreshing the OAuth2 token, message: ‚{
„error“ : „invalid_grant“
}‘‘ in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php:358
Stack trace:
#0 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(309): Google_Auth_OAuth2->refreshTokenRequest(Array)
#1 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(234): Google_Auth_OAuth2->refreshTokenWithAssertion()
#2 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Resource.php(208): Google_Auth_OAuth2->sign(Object(Google_Http_Request))
#3 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Calendar.php(1120): Google_Service_Resource->call(‚list‘, Array, ‚Google_Service_…‘)
#4 C:\Program Files\IP-Symcon\scripts\55510.ips.php(25): Google_Service_Calendar_CalendarList_Resource->listCalendarList()
#5 {main}
thrown in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php on line 358
Abort Processing during Fatal-Error: Uncaught exception ‚Google_Auth_Exception‘ with message ‚Error refreshing the OAuth2 token, message: ‚{
„error“ : „invalid_grant“
}‘‘ in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php:358
Stack trace:
#0 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(309): Google_Auth_OAuth2->refreshTokenRequest(Array)
#1 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php(234): Google_Auth_OAuth2->refreshTokenWithAssertion()
#2 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Resource.php(208): Google_Auth_OAuth2->sign(Object(Google_Http_Request))
#3 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Calendar.php(1120): Google_Service_Resource->call(‚list‘, Array, ‚Google_Service_…‘)
#4 C:\Program Files\IP-Symcon\scripts\55510.ips.php(25): Google_Service_Calendar_CalendarList_Resource->listCalendarList()
#5 {main}
thrown
Error in Script C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Auth\OAuth2.php on Line 358

Gruß Stepahn

Erst mal Danke für das Skript!

Inzwischen redet es mit meinem Google Kalender :slight_smile:

Allerdings werden die Termine ohne korrektes Datum ausgelesen bzw. wird das Datum und die Uhrzeit der Skript-Ausführung vor den Namen des Termin gesetzt und nicht das eigentliche Datum des Termins.

Kann da jemand helfen?

Beste Grüße

Axel

@teas1512

„Uncaught exception ‚Google_Auth_Exception‘ … error“ : „invalid_grant“

Hast du in deinem tatsächlichen Google Kalender die generierte eMail zugelassen? Sieht nach einem Berechtigungsproblem aus
=> authentication

Von mir auch schon mal ein Danke für die Anleitung zum Script.
Den Fehler mit der Zeit habe ich auch, allerdings nur bei den heutigen Terminen. Termin in der Zukunft werden korrekt ausgelesen.
Gehakt hatte es bei mir auch erst, weil ich den richtigen Kalendernamen wie im Script gefordert eingetragen habe und nicht die ursprüngliche email Adresse des Kalenders.

Vllt. kannst du uns nochmal kurz erklären, wie man den Zeitraum bzw. die Anzahl der Eintrage bestimmen kann.
Kann man die Eintrage irgendwie wieder in ein XML schreiben um das evtl. wieder kompatibel zu den alten Scripten zu machen um nicht allzuviel umauen zu müssen?

Viele Grüße,
Doc

edit: die falsche Zeit wird anscheinend nur bei den ganztägigen Terminen gesetzt

Hallo…

ich verwende bei mir folgende Skripte:

  1. Eine kleine Funktionssammlung, die den Googlekalender ausliest. Die Basis stammt von hier (Accessing Google Calendar using the php API | mytechscraps). Die Funktion „ReadCalendar“ liefert ein Array zurück, welches man unkompliziert weiterverarbeiten kann.

$calname = Der Name des Googlekalenders … z.B. ‚xxxxxxxxx@group.calendar.google.com‘
$maxDays = die Anzahl der auszulesenden Tage (ab heute)
$shortCut = beliebige Zeichenkette (wird im Skript zwei beim Auslesen von mehreren Kalendern verwendet)


<?
function ReadCalendar($calName, $maxDays, $shortCut)
	{
	require_once "google-api-php-client-master/autoload.php";

	// Service Account info
	$client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
	$service_account_name = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com';
	$key_file_location = 'google-api-php-client-master/Google-IPS-Kalenderxxxxxxxxxxxxxxxxx.p12';


	$client = new Google_Client();
	$client->setApplicationName("TestKalender");
	$service = new Google_Service_Calendar($client);
	$key = file_get_contents($key_file_location);
	$cred = new Google_Auth_AssertionCredentials($service_account_name, array('https://www.googleapis.com/auth/calendar.readonly'), $key);

	$client->setAssertionCredentials($cred);


	// Convert recurring events to single events
	// Look for events in the next week - now to now+1week
	$params = array( 'singleEvents' => TRUE,
	   				  'timeMin' => (new DateTime())->format(DateTime::RFC3339),
	   				  'timeMax' => (new DateTime())->add(new DateInterval('P' .$maxDays .'D'))->format(DateTime::RFC3339),);

	$events = $service->events->listEvents($calName, $params);

//print_r ($events->getItems());

	$c=0;
	foreach ($events->getItems() as $event)
				{
            $Ergebnis[$c]['StartDatum'] = fmt_gdate($event->getStart());
            $Ergebnis[$c]['StartZeit'] = fmt_gtime($event->getStart());
				$Ergebnis[$c]['EndeDatum'] = fmt_gdate($event->getEnd());
				$Ergebnis[$c]['EndeZeit'] = fmt_gtime($event->getEnd());
				$Ergebnis[$c]['Beschreibung'] = iconv('UTF-8', 'ISO-8859-1',$event->getSummary());
				$Ergebnis[$c]['Ort'] = iconv('UTF-8', 'ISO-8859-1',$event->getLocation());
				$Ergebnis[$c]['shortCut'] = $shortCut;
         	if($Ergebnis[$c]['StartZeit'] == "00:00" && $Ergebnis[$c]['EndeZeit'] == "00:00")
            	{
	            $Ergebnis[$c]['EndeDatum'] = date("d.m.Y", strtotime($Ergebnis[$c]['EndeDatum']."-1 day"));
					}
				$c++;
				}
	usort($Ergebnis, 'DateCompare');
	return $Ergebnis;
   }


function fmt_gdate( $gdate )
	{
	 if ($val = $gdate->getDateTime())
         {
       return (new DateTime($val))->format( 'd.m.Y' );
          }
       else if ($val = $gdate->getDate())
        {
        return (new DateTime($val))->format( 'd.m.Y');
        }
	}

function fmt_gtime( $gdate )
	{
	 if ($val = $gdate->getDateTime())
         {
   	    return (new DateTime($val))->format( 'H:i' );
         }
       else if ($val = $gdate->getDate())
      	{
        return ('00:00');
        	}
   }

function DateCompare($a, $b)
	 {
    if ( strtotime($a['StartDatum']) == strtotime($b['StartDatum']) ) return 0;
    if ( strtotime($a['StartDatum']) < strtotime($b['StartDatum']) )  return -1;
    return 1;
	 }

?>


  1. Das „Anzeigeskript“:

Ich habe das Skript von crypto (#122) etwas modifiziert, so das es mit der obigen Kalenderfunktion zusammenarbeitet:


<?

require_once "Google_Kalender_Funktionen.ips.php";


// Hier die GoogleKalender eintragen

//Kalender 1
$Userid1='kalenderxxxx@gmail.com';
$Tage1=100;
$ShortCut1=1;


//Kalender 2
$Userid2='xxxxxxxxx@group.calendar.google.com';
$Tage2=300;
$ShortCut2=4;


//Hier die Farbe für die ShortCuts angeben

$SC_Farbe[1] = "gray";
$SC_Farbe[2] = "#00AD00";
$SC_Farbe[3] = "darkred";
$SC_Farbe[4] = "lightblue";


//Hier den Style wählen

$blinkToday = true; // (true/false) blinken des heutigen Kalendereintrages An/Aus

/******** Farbnamen, RGB-Formatierung, Hex-Zahlen möglich *********/

$StyleText[1] = "white"; // Textfarbe Datum
$StyleText[2] = "gray"; // Textfarbe Wochentag

/*** xx-small, x-small, small, normal, large, x-large, xx-large ***/

/************** oder Angabe in pt - z.B. "12pt" *******************/

$StyleText[3] = "small"; // Textgröße Datum
$StyleText[4] = "small"; // Textgröße Wochentag
$StyleText[5] = "small"; // Textgröße Eintrag


/****************** Ab hier wieder die Finger lassen **************/
// Wochentage auf Deutsch

$tag[0] = "Sonntag";
$tag[1] = "Montag";
$tag[2] = "Dienstag";
$tag[3] = "Mittwoch";
$tag[4] = "Donnerstag";
$tag[5] = "Freitag";
$tag[6] = "Samstag";

$deco = "";

if($blinkToday)
   {
    $deco = "blink";
    }
   

//******************************************************************************

$calc1=ReadCalendar($Userid1, $Tage1, $ShortCut1);
$calc2=ReadCalendar($Userid2, $Tage2, $ShortCut2);
$calcData=array_merge($calc1, $calc2);

//$calcData=$calc2;
usort($calcData, 'DateCompare');

//print_r($calcData);

$calDataTxt = "<table style='border-spacing:0px; width:100%'>"; // Starte Tabellenansicht
$check_date = "";

foreach($calcData as $thisData)
        {
      if($thisData['EndeDatum'] != date("d.m.Y", strtotime("yesterday")))
        {
        if($check_date != "" and $thisData['StartDatum'] != $check_date)
             {
             $calDataTxt .= "</table></th></tr>";
             }
        if($thisData['StartDatum'] != $check_date)
           {
           if($thisData['StartDatum'] == date("d.m.Y"))
                {
               $headerTxt = "Heute:";
               }
            elseif($thisData['StartDatum'] == date("d.m.Y", strtotime("+1 day")))
               {
                $headerTxt = "Morgen:";
                }
            else
               {
               $headerTxt = $thisData['StartDatum'];
               }
           $calDataTxt .= "<tr><td style='  padding:4px;
                                                        backgroun-color:#213245;
                                                        background: -moz-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -webkit-gradient(linear, left top, right top, color-stop(4%,rgba(31,50,79,0)), color-stop(100%,#213245));
                                                        background: -webkit-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -o-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: -ms-linear-gradient(left, rgba(31,50,79,0) 40%, #213245 100%);
                                                        background: linear-gradient(to right, rgba(31,50,79,0) 40%), #213245 100%;'>
                                                        <span style='color:".$StyleText[1].";font-weight:200;font-size:".$StyleText[3]."'>"
                                                        .$headerTxt.
                                                        "</span></td>
                                           <td style='text-align:right; width:100px; padding:4px;background-color:#213245'>"
                                                        ."<span style='color:".$StyleText[2].";font-weight:normal;font-size:".$StyleText[4]."'>"
                                                        .$tag[date("w", strtotime($thisData['StartDatum']))].
                                                        "<span>".
                                                        "</td>
                                                        </tr>
                                                        <tr>
                                                        <th colspan='2' style='text-align:left;padding-left:20px;padding-right:0px;padding-bottom:10px;padding-top:0px;'>
                                                        <table style='border-spacing:0px; width:100%;padding:5px; border:1px solid #1f3247;'>";
            $check_date = $thisData['StartDatum'];
            $calDataTxt .= SetEintrag($thisData);
           }
          else
           {
           $calDataTxt .= SetEintrag($thisData);
           }
        }
     }

$calDataTxt .= "</table></th></tr></table>"; // Tabelle schließen

SetValue(CreateVariableByName($IPS_SELF, "Kalender", 3, "~HTMLBox"), $calDataTxt);

/*********** Werte in eine Datei schreiben. Ich habe keine Verwendung dafür *******/

$calDataTxt = '';

foreach($calcData as $thisData) $calDataTxt .= $thisData['StartDatum'].'>'.$thisData['shortCut'].$thisData['Beschreibung']."
";

/*

$handle = fopen("C:/IP-Symcon/Termine.txt", "w");
fwrite($handle, $calDataTxt);
fclose($handle);
*/

if($IPS_SENDER == "Execute")
{
    echo $calDataTxt;
}

//***************************************************************************************************

function CreateVariableByName($id, $name, $type, $profile = "")
{
    global $IPS_SELF;
    $vid = @IPS_GetVariableIDByName($name, $id);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetInfo($vid, "this variable was created by script #$IPS_SELF");
        if($profile !== "") { IPS_SetVariableCustomProfile($vid, $profile); }
    }
    return $vid;
}



function SetEintrag($thisData)
{
    global $tag, $SC_Farbe, $deco, $StyleText;
    if($thisData['StartZeit'] == "00:00")
        {
        if($thisData['StartDatum'] == $thisData['EndeDatum'])$thisData['StartZeit']="Ganztägig";
        else $thisData['StartZeit']="bis ".substr($tag[date("w", strtotime($thisData['EndeDatum']))],0,2).", ".$thisData['EndeDatum'];
        }
    else $thisData['StartZeit'] .= " - ".$thisData['EndeZeit']." Uhr";
    if($thisData['StartDatum'] == date("d.m.Y"))
    {
        return "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";;color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Beschreibung']."</span></td>
                        <td style='text-align:right;'>
                        <span style='font-weight:normal;font-size:".$StyleText[5].";text-decoration:".$deco.";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['StartZeit']."</span></td></tr>";
    }
    else
    {
        return "<tr><td><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['Beschreibung']."</span></td>
                        <td style='text-align:right'><span style='font-weight:normal;font-size:".$StyleText[5].";color:".$SC_Farbe[$thisData['shortCut']]."'>".$thisData['StartZeit']."</span></td></tr>";
    }

}
?>

Beachte:
require_once „Google_Kalender_Funktionen.ips.php“; '== das Skript zu 1. !!!

Gruß

Swifty

Hallo,

dein Script zu 1. hatte ich auch schon getestet. Allerdings wusste ich noch nicht, wie ich die Daten verarbeiten sollte, da die Termin ja nicht mehr chronologisch ausgelesen werden. Bei mir werden immer alle ganztägigen zuerst angezeigt, auch die von den nächsten Tagen. Ich weiss nicht, ob das mit der alten API auch schon so war.

Ich benötige eigentlich ein XML um das mit den weiteren Scripten die ich für den Designer habe weiter zu benutzen.

Dein 2. Script müsste ich nochmal testen.

Danke nochmal,
Doc

Hallo…

das Geheimnis liegt hier: „usort($Ergebnis, ‚DateCompare‘);“ …

Ich habe mal im Script 1 etwas ergänzt. Jetzt gibt die Funktion alles in der richtigen Reihenfolge zurück. Vorher hatte das der obige Befehl im Script 2 übernommen … :smiley:

Gruß

Swifty

PS: Bezüglich XML kann ich Dir leider nicht weiterhelfen.

Hallo Swifty,

habe ich das mal so von dir übernommen und funktioniert soweit.

Ich habe aber das Problem, das du ja für die unterschiedlichen Farben der Kalendereinträge auch unterschiedliche Kalender verwendest.
Ich habe bei mir alles in einem Kalender und würde das auch gerne beibehalten. In dem alten XML-Script wurden die unterschiedlichen Farben durch Schlüsselwörter wie „Geburtstag“, „Tonne“, usw. bestimmt.

Hast du eine Idee, wie man das in deinem Script auch umsetzten könnte?

Grüße,
Doc

Hallo…

denkbar währe folgender Ansatz:

Die Variablen $calcData (Zeile 58) beinhaltet ja ein Array, in dem für jedes Ereignis ein Datensatz in folgender Form vorliegt:

[0] => Array
(
[StartDatum] => 29.11.2014
[StartZeit] => 00:00
[EndeDatum] => 29.11.2014
[EndeZeit] => 00:00
[Beschreibung] => Gelbe Tonne
[Ort] =>
[shortCut] => 0
)

[1] =&gt; Array
    (
        [StartDatum] =&gt; 03.12.2014
        [StartZeit] =&gt; 00:00
        [EndeDatum] =&gt; 03.12.2014
        [EndeZeit] =&gt; 00:00
        [Beschreibung] =&gt; Geburtstag Frau Mustermann
        [Ort] =&gt; 
        [shortCut] =&gt; 0
    )

Du könntest im obigen Skript nach der Zeile „usort($calcData, ‚DateCompare‘);“ (ca. Zeile 61) eine Foreach-Schleife einbauen und darin für jedes Ereignis in $calcData die Beschreibung analysieren und sodann den ShortCut entsprechend anpassen.
In der Art: Wenn Beschreibung „Tonne“ enthält, dann ShortCut=1 … wenn Beschreibung "Geburtstags enthält, dann shortCut=2 u.a.w.

Gruß

Swifty

Hallo alle zusammen,

ich habe gerade in diesem Thread gesehen das hier auch schon an einer Lösung gearbeitet wird.
Ich bin auch schon seit ein paar Tagen damit beschäftigt meine Google-Scripte (die alten sind ja mit der Zend-Classe)
umzusetzen.

Mein Vorschlag:

Sollen wir nicht ein neuen Thread aufmachen (z.B. Google-Calender Scripe) wo wir alle funktionierenden Scripte
sammeln und auch aktuell halten? Und eventuell diesen Thread als Diskussion und Fragen zu den Scripten?

Dann könnten wir den alten Thread von mir für Termine eintragen löschen oder schliessen.

Ich denke das macht mehr Sinn als wenn wir alle Einzelkämpfer sind. :smiley:

Ich habe das hier mal vorbereitet.

Meine Unterstützung hast du!
macht Sinn

Super! Machen wir das so.
Las uns meinen alten Thread einfach nur schließen.
Dann geht da nichts verloren.

Ich denke das ich irgendwann am WE oder nächste Woche meine alten Scripte überarbeitet habe.

Ich mache im ersten Post bei Zeiten noch mal ein paar Screenshots zur Dokumentation rein.
Beim anlegen eines Projektes sind einige Stolpersteine die umschifft werden müssen!

… finde ich gut.

Hallo zusammen,

@juwo1811 vielen Dank für den Tip. Leider weis ich nicht 100% ob ich alles richtig gemacht haben mit der freigabe des Kalenders.

  1. Ich habe ien Projekt angelegt
  2. Dann habe ich neue Zugangsdaten erstellt (siehe Bild)
  3. Mir wurde mir ein Schlüssel zum Donload angeboten den ich runtergeladen habe und auf dem Server gespeichert habe.
  4. Dann habe ich noch unter APIs den „Calendar API“ freigegeben
  5. Die mir angezeigten Client_ID und E-Mail-Adresse habe ich dann in das Script kopiert.

Muss ich bei googel noch etwas frei geben bzw. einstellen ?

Gruß
Stephan

@Teas1512

Du must den Google-Kalender noch für die „E-Mail-Adresse“ freigeben.
Das Skript sollte auch den Pfad und den Namen der mykey.p12-Datei kennen.

Gruß

Swifty

so, habe jetzt den Kalender frei denke ich :slight_smile:

Habe zumindist eine andere Fehlermeldung

Fatal error: Uncaught exception ‚Google_Service_Exception‘ with message ‚Error calling GET events?singleEvents=true&timeMin=2014-11-27T14%3A14%3A35%2B01%3A00&timeMax=2014-12-04T14%3A14%3A35%2B01%3A00: (404) Not Found‘ in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php:83
Stack trace:
#0 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php(41): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Client.php(563): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
#2 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Resource.php(227): Google_Client->execute(Object(Google_Http_Request))
#3 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Calendar.php(1561): Google_Service_Resource->call(‚list‘, Array, ’ in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php on line 83
Abort Processing during Fatal-Error: Uncaught exception ‚Google_Service_Exception‘ with message ‚Error calling GET [googlemail.com/events?singleEvents=true&timeMin=2014-11-27T14%3A14%3A35%2B01%3A00&timeMax=2014-12-04T14%3A14%3A35%2B01%3A00: (404) Not Found‘ in C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php:83
Stack trace:
#0 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php(41): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Client.php(563): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
#2 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Resource.php(227): Google_Client->execute(Object(Google_Http_Request))
#3 C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Service\Calendar.php(1561): Google_Service_Resource->call(‚list‘, Array, ’
Error in Script C:\Program Files\IP-Symcon\scripts\google-api-php-client\src\Google\Http\REST.php on Line 83

Das ist das was Google antwortet:

{
„error“: {
„errors“: [
{
„domain“: „usageLimits“,
„reason“: „dailyLimitExceededUnreg“,
„message“: „Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.“,
„extendedHelp“: „https://code.google.com/apis/console
}
],
„code“: 403,
„message“: „Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.“
}
}

Hast Du die Credentials richtig eingetragen?

PS: Lösch mal in deinem Post die https Klamotten!! Ich kann alles von dir sehen! (s.krebs…)