Scripte für den Google Kalender API V3

Bild gelöscht
Gruß Frank

Bild gelöscht

Bild gelöscht
Das sind die geänderten Einträge


Das dann die Fehlermeldung nachdem ich auf Ausführen gedrückt habe

Was muss ich im Script noch mit ssl machen?
Sieht bei mir so aus

Bild gelöscht

Hallo Frank,

Deine vielen Beiträge grenzen schon an SPAM :slight_smile:
Wenn du Win7 aufwärts hast, kannst du das Programm Snipping Tool von MS nehmen, zum Screenshots erstellen.
Da kann man dann auch Bildausschnitte machen.
Um dir helfen zu können, müsstest du schon dein „Skript“ posten - Zeile 35 :wink:
Deine Emailadresse / … kannst du ja weglassen.

Die Beschreibung auf Seite 1 ist eigentlich echt sehr gut.
Bei mir war der eigentliche Stolperstein, nur, dass mir bei Generierung des API Keys (.P12 mir zuerst eine .JSON Datei erstellt wurd - Ohne ein Passwort.
Im weiteren Dialog gibt es dann ein Button „Generate new p12 File“… dass hab ich dann genommen - und siehe da - P12 Datei erstellt + Passwort.

Ich habs damit gestern in 5 Minuten erledigt.

Ja du kannst theoretisch „mein“ Skript einsetzen, das basiert ja letztlich auf den Beispielen hier :smiley:
In verbindung mit ner Listenansicht.

Und deine „Emailadresse“ gibts du dort ohne Sonderzeichen o.ä. ein.

Die muss ich optisch noch ein bisschen aufpeppen und in eine HTML Box packen…

Ändert aber nichts dran, dass ich da noch einen Schubser benötige, wie ich die WErte besser anordnen kann.

Entschuldige für meine vielen Nachrichten, ich übernehme Dein Script und werde sehen was passiert

OK Bilder gelöscht

Ok Dein Script erstes Foto meine Daten zweites Foto Fehlermeldung

@Frank66: Soll deine EMail-Adresse und die zugehörigen IDs wirklich jeder sehen und damit Zugriff auf deinen Kram bekommen? :smiley:

Grüße,
Chris


Hier nochmals meine

<?
//Kalender
$calName = 'DEINEMAILADRESSE@googlemail.com'; //Kalender
$Tage=60; //Hier den ZEITRAUM ANGEBEN

$calcData=ReadCalendar($calName, $Tage);

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

//print_r($calcData);


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

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

function ReadCalendar($calName, $maxDays)
    {
    require_once "google-api-php-client/src/Google/autoload.php"; //PFAD wo die GOOGLE API PHP autoload.php Datei liegt.

    // Service Account info
    $client_id = 'XXX.apps.googleusercontent.com';
    $service_account_name = 'XXX@developer.gserviceaccount.com';
    $key_file_location = IPS_GetKernelDir()."scripts\\certificates\\Kalenderabru.p12"; // Pfad wo die p12 Datei liegt.

    $client = new Google_Client();
    $client->setApplicationName("Allgemein_Kalender");
    $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);


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

//HTML Class
//*
// * Version: abgespeckt
// *
// */
class HTML {

  const CRLF = "
";
  const colClassName = '_col_';

//*
//  * Erstellt HTML-Code für ein Tabelle mit Werten
//  * $name = className für table
//  * $titleArr = array('Spaltenname1','Spaltenname2',..)
//  * $dataArr = array(
//  *    array('WertZeile1Spalte1','WertZeile1Spalte2',..)
//  *    array('WertZeile2Spalte1','WertZeile2Spalte2',..)
//  *
//  * dataArr = array(
//  *   'spalte1' => 'spalte2',
//  * )
//  */
  public static function Table($name,array $titleArr,array $dataArr) {
    $cn = self::colClassName;
    $html = '<table class="'.$name.'">'.self::CRLF.'<tr>';
    foreach($titleArr as $i => $title) {
      $html .= '<th class="'.$cn.$i.'">'.$title.'</th>';  //Überschrift
    }
    $html .= '</tr>'.self::CRLF;
    if(! empty($dataArr)) {
      foreach($dataArr as $k => $subArr) {
        $html .= '<tr>'.self::CRLF;
        if(is_array($subArr)) {
          foreach($subArr as $i => $colValue) {
            $html .= '<td class="'.$cn.$i.'">'.$colValue.'</td>';
          }
        }
        else {
          $html .= '<td class="'.$cn.'0">'.$k.'</td><td class="'.$cn.'1">'.$subArr.'</td>';
         }
        $html .= '</tr>'.self::CRLF;
      }
    }
    $html .= '</table>'.self::CRLF;
    return $html;
  }
}


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

    $c=0;
    foreach ($events->getItems() as $event)
                {
            $Ergebnis[$c]['Start'] = fmt_gdate($event->getStart());
            $Ergebnis[$c]['Ende'] = fmt_gdate($event->getEnd());
                $Ergebnis[$c]['Beschreibung'] = iconv('UTF-8', 'ISO-8859-1',$event->getSummary());
                $Ergebnis[$c]['Ort'] = iconv('UTF-8', 'ISO-8859-1',$event->getLocation());

                $c++;
                }

    //echo HTML::Table('Tab',array('Start','Ende','Beschreibung','Ort'),$Ergebnis);
    $ausgabe = HTML::Table('Tab',array('Start','Ende','Beschreibung','Ort'),$Ergebnis); //Ergebnis in Variable schreiben
    SetValue(13529 /*[Information\Google\Listenansicht\Liste]*/,$ausgabe); //Variabel in String-Variable mit HTML Profil schreiben.
   }


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

?>

Unter scripts\google-api-php-client\autoload.php:
Folgenden Eintrag habe ich angepasst:

$error = "google-api-php-client's autoloader was moved to src/Google/autoload.php in 1.1.3. This ";
$error .= "redirect will be removed in 1.2. Please adjust your code to use the new location.";
trigger_error($error, E_USER_DEPRECATED);
require_once dirname(__FILE__) . 'scripts/google-api-php-client/src/Google/autoload.php';

Die Ausgabe in eine Variable mit Profil HTML sieht dann- im Webfront - wie folgt aus:

HTML.JPG

bin zu Dumm irgendwo sind Fehler, habe das Script übernommen meine Daten drin, aber da fragt er schon das das @Zeichen nicht sein darf, verzweifle noch

hallo mastermind1,
kann ich Dir nicht eine Mail schicken mit meinem Script damit Du siehst wo der Fehler ist, komme nicht weiter

Hi Frank,

wenn er wegen dem @ meckert…hast du vlt. einfach nur die " oder vergessen?!

Grüße,
Chris

die " habe ich stehen lassen, jetzt mekert er nicht mehr deshalb sonder wegen Zeile 35 Allgemeine _Kalender
Wo ändere ich diese openSSl Datei in der PHP oder unter ip-symcon Scripts


das ist der Fehler

So ein Fehler kommt meistens, wenn man davor vergessen hat eine Klammer zu schließen oder ein ; vergessen hat oder sowas in der Art. Kann man ohne Script jetzt nur raten :wink:

Grüße,
Chris

die beiden SSl Dateien lassen sich nicht verschieben, er fragt immer nach Admin Berechtigungen, kann ich aber nirgens ändern habe alles auf vollzugriff

so ssl ist Geschichte, aber der letzte Fehler kommt immer noch, habe auch Klammern und " alles gelassen wie es geschrieben wurde