T
Thomas_xp
Aktives Mitglied
Thread Starter
- Dabei seit
- 05.04.2006
- Beiträge
- 632
- Reaktionspunkte
- 13
Hi Leute,
ich versuche gerade ein Script zu schreiben, welches in einem Kalender in iCal Events mit bestimmten Kriterien sucht. Ein Kriterium ist dabei das Datum, nämlich ein Monat / der letzte Monat. Dummer Weise geht bei Schleifen das script beim ersten Event im Kalender los bis zum Ende und macht seine Fallunterscheidungen auf dem Weg. Dies ist natürlich sehr ineffizient, da man zB. einen 3 Jahre alten Kalender durchgeht, obwohl man nur einen Monat braucht.
Hat jemand eine Idee?
Was ich momentan hab, funktioniert wunderbar, brauch bei meinem Kalender mit ca. 900 Einträgen ca. 32 Sekunden. Das ist ein Kalender von ca. 18 Monaten. Nicht wundern, ich lasse es der Einfachheit halber in unterschiedliche Listen eintragen, weil ich diese dann in eine Numbers-Tabelle eintrage.
Der "kritische" Teil...
ich versuche gerade ein Script zu schreiben, welches in einem Kalender in iCal Events mit bestimmten Kriterien sucht. Ein Kriterium ist dabei das Datum, nämlich ein Monat / der letzte Monat. Dummer Weise geht bei Schleifen das script beim ersten Event im Kalender los bis zum Ende und macht seine Fallunterscheidungen auf dem Weg. Dies ist natürlich sehr ineffizient, da man zB. einen 3 Jahre alten Kalender durchgeht, obwohl man nur einen Monat braucht.
Hat jemand eine Idee?
Was ich momentan hab, funktioniert wunderbar, brauch bei meinem Kalender mit ca. 900 Einträgen ca. 32 Sekunden. Das ist ein Kalender von ca. 18 Monaten. Nicht wundern, ich lasse es der Einfachheit halber in unterschiedliche Listen eintragen, weil ich diese dann in eine Numbers-Tabelle eintrage.
Der "kritische" Teil...
PHP:
tell application "Calendar"
tell calendar "Calendar" -- your calendar here
set theEvents to every event
repeat with current_event in theEvents
if summary of current_event contains "AE" then
if start date of current_event is greater than or equal to a_date then
...
HTML:
set a_date to (current date) - (60 * 60 * 24 * 33)
set theList to **}
set theYears to **}
set theMonths to **}
set theDays to **}
set AEs to **}
tell application "Calendar"
tell calendar "Calendar" -- your calendar here
set theEvents to every event
repeat with current_event in theEvents
if summary of current_event contains "AE" then
if start date of current_event is greater than or equal to a_date then
set theList to theList & summary of current_event -- Terminname in Liste eintragen
set theDate to start date of current_event -- Anfangsdatum mit Zeit des Termins
set theYears to theYears & year of theDate -- Jahr in Liste eintragen
-- Monat als Nummer ermittlen und eintragen ## Anfang
-- super mega Voodoo!
copy theDate to b
set the month of b to January
set monthNum to (1 + (theDate - b + 1314864) div 2629728)
set theMonths to theMonths & monthNum
-- Monat als Nummer ermittlen und eintragen ## Ende
set theDays to theDays & day of theDate -- Tag in Liste eintragen
set theDateEnd to end date of current_event
set AEs to AEs & (theDateEnd - theDate) / (60 * 60 / 4) -- AEs über Termin Anfang/Ende ermitteln un eintragen
end if
end if
end repeat
end tell
end tell