Hallo,
auch ich wollte mal ein etwas kreativen Input liefern, nachdem auch mir im Forum immer so gut geholfen wurde.
Folgendes Szenario:
Wir haben einen iMac als Arbeitsplatz-PC im Haus (der aber nur bei Bedarf eingeschaltet ist). Auf diesem Mac verwendet wir die iCal Kalenderanwendung als „Zentrale“ für alle unsere Termine. Die bietet sich auch wegen iPhone Sync. an.
Jetzt wollte ich mir gerne jeden Morgen alle Termine des aktuellen Tages per Sprachausgabe ausgeben lassen. Ein Script was mich Morgends im Bad per Sprache begrüßt gibt es schon, musste aber eben noch um die Terminfunktion erweitert werden.
Die Logik dazu besteht aus zwei Teilen.
Voraussetzung:
Eine Windows Freigabe auf dem IPS Server und einen Benutzer mit Schreibrechten auf dieser Freigabe. Hier wird die CSV Datei mit den zukünftigen Terminen abgespeichert.
1.) AppleScript zum Exportieren aller zukünftigen Termine in eine CSV Datei:
set dateiname to "Volumes:transfer:ical_Kalender.csv" as string
-- IP Symcon Transfer Freigabe öffnen und eventuell alte Datei löschen
tell application "Finder"
mount volume "smb://192.168.3.9/transfer" as user name "transfer" with password "xxx"
try
do shell script "rm /Volumes/transfer/ical_Kalender.csv"
end try
end tell
tell application "iCal"
set datei to open for access dateiname with write permission
set AlleKalender to name of every calendar
repeat with EinKalender in AlleKalender
tell calendar EinKalender
set AlleTermine to (every event whose start date ≥ (get current date))
repeat with EinTermin in AlleTermine
set Zusammenfassung to summary of EinTermin
set Beginn to start date of EinTermin
set {month:m, year:y, day:d, time:t} to Beginn
set m to m as integer
set Datum to d & "." & m & "." & y as string
set Zeit to time string of Beginn
-- Jetzt die Informationen in eine CSV Datei eintragen
-- Aufbau:
-- <Datum>;<Zeit>;<Zusammenfassung>
write (Datum & ";" & Zeit & ";" & Zusammenfassung & "
") to datei as «class utf8»
end repeat
end tell
end repeat
close access datei
end tell
Da ich noch Anfänger im Punkte „AppleScript“ bin möge man mir eventuelle Unschönheiten nachsehen :rolleyes:.
Alle roten Textstellen müssen noch angepasst werden (Freigabename, Benutzer und Passwort).
Ein Fehlerhandling soll noch dazu kommen → später :D.
Wenn man das ausführt, dann liegt die Datei „ical_Kalender.csv“ auf dem IPS Server in der entsprechenden Freigabe.
Mit dem folgenden PHP Code kann man diese dann in eigenen Scripten auswerten und nach belieben verwenden.
2.) PHP Scriptbeispiel:
// Jetzt prüfen wir eventuelle Termine heute
$termine = IPS_GetKernelDir()."//transfer//ical_Kalender.csv";
$termin_gefunden = 0;
$termin_text = "";
$datum_aktuell = date("j.n.Y");
if (($handle = fopen($termine, "r")) !== FALSE)
{
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$datum = $data[0];
$zeit = $data[1];
$zusammenfassung = utf8_decode($data[2]);
if($datum == $datum_aktuell)
{
// Termin für heute gefunden
// In ein Array eintragen
$termin_gefunden = 1;
if($zeit == "00:00:00")
{
$termin_text = $termin_text . " " . $zusammenfassung . " - ohne genaue Uhrzeit. ";
} else {
$termin_text = $termin_text . " " . $zusammenfassung . " - um " . $zeit . " Uhr. ";
}
}
}
}
Das AppleScript muss natürlich jetzt regelmäßig ausgeführt werden, da sonst IPS die neuen Termine nicht mitbekommt.
Vielleicht hilft dem einen oder anderen mein Script etwas weiter oder inspiriert zu eigenen neuen Ideen.
Rückmeldungen (jeder Art) wären natürlich schön.
Viele Grüße
Thorsten