Outlook Termine anzeigen.

Hallo,

ich weiß es ist schon oft drüber geredet worden, gibt es mittlerweile eine Möglichkeit, Termin aus Outlook in IPS anzuzeigen.

Evt. muss man vorher die Termine automatisch ein eine Text oder Excel Datei exportieren.

Gruß Uwe

In Outlook gibt es die Möglichkeit seine Kontakte in eine HTML-Datei zu exportieren. Du kannst auch einstellen, was exportiert wird. Diese HTML_Datei speicherst du dann ab und im Dashboard lässt du sie mittels Webbrowserelement anzeigen.

Hallo Leute,

ein sehr interessantes Thema! Ich hatte mal die Idee, ein kleine App in VB zu schreiben, die dann über den von Schablone zur Verfügung gestellten Anleitung bzw. Schnittstelle (http://www.ip-symcon.de/forum/f13/soap-ueber-vb-net-step-step-11366/) die Ergebnisse an IPS übergibt.
Ich habe viel in VB 6 gemacht, aber an der aktuellen Version bin ich derart gescheitert, dass ich selbst die von MS geposteten Beispiele zur Kommunikation mit Outlook nicht zum Laufen zu bekommen waren…:frowning:

Die App sollte dann jedenfalls solange laufen, wie der Rechner läuft auf dem Outlook eben auch läuft und die entsprechenden Daten dann regelmäßig an IPS übergeben…

Vielleicht kommt man daran ja gemeinsam weiter?:wink:

Joachim

wenn dein outlook auf exchange aufsetzt, dann hau mal wgreipl and, der hat eine webfront integration dazu ;).

Hallo pleibing,

ein Outlook auf Exchange zuhause wäre schon sehr interessant (wenn meine Rechnerstruktur mit Media-Portal HTPC, FreeNAS Fileserver, IPS-Server und diversen Workstations nicht nacheinander gekommen wäre, hätte ich das meiste sicher auf einer zentralen Maschine und dann vielleicht auch Exchange laufen - aber was noch nicht ist, kann ja noch werden :)), leider habe ich aber nur das „normale“ Outlook auf einem meiner Rechner laufen…

Joachim

Hallo,

ich habe meine Termine als Textdatei (Komma getrennt) exportiert. Und nutze das Skript zu Listen Erstellung. Um diese im Dashbord anzuzeigen. Ich habe 2 String Variable (heute,morgen). Das Skript trigger ich jede NAcht um 00:00Uhr.

<?
$menge 		    = 1;                                             // Listen Größe
$id_temine_heute 	    = 55306 /*[Skript\Termine\Termine anzeigen\Termine Heute]*/;
$id_temine_morgen    = 13962 /*[Skript\Termine\Termine anzeigen\Termine Morgen]*/;
$sucheDatum_heute  = date("d:m:Y");
$sucheDatum_morgen= date("d:m:Y",mktime (0,0,0,date("m"),date("d")+1,date("y")));
$string_heute           = "";
$string_morgen         = "";
$filename 	    = IPS_GetKernelDir()."Termine.txt";
$termineffile	    = file_get_contents($filename);     					// Einträge in Variable einlesen
$termine_arr_komplett = explode("
", $termineffile);   					// nach Zeilenumbruch trennen und in array

print $sucheDatum_morgen;

foreach($termine_arr_komplett as $key => $value)     							// alle Einträge durchlaufen
	{
	$value 			= str_replace('"',"",$value);       						// "" rausfiltern
	$termine_array = explode(",", $value);    									// einzelnen Datensatz in Daten zerlegen
	// Termine Heute
   If ($sucheDatum_heute == $termine_array[1])
	   {
//	   $datum 	= $termine_array[1];
	   $time		= substr($termine_array[2],0,5);
      $betreff = $termine_array[0];
	   If ($time == "00:00") { $time = "     "; }
	   $string_heute  = (" ".$time."   ".$betreff."
".$string_heute);
      }
		TextboxListe($id_temine_heute,$string_heute,$menge);

	// Termine Morgen
   If ($sucheDatum_morgen == $termine_array[1])
	   {
//	   $datum 	= $termine_array[1];
	   $time		= substr($termine_array[2],0,5);
      $betreff = $termine_array[0];
	   If ($time == "00:00") { $time = "     "; }
	   $string_morgen  = (" ".$time."   ".$betreff."
".$string_morgen);
      }
		TextboxListe($id_temine_morgen,$string_morgen,$menge);
	}

//------------- Terminliste klein ----------------------
function TextboxListe($ID,$wert,$menge)
{
	//Funktion zur Listenerstellung (ID , aktuellerWert , Menge der zu berücksichtigenden Werte)
   $object = IPS_GetObject($ID);
   $buffer = explode("
",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $wert);                          // neuen Messwert ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       		// alten Wert abschneiden
   $string = implode("
",$buffer);
   IPS_SetInfo($ID,$string);                               	// im Infobereich der Variablen, das Array ablegen
   SetValue($ID,$string);                                  	// Variable beschreiben
   return ($string);
}

?>

Mann müßte jetzt nur noch was haben das Outlook alleine die Termine exportiert.

Gruß Uwe

Hallo Uwe,

eine sehr interessante Geschichte!
Den Export aus dem Outlook machst Du manuell?

Joachim

Hallo Uwe,

ich habe Dein Skript mal ausprobiert und habe zwei Fehlermeldung und zwar hier:

If ($sucheDatum_heute == $termine_array[1])

und hier:

 If ($sucheDatum_morgen == $termine_array[1])

. Die Fehlermeldung lautet in beiden Fällen: „Notice: Undefined offset: 1“. Kannst Du mir sagen, was das zu bedeuten hat?

Joachim

Hi Joachim,

kann ich dir nicht sage, es hat mit der Array Erstellung zu tun. Das Skript läuft aber trotzdem. In der Termin.txt steht das Datum an Stelle 1 (Array[1]). Würde man nach Stelle 0 (Array[0]) suchen kommt der Fehler nicht.

Aber an Stelle 0 stehet in der Termin.txt der Betreff des Termins.

Den Export aus Outlook mache ich momentan noch manuell.

Gruß Uwe

Hallo Uwe,

es lag offensichtlich daran, dass die letzte Zeile der Outlook-Export-Datei „leer“ war (aber durch ein „Return“ noch „gesetzt“ war), da kann man sicherlich programmiertechnisch noch etwas machen…:wink:

Joachim

@jpaeper:

eine interessante möglichkeit wäre den sbs 2003 gebraucht zu kaufen, da viele (zumindest unsererer kunden) auf sbs 2008 umsteigen.

der ist auch 32 bit und sehr ressourcenschonend.

denn könntest du auf deinen htpcs server machen mit mediaportal, hatte ich früher auch mal, danach hatte ich whs (basis sbs 2003) und auch windows server 2008 bzw. sbs 2008.

man muß dazu jedoch ein wenig patchen (bei whs/sbs2003 den mediaplayer rein und bei win2008/sbs2008 dvb unterstützung), wenn du möchtest, dann suche ich dir die anleitungen dazu raus.

alternativ könntest du auch einen windows 2003 server 32 bit kaufen (wie der zufall es will habe ich einen hier für 100€ liegen ;)) und dann die exchange 2007 32 bit trial installieren (exchange 2007 hat noch eine 32 bit trial, die nicht für produktive umgebungen freigegeben ist. die trial läuft zwar nach 180 tagen ab - funtioniert aber komplett weiterhin, gibt halt nur bescheid das die abgelaufen ist. exchange 2010 gibt es dagegen nur noch als 64 bit).

anleitungen zur exchange installation habe ich auf Weiterleitung .

Achja, frag aber Wgreipl mit welcher Exchange Version er seine Webfront integration mit Soap gemacht hat, ich meine das war schon mit Exchange 2003 - bin mir aber nicht sicher.

Probiere es mal so. Eine Zeile ohne Betreff wird jetzt rausgefilter.

<?
$menge 					 = 1;                                             // Listen Größe
$id_temine_heute 		 = 55306 /*[Skript\Termine\Termine anzeigen\Termine Heute]*/;
$id_temine_morgen     = 13962 /*[Skript\Termine\Termine anzeigen\Termine Morgen]*/;
$sucheDatum_heute		 = date("d:m:Y");
$sucheDatum_morgen	 = date("d:m:Y",mktime (0,0,0,date("m"),date("d")+1,date("y")));
$string_heute         = "";
$string_morgen        = "";
$filename 				 = IPS_GetKernelDir()."Termine.txt";
$termineffile			 = file_get_contents($filename);     					// Einträge in Variable einlesen
$termine_arr_komplett = explode("
", $termineffile);   					// nach Zeilenumbruch trennen und in array


foreach($termine_arr_komplett as $key => $value)     							// alle Einträge durchlaufen
	{
// $value 			= str_replace('
',"",$value);       						// CR rausfiltern
	$value 			= str_replace('"',"",$value);       						// "" rausfiltern
	$termine_array = explode(",", $value);	  										// einzelnen Datensatz in Daten zerlegen
	
   If ($termine_array[0] != "")
		{
		// Termine Heute
  		If ($sucheDatum_heute == $termine_array[1])
		   {
	//	   $datum 	= $termine_array[1];
		   $time		= substr($termine_array[2],0,5);
	      $betreff = $termine_array[0];
		   If ($time == "00:00") { $time = "     "; }
		   $string_heute  = (" ".$time."   ".$betreff."
".$string_heute);
	      }
			TextboxListe($id_temine_heute,$string_heute,$menge);

		// Termine Morgen
	   If ($sucheDatum_morgen == $termine_array[1])
		   {
	//	   $datum 	= $termine_array[1];
		   $time		= substr($termine_array[2],0,5);
	      $betreff = $termine_array[0];
		   If ($time == "00:00") { $time = "     "; }
		   $string_morgen  = (" ".$time."   ".$betreff."
".$string_morgen);
	      }
			TextboxListe($id_temine_morgen,$string_morgen,$menge);
		}
	}

//------------- Terminliste klein ----------------------
function TextboxListe($ID,$wert,$menge)
{
	//Funktion zur Listenerstellung (ID , aktuellerWert , Menge der zu berücksichtigenden Werte)
   $object = IPS_GetObject($ID);
   $buffer = explode("
",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $wert);                          // neuen Messwert ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       		// alten Wert abschneiden
   $string = implode("
",$buffer);
   IPS_SetInfo($ID,$string);                               	// im Infobereich der Variablen, das Array ablegen
   SetValue($ID,$string);                                  	// Variable beschreiben
   return ($string);
}

?>

Gruß Uwe

Hallo Jungs,

sollte jemand den Exchange-Gedanken weiter verfolgen wollen…

… die korrekte SOAP-Kommunikation ist erst mit Exchangeserver 2007 und höher möglich. Meiner läuft mit einem SBS2008 und Exchange 2007, auch 2010 soll schon jemand getestet haben.

Hallo pleibing und Werner,

da habt ihr mir wieder ein Floh ins Ohr gesetzt!:slight_smile:

Jetzt bin ich auch ins Grübeln gekommen, aber vielleicht lasse ich jetzt erst einmal bei der „light“-Version. Wenn man Outlook noch dazu bringen könnte den Export selbst in regelmäßigen Abständen zu machen (vielleicht durch ein Outlook-Skript oder eben über eine kleine VB-App + Soap-Schnittstelle) dann hätte ich bzw. andere Interessenten das Ziel vielleicht auch erreicht, nur ohne noch mehr Hardware (habe hier ja schon eine Menge „rumstehen“;)). Wenn sowieso ein Hardwaretausch ansteht, dann werde ich sicherlich auch über eine „Neuordnung“ nachdenken (müssen).

@Uwe: Wie machst Du den Outlook-Export? In regelmäßigen Abständen, aber „manuell“?

Joachim

kein problem, viel erfolg damit.

bin auch bei mir zuhause am abrüsten. verkaufe meine 3 mac minis und hole mir das neue modell und 4 apple tv.

weg vom windows mediacenter zu einer reinen mac umgebung zuhause (bis auf das virtuelle xp für ips und das firmen windowslaptop meiner frau fürs homeoffice).

Hier noch mal das Skrip in geänderter Form. Es kann der Zeitraum für die zweite (Vorschau) Variable eingestell werden.

Jetzt muß ich nur mal sehen wie ich Outlook dazu bringe alleine zu exportieren, wenn jeman VB (Makro) kann bitte um Hilfe.


<?

$filename = IPS_GetKernelDir()."Termine.txt";             // Speicherort Termin Datei

//===================================================================
$id_temine_heute = CreateVariableByName($IPS_SELF, "Termine Heute",	3, "~String", "");
$id_temine_woche = CreateVariableByName($IPS_SELF, "Termine Woche",	3, "~String", "");
$id_temine_heute_meldung = CreateVariableByName($IPS_SELF, "Termine Heute Meldung",	0, "", "");
$sucheDatum_heute = mktime (0,0,0,date("m"),date("d"),date("Y"));
$sucheDatum_woche_start = mktime (0,0,0,date("m"),date("d")+1,date("Y"));
$sucheDatum_woche_ende = mktime (0,0,0,date("m"),date("d")+7,date("Y"));
$string_heute = "";
$string_woche = "";
$temine_heute_meldung = false;
$termineffile = file_get_contents($filename);     				// Einträge in Variable einlesen
$termine_arr_komplett = explode("
", $termineffile);   				// nach Zeilenumbruch trennen und in array

foreach($termine_arr_komplett as $key => $value)     							// alle Einträge durchlaufen
	{
	$value 			= str_replace('"',"",$value);       						// "" rausfiltern
	$termine_array = explode(",", $value);	  										// einzelnen Datensatz in Daten zerlegen
	
   If ($termine_array[0] != "Betreff" and $termine_array[0] != "")      // Wenn BETREFF nicht leer
		{
		$termin_datum_array  = explode(".", $termine_array[1]);           // Datumswert Termin zerlegen
  	  	$termin_tag 	 		= (int)$termin_datum_array[0];
		$termin_monat 			= (int)$termin_datum_array[1];
		$termin_jahr  			= (int)$termin_datum_array[2];
		$termin_datum			= mktime(0,0,0,date($termin_monat),date($termin_tag),date($termin_jahr));

		// Termine Heute
  		If ($sucheDatum_heute  == $termin_datum)
		   {
		   $temine_heute_meldung = true;
		   $time		= substr($termine_array[2],0,5);
	      $betreff = $termine_array[0];
		   If ($time == "00:00") { $time = "     "; }
		   $string_heute  = (" ".$time."    ".$betreff."
".$string_heute);
	      }
			TextboxListe($id_temine_heute,$string_heute,1);

		// Termine Woche
	   If ($termin_datum >= $sucheDatum_woche_start and $termin_datum < $sucheDatum_woche_ende)
		   {
		   $time		= substr($termine_array[2],0,5);
	      $betreff = $termine_array[0];
		   If ($time == "00:00") { $time = "     "; }
		   $string_woche  = (" ".date("d.m.y",$termin_datum)."    ".$time."     ".$betreff."
".$string_woche);
	      }
			TextboxListe($id_temine_woche,$string_woche,1);
		}
	}

setValue($id_temine_heute_meldung, $temine_heute_meldung);

//------------- Terminliste klein ----------------------
function TextboxListe($ID,$wert,$menge)
{
	//Funktion zur Listenerstellung (ID , aktuellerWert , Menge der zu berücksichtigenden Werte)
   $object = IPS_GetObject($ID);
   $buffer = explode("
",$object['ObjectInfo'],$menge);
   array_unshift ($buffer, $wert);                          // neuen Messwert ins Array eintragen
   $buffer = array_slice ( $buffer, 0, $menge );       		// alten Wert abschneiden
   $string = implode("
",$buffer);
   IPS_SetInfo($ID,$string);                               	// im Infobereich der Variablen, das Array ablegen
   SetValue($ID,$string);                                  	// Variable beschreiben
   return ($string);
}
//------------------ Variable anlegen -------------------
function CreateVariableByName($id, $name, $type, $profile, $wert)
{
    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;
}
?>

Hallo Joachim,

ich habe jetzt 2 Tage lang im Internet gesucht, aber nichts gefunden das es automatisch geht.

Gruß Uwe

vor einigen jahren habe ich mal eine syncro mit outlook via vba (access) geschrieben.
du kannst ja zb aus excel/access mittels sql auf outlook-daten zugreifen und damit eine export-datei erzeugen und diese dann mit deinem script parsen. die fkt. könnte man zb. autom. bei outlook-start auslösen
leider ist diese fkt. sehr tief in meine software eingebettet, sodass man sie so ohne weiteres alleinstehend nicht rausziehen kann.

Vielleicht wäre es auch eine Lösung ein Outlook Makro aufzuzeichnen und beim starten von Outlook und beim beenden zu starten.
Nicht getestet, könnte aber funktionieren.

Viele Grüße
Chris