Scripte für den Google Kalender. (Ehemals Termine eintragen)

IPS 3.1 kann es nicht sein. Ich habe auch 3.1. Bei mir läuft noch alles. Heute extra für dich probiert.

---- Schablone per Tapatalk ----

So, jetzt kann ich auch schlafen gehen.
Mit ungelösten Problemen kann ich nicht schlafen :smiley:

Habe im Internet ein bißchen gestöbert und habe dann den Hinweis gefunden …
Das Problem lag an der Exception.php, da fehlte ein bißchen Code.

Nachdem ich die Zend.zip vom 1. Post nochmal geladen habe und den kompletten
Ordner nochmal ins IPS Verzeichnis kopiert habe war die Sache erledigt.

Auch die Abfrage des Monats und Jahreskalenders mit Calender ID funktioniert.

Besten Dank für Eure Hilfe. :slight_smile:
Gruß
Manfred

Komisch! Aber nicht Komisch wie lustig. :cool:

Ich habe das ähnlich bei Zip-Dateien die ich von RWN lade.
Da fehlt mir dann auch immer die hälfte nach dem entpacken.
Ich habe aber nie wirklich verstanden warum das so ist.

Na ja. Hauptsache es läuft. -> Ich brauchte kein Dschungelkamp zu schauen!
Hatte also Vorteile. Eventuell hat ja heute Abend so gegen 22 Uhr noch jemand ein Problem!! :smiley:

Ist immer das erstaunliche bei der Sendung, keiner schaut es und die Quoten steigen trotzdem :wink: :smiley: :smiley:

Hallo,

habe die Anleitung auf der ersten Seite befolgt.

Leider bekomme ich beim Ausführen des Skriptes diesen Error…

"
Abort Processing during Fatal-Error: mktime(): You should be using the time() function instead
Error in Script C:\ips\scripts\42972.ips.php on Line 57
"

Woran liegt das? :confused:

EDIT: Meine bisherigen Versuche…

  1. Habe die hier in dem Thread eingestellte „php_openssl.dll“ geladen und in den ext Ordner kopiert.
  2. Habe auch die hier eingestellten „libeay32.dll“ und „ssleay32.dll“ geladen und gegen die „alten“ ersetzt.
  3. den gesamten Zend Ordner habe ich in den „scripts“ Ordner kopiert
  4. Dienst auch gestoppt und neu gestartet

Dann mach doch was er sagt. Ich bin erst am WE zu Hause.

Gesendet von meinem i9205 mit Tapatalk

Wenn das Script schon Variablen angelegt hat würde ich die löschen!

Gesendet von meinem i9205 mit Tapatalk

Ich habe jetzt einfach mal ganz naiv alle „mktime“ in „time“ geändert…

Jetzt hat das Skript alle Variablen angelegt


 <?
/*=============================================================
skrGoogleKalenderSchreiben - Martin Heinzel - 24.11.2011
Version: 0.1

Beschreibung:
Mit diesem Script werden Termine in den Google Kalender geschrieben.

Wiederholungen:

0  =  keine
1  =  wöchentlich
2  =  14 Tage
3  =  monatlich
4  =  jährlich

Änderungen
----------

tt.mm.jjjj von Version x.x -> y.y

Beschreibung:

================================================================*/

// Variablen Deklaration --------------------------------------

//Bitte anpassen
//---------------------------------------------------------------
$user                             = 'xxxx'; //-> Email Adresse von Google-Mail
$pass                             = 'xxxx.';                    //-> Passwort der Email Adresse
//---------------------------------------------------------------

// ID's
//--------------
// Kontrolle der ID's
$id_StartDay              =     @IPS_GetObjectIDByName("StartDay", $IPS_SELF);
// Wenn es diese Variable noch nicht gibt dann wird das Script
// zum ersten mal aufgerufen und muss eingerichtet werden.
if($id_StartDay === false)
{

    // erstellen der Integer-Variablen
    //=================================
    //erzeugen und initialisieren der Variablen "Recur"
   $id_Recur             =  IPS_CreateVariable(1);
    IPS_SetName($id_Recur, "Recur");
    IPS_SetParent($id_Recur, $IPS_SELF);
    SetValueInteger($id_Recur, 0);

    // erstellen der String-Variablen
    //=================================
    //erzeugen und initialisieren der Variablen "StartDay"
   $id_StartDay             =  IPS_CreateVariable(3);
    IPS_SetName($id_StartDay, "StartDay");
    IPS_SetParent($id_StartDay, $IPS_SELF);
    SetValueString($id_StartDay, date("d", time()+86400));

    //erzeugen und initialisieren der Variablen "StartMonth"
   $id_StartMonth             =  IPS_CreateVariable(3);
    IPS_SetName($id_StartMonth, "StartMonth");
    IPS_SetParent($id_StartMonth, $IPS_SELF);
    SetValueString($id_StartMonth, date("m", time()+86400));

    //erzeugen und initialisieren der Variablen "StartYear"
   $id_StartYear           =  IPS_CreateVariable(3);
    IPS_SetName($id_StartYear, "StartYear");
    IPS_SetParent($id_StartYear, $IPS_SELF);
    SetValueString($id_StartYear, date("Y", time()+86400));

    //erzeugen und initialisieren der Variablen "StartHour"
   $id_StartHour           =  IPS_CreateVariable(3);
    IPS_SetName($id_StartHour, "StartHour");
    IPS_SetParent($id_StartHour, $IPS_SELF);
    SetValueString($id_StartHour, date("H", time()+86400));

    //erzeugen und initialisieren der Variablen "StartMinute"
   $id_StartMinute         =  IPS_CreateVariable(3);
    IPS_SetName($id_StartMinute, "StartMinute");
    IPS_SetParent($id_StartMinute, $IPS_SELF);
    SetValueString($id_StartMinute, date("i", time()+86400));

    //erzeugen und initialisieren der Variablen "EndDay"
   $id_EndDay             =  IPS_CreateVariable(3);
    IPS_SetName($id_EndDay, "EndDay");
    IPS_SetParent($id_EndDay, $IPS_SELF);
    SetValueString($id_EndDay, date("d", time()+90000));

    //erzeugen und initialisieren der Variablen "EndMonth"
   $id_EndMonth             =  IPS_CreateVariable(3);
    IPS_SetName($id_EndMonth, "EndMonth");
    IPS_SetParent($id_EndMonth, $IPS_SELF);
    SetValueString($id_EndMonth, date("m", time()+90000));

    //erzeugen und initialisieren der Variablen "EndYear"
   $id_EndYear           =  IPS_CreateVariable(3);
    IPS_SetName($id_EndYear, "EndYear");
    IPS_SetParent($id_EndYear, $IPS_SELF);
    SetValueString($id_EndYear, date("Y", time()+90000));

    //erzeugen und initialisieren der Variablen "EndHour"
   $id_EndHour           =  IPS_CreateVariable(3);
    IPS_SetName($id_EndHour, "EndHour");
    IPS_SetParent($id_EndHour, $IPS_SELF);
    SetValueString($id_EndHour, date("H", time()+90000));

    //erzeugen und initialisieren der Variablen "EndMinute"
   $id_EndMinute         =  IPS_CreateVariable(3);
    IPS_SetName($id_EndMinute, "EndMinute");
    IPS_SetParent($id_EndMinute, $IPS_SELF);
    SetValueString($id_EndMinute, date("i", time()+90000));

    //erzeugen und initialisieren der Variablen "Titel"
   $id_Titel                =  IPS_CreateVariable(3);
    IPS_SetName($id_Titel, "Titel");
    IPS_SetParent($id_Titel, $IPS_SELF);
    SetValueString($id_Titel, "Das ist ein Termin von IPS");

    //erzeugen und initialisieren der Variablen "Description"
   $id_Description          =  IPS_CreateVariable(3);
    IPS_SetName($id_Description, "Description");
    IPS_SetParent($id_Description, $IPS_SELF);
    SetValueString($id_Description, "Beschreibung für den IPS Testtermin");

    //erzeugen und initialisieren der Variablen "Where"
   $id_Where                =  IPS_CreateVariable(3);
    IPS_SetName($id_Where, "Where");
    IPS_SetParent($id_Where, $IPS_SELF);
    SetValueString($id_Where, "Bocholt");

    // erstellen der Bool-Variablen
    //=================================
    //erzeugen und initialisieren der Variablen "AllDay"
   $id_AllDay               =  IPS_CreateVariable(0);
    IPS_SetName($id_AllDay, "AllDay");
    IPS_SetParent($id_AllDay, $IPS_SELF);
    SetValueBoolean($id_AllDay, False);

    // nach dem Anlegen das Script beenden
    return;
}
else
{

   $id_StartMonth       =  IPS_GetObjectIDByName("StartMonth", $IPS_SELF);
   $id_StartYear        =  IPS_GetObjectIDByName("StartYear", $IPS_SELF);
   $id_StartHour        =  IPS_GetObjectIDByName("StartHour", $IPS_SELF);
   $id_StartMinute      =  IPS_GetObjectIDByName("StartMinute", $IPS_SELF);
   $id_EndDay           =  IPS_GetObjectIDByName("EndDay", $IPS_SELF);
   $id_EndMonth         =  IPS_GetObjectIDByName("EndMonth", $IPS_SELF);
   $id_EndYear          =  IPS_GetObjectIDByName("EndYear", $IPS_SELF);
   $id_EndHour          =  IPS_GetObjectIDByName("EndHour", $IPS_SELF);
   $id_EndMinute        =  IPS_GetObjectIDByName("EndMinute", $IPS_SELF);
     $id_Recur            =  IPS_GetObjectIDByName("Recur", $IPS_SELF);
   $id_Titel            =  IPS_GetObjectIDByName("Titel", $IPS_SELF);
   $id_Description      =  IPS_GetObjectIDByName("Description", $IPS_SELF);
   $id_Where            =  IPS_GetObjectIDByName("Where", $IPS_SELF);
   $id_AllDay           =  IPS_GetObjectIDByName("AllDay", $IPS_SELF);

}


// Variablen
//--------------
$StartDay         =  GetValueString($id_StartDay);
if(strlen($StartDay)< 2)
{
   $StartDay      =  "0".$StartDay;
   SetValueString($id_StartDay, $StartDay);
}

$StartMonth       =  GetValueString($id_StartMonth);
if(strlen($StartMonth)< 2)
{
   $StartMonth      =  "0".$StartMonth;
   SetValueString($id_StartMonth, $StartMonth);
}

$StartYear        =  GetValueString($id_StartYear);
if(strlen($StartYear)< 4)
{
   $StartYear      =  "20".$StartYear;
   SetValueString($id_StartYear, $StartYear);
}

$StartHour        =  GetValueString($id_StartHour);
if(strlen($StartHour)< 2)
{
   $StartHour      =  "0".$StartHour;
   SetValueString($id_StartHour, $StartHour);
}

$StartMinute      =  GetValueString($id_StartMinute);
if(strlen($StartMinute)< 2)
{
   $StartMinute      =  "0".$StartMinute;
   SetValueString($id_StartMinute, $StartMinute);
}

$EndDay           =  GetValueString($id_EndDay);
if(strlen($EndDay)< 2)
{
   $EndDay      =  "0".$EndDay;
   SetValueString($id_EndDay, $EndDay);
}

$EndMonth         =  GetValueString($id_EndMonth);
if(strlen($EndMonth)< 2)
{
   $EndMonth      =  "0".$EndMonth;
   SetValueString($id_EndMonth, $EndMonth);
}

$EndYear          =  GetValueString($id_EndYear);
if(strlen($EndYear)< 4)
{
   $EndYear      =  "20".$EndYear;
   SetValueString($id_EndYear, $EndYear);
}

$EndHour          =  GetValueString($id_EndHour);
if(strlen($EndHour)< 2)
{
   $EndHour      =  "0".$EndHour;
   SetValueString($id_EndHour, $EndHour);
}

$EndMinute        =  GetValueString($id_EndMinute);
if(strlen($EndMinute)< 2)
{
   $EndMinute      =  "0".$EndMinute;
   SetValueString($id_EndMinute, $EndMinute);
}

$Recur            =  GetValueInteger($id_Recur);
$Titel            =  GetValueString($id_Titel);
$Description      =  GetValueString($id_Description);
$Where            =  GetValueString($id_Where);
$AllDay           =  GetValueBoolean($id_AllDay);
$recurData         =    '';

//-------------------------------------------------------------

//benötigte Funktionen/Klassen
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

//--------------------------- Main ----------------------------

// Die Verbindung zum Kalender aufbauen
try
{
    $client = getClientLoginHttpClient($user, $pass);
}
catch(Exception $e)
{
    // prevent Google username and password from being displayed
    // if a problem occurs
    echo "Could not connect to calendar.";
    die();
}

// Event schreiben
//================

//Auswahl der Wiederholung
Switch($Recur)
{
    // keine
    case 0:

        //Erzeugen von Start und Endzeiten
       $startDate     =  $StartYear.'-'.$StartMonth.'-'.$StartDay;
        $endDate           =  $EndYear.'-'.$EndMonth.'-'.$EndDay;
      $tzOffset      =  '+01';

        if($AllDay)
        {
            $startTime     =  '';
          $endTime       =  '';
        }
        else
        {
          $startTime     =  $StartHour.':'.$StartMinute;
          $endTime       =  $EndHour.':'.$EndMinute;
        }

        createEvent ($client, $Titel, $Description, $Where, $startDate, $startTime, $endDate, $endTime, $tzOffset);
        break;

    // wöchentlich
    case 1:

        if($AllDay)
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."
";
        }
        else
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."T".$StartHour.$StartMinute."00"."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."T".$EndHour.$EndMinute."00"."
";
        }

        //wöchentlicher Termin
        $recurData                = $recurData."RRULE:FREQ=WEEKLY;INTERVAL=1"."
";


        createRecurringEvent ($client, $Titel, $Description, $Where, $recurData);
        break;

    // 14 Tage
    case 2:

        if($AllDay)
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."
";
        }
        else
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."T".$StartHour.$StartMinute."00"."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."T".$EndHour.$EndMinute."00"."
";
        }

        //14 Tage Termin
        $recurData                = $recurData."RRULE:FREQ=WEEKLY;INTERVAL=2"."
";

        createRecurringEvent ($client, $Titel, $Description, $Where, $recurData);
        break;

    // monatlich
    case 3:

        if($AllDay)
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."
";
        }
        else
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."T".$StartHour.$StartMinute."00"."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."T".$EndHour.$EndMinute."00"."
";
        }

        //monatlicher Termin
        $recurData                = $recurData."RRULE:FREQ=MONTHLY;INTERVAL=1"."
";

        createRecurringEvent ($client, $Titel, $Description, $Where, $recurData);
        break;

    // jährlich
    case 4:

        if($AllDay)
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."
";
        }
        else
        {
            //Startzeit
            $recurData                = $recurData."DTSTART;TZID=Europe/Berlin:".$StartYear.$StartMonth.$StartDay."T".$StartHour.$StartMinute."00"."
";
            //Endzeit
            $recurData                = $recurData."DTEND;TZID=Europe/Berlin:".$EndYear.$EndMonth.$EndDay."T".$EndHour.$EndMinute."00"."
";
        }

        //jährlich Termin
        $recurData                = $recurData."RRULE:FREQ=YEARLY;INTERVAL=1"."
";

        createRecurringEvent ($client, $Titel, $Description, $Where, $recurData);
}

//------------------------- Main ENDE --------------------------

//------------------------ Funktionen -------------------------

/**
 * Returns a HTTP client object with the appropriate headers for communicating
 * with Google using the ClientLogin credentials supplied.
 *
 * @param  string $user The username, in e-mail address format, to authenticate
 * @param  string $pass The password for the user specified
 * @return Zend_Http_Client
 */
function getClientLoginHttpClient($user, $pass)
{
  $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;

  $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
  return $client;
}

/**
 * Creates an event on the authenticated user's default calendar with the
 * specified event details.
 *
 * @param  Zend_Http_Client $client    The authenticated client object
 * @param  string           $title     The event title
 * @param  string           $desc      The detailed description of the event
 * @param  string           $where
 * @param  string           $startDate The start date of the event in YYYY-MM-DD format
 * @param  string           $startTime The start time of the event in HH:MM 24hr format
 * @param  string           $endDate   The end date of the event in YYYY-MM-DD format
 * @param  string           $endTime   The end time of the event in HH:MM 24hr format
 * @param  string           $tzOffset  The offset from GMT/UTC in [+-]DD format (eg -08)
 * @return string The ID URL for the event.
 */
function createEvent ($client, $title, $desc, $where,
                             $startDate, $startTime,
                             $endDate, $endTime, $tzOffset)
{
  $gc = new Zend_Gdata_Calendar($client);
  $newEntry = $gc->newEventEntry();
  $newEntry->title = $gc->newTitle(trim($title));
  $newEntry->where  = array($gc->newWhere($where));

  $newEntry->content = $gc->newContent($desc);
  $newEntry->content->type = 'text';

  $when = $gc->newWhen();
  if($startTime == '' and $endTime == '')
  {
      $when->startTime = $startDate;
      $when->endTime = $endDate;
  }
  else
  {
        $when->startTime = "{$startDate}T{$startTime}:00.000{$tzOffset}:00";
     $when->endTime = "{$endDate}T{$endTime}:00.000{$tzOffset}:00";
  }

  $newEntry->when = array($when);

  $createdEntry = $gc->insertEvent($newEntry);
  return $createdEntry->id->text;
}

/**
 * Creates a recurring event on the authenticated user's default calendar with
 * the specified event details.
 *
 * @param  Zend_Http_Client $client    The authenticated client object
 * @param  string           $title     The event title
 * @param  string           $desc      The detailed description of the event
 * @param  string           $where
 * @param  string           $recurData The iCalendar recurring event syntax (RFC2445)
 * @return void
 */
function createRecurringEvent ($client, $title, $desc, $where, $recurData)
{
  $gc = new Zend_Gdata_Calendar($client);
  $newEntry = $gc->newEventEntry();
  $newEntry->title = $gc->newTitle(trim($title));
  $newEntry->where = array($gc->newWhere($where));

  $newEntry->content = $gc->newContent($desc);
  $newEntry->content->type = 'text';
  $newEntry->recurrence = $gc->newRecurrence($recurData);

  $gc->post($newEntry->saveXML());
}

//--------------------- Funktionen ENDE ------------------------

?>


Wenn ich jetzt das Skript ein zweites Mal ausführe, dann kommt

„Could not connect to calendar.“

Edit: Der Kalender ist laut Google freigegeben…Siehe Anhang

Ist die openssl in der PHP.INI?

Schablone sein Handy.

ich bekomme es auch nicht hin, wo sehe ich die php ini

Immer wieder das Gleiche, Could not connect to calender, habe auch oben unter User und Passwort diese XML von google hinterlegt, geht alles nicht. Wenn ich in IPS nachsehe ist unter ext diese opl drin, also was dann noch?
Oder liegt es an der aktuellsten IPS?
Wie sieht die Kalendereingabe in der Webfront eigentlich aus, oder besser wie füge ich sie dann dort ein?

Hilfe wäre schon schön!!

Gesendet von meinem iPad mit Tapatalk

Ich muss erst mal mein IPS updaten. Eventuell ist das, dass Problem.
Ich melde mich!

Super danke, warte auf weitere Nachricht

Gesendet von meinem iPad mit Tapatalk

Hallo alle zusammen.

Soooo.

libeay32.zip (608 KB)

  1. Bitte diese Datei runterladen.
  2. Danach entpacken.
  3. IPS-Dienst stoppen
  4. Die php_openssl.dll Datei in den ext Ordner verschieben
  5. Die anderen beiden Dateien kommen direkt in den IPS-Ordner. Die müssen ersetzt werden!!
  6. IPS-Dienst starten
  7. Im IPS-Verzeichnis ist die php.ini. Bitte die Datei mit einem Texteditor öffnen.
    Dort muss die Zeile existieren:
extension = php_openssl.dll

Das wars.

es kommt keine Fehlermeldung:):D, wie nun weiter, welchen link muß ich in die Webfront übernehmen damit ich dort einen neuen Termin anlegen kann?
Gruß Frank

Das steht alles im Post #7. Mit dem ausführen des Script wir der Termin eingetragen.

Schablone sein Handy.

Visu Bilder sind im Post #33.

Schablone sein Handy.

Danke für die Antwort. Funktioniert auch, der Termin wird eingetragen mit Ausführung des Skripts, die Frage ist wie ich diese schöne Ansicht jetzt in die Webfront bekomme.
Also, soll ich jetzt jeden String in die Webfront übernehmen und so die Oberfläche Gestalten, aber wie kann ich dann den Wert ändern, habe das schon probiert, habe als Link den Skript gewählt und war alles in der Webfront, wenn ich auf Skript gedrückt habe hat er einen neuen Termin angelegt mit Bocholt, aber wenn ich auf die Werte drücken will geht nichts.
Gruß Frank

Gesendet von meinem iPad mit Tapatalk

Hat keiner etwas Hilfe für mich?

Gesendet von meinem iPad mit Tapatalk

Ich habe das Problem nicht ganz verstanden. Was meinst Du mit "Wenn ich auf den Wert drücke. Was für ein Wert?

Schablone sein Handy.