Frage

Ich versuche, ein Applescript zu schreiben iCal abzufragen und alle Ereignisse finde ich für ein bestimmtes Datum haben, in einem Kalender.

Ich begann durch ein einfaches Skript zu schreiben, die etwas einfach mit jedem Ereignis in einem bestimmten Kalender tut:

tell application "iCal"
  tell calendar "Reuniones"
    set the_events to every event
    repeat with an_event in the_events
        -- do something with every event
        set value to summary of an_event
    end repeat
   end tell
end tell

Allerdings ist dieses einfache Skript viel Zeit auszuführen (ein paar Sekunden) genommen, auch wenn ich nicht etwas komplexer in der Schleife zu tun. Ich habe Angst, dass das eigentliche Skript wirklich viel Zeit in Anspruch nehmen auszuführen.

Ich bin nicht sehr vertraut mit Applescript und so denke ich, ich tue etwas albern, die schwere Auswirkungen auf die Leistung hat.

Kann mir jemand erklären, warum dies geschieht so viel ausführen? Kann jemand etwas vorschlagen, meinen Code zu verbessern? Ich gehe jetzt starten Sie das Datum der Veranstaltung überprüft, mit einer Bedingung in der Schleife. Ich vermute, es muss ein Weg sein, für Veranstaltungen mit einem Datum zu suchen (wie die Automator Aktion des Fall ist), aber ich habe nicht zu tun in der Lage eine „native“ Art und Weise zu finden ....

EDIT : Ich verwende Mac OS X Tiger (10.4). Es ist möglich, dass neuere Versionen von iCal die Bibliothek von Operationen zur Verfügung verbessert haben.

War es hilfreich?

Lösung

Ich habe mit dieser heute wurde die Auseinandersetzung und stellte fest, dass Sie nach Datum filtern können (zumindest auf Snow Leopard). So

tell application "iCal"
    set out to ""
    set todaysDate to current date
    set time of todaysDate to 0
    repeat with c in (every calendar)
        set theEvents to (every event of c whose start date ≥ todaysDate)
        repeat with current_event in theEvents
            set out to out & summary of current_event & "\n"
        end repeat
    end repeat
    return out
end tell

wird die Zusammenfassung aller zukünftigen Ereignisse zurückzukehren, und sehr schnell, im Vergleich zu durch alle Ereignisse laufen.

scroll top