Ich wollte ein Skript schreiben, um Erinnerungen um eine Stunde zurückzuschieben. Das habe ich mir ausgedacht:
tell application "Reminders"
launch
set c to current date
set newtime to c + 3600
set the remind me date of every reminder where completed is false and remind me date < c to newtime
end tell
Das Skript ist nicht sehr schnell, wenn es über den Skript-Editor ausgeführt wird (dauert einige Sekunden), aber wenn es über das Skript-Menü ausgeführt wird, kann es buchstäblich mehrere zehn Minuten dauern.
Wissen Sie, warum es so langsam ist?
Ein Blick darauf führte mich zu der SQLite-Datenbank, die Erinnerungsinformationen enthält.
~/Library/Application\ Support/NotificationCenter/(meaningless name).db
Es scheint jede Erinnerung zu akkumulieren, die jemals hinzugefügt wurde ... sogar Dinge wie das Lied, das am 22. Januar 2015 um 16:31 Uhr abgespielt wurde. Wenn Applescript alle Einträge durchlaufen muss, um diejenigen zu finden, die den Parametern entsprechen, könnte dies erklären, warum dies so ist langsam - aber es erklärt nicht, warum es so viel langsamer ist, wenn es über das Skriptmenü ausgeführt wird.
Ich frage mich, ob die einfachste Möglichkeit, Erinnerungen zu pushen, darin besteht, die SQLite-Datenbank nicht zu manipulieren. Gedanken?
osascript
MacOS 10.13.4 aufgetreten, jedoch nur mit einem MacBook Pro, nicht mit dem Mac Mini derselben Betriebssystemversion. In meinem Fall tell application "System Events"
dauert die Ausführung GENAU zwei Minuten. Ich untersuche immer noch die Ursache. Lassen Sie die Festplattenreparatur erfolglos ausführen.