Question

Je suis en train d'écrire un AppleScript pour interroger iCal et trouver tous les événements que j'ai pour une date donnée, dans un calendrier.

J'ai commencé par écrire un script simple qui fait quelque chose de simple avec chaque événement dans un calendrier donné:

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

Cependant, ce script simple est pris beaucoup de temps pour exécuter (quelques secondes), même si je ne fais rien complexe dans la boucle. Je crains que le script réel va vraiment prendre beaucoup de temps à exécuter.

Je ne suis pas très familier avec AppleScript, et donc je pense que je fais quelque chose de stupide qui a des conséquences graves de performance.

Quelqu'un peut-il me expliquer pourquoi cela prend beaucoup à exécuter? Quelqu'un peut-il suggérer quelque chose pour améliorer mon code? Je vais maintenant commencer à vérifier la date de l'événement, une condition dans la boucle. Je pense qu'il doit y avoir un moyen de rechercher des événements avec une date (comme l'action Automator fait), mais je ne l'ai pas été en mesure de trouver un moyen « indigène » de le faire ....

EDIT : J'utilise Mac OS X Tiger (10.4). Il est possible que les versions les plus récentes de iCal ont amélioré la bibliothèque des opérations disponibles.

Était-ce utile?

La solution

J'ai prises avec aujourd'hui et a constaté que vous pouvez filtrer par date (au moins sur Snow Leopard). Donc,

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

renverra le résumé de tous les événements futurs, et très rapidement, par rapport à itérer tous les événements.

scroll top