0 votos

¿Cómo iterar correctamente (rápidamente) sobre los recordatorios utilizando AppleScript/osascript?

¿Cuál es la forma adecuada y eficiente de iterar sobre los Recordatorios utilizando AppleScript? ¡El script de abajo funciona como se espera, pero tarda 18 segundos en iterar sobre 180 Recordatorios cuando se ejecuta desde la línea de comandos usando osascript! (Este mismo script tarda sólo 2-3 segundos cuando se ejecuta desde el ScriptEditor).

# Find all Reminders whose name contains "Alumni"
set findMe to "Alumni"
set answer to "Maches: "

tell application "Reminders"
    set names to name of every reminder
end tell

repeat with name in names
    if name contains findMe then
        set answer to answer & " --- " & name
    end if
end repeat

return answer

He ejecutado este script de dos maneras desde la línea de comandos: Como un script compilado: osascript testReminders2.scrpt y como archivo de texto: ./testReminders2.applescript (donde este archivo comienza con #! /usr/bin/osascript . Ambas versiones tardan más o menos lo mismo.

0voto

Mockman Puntos 16

No tengo suficientes recordatorios para probar la velocidad, pero prueba esto. Puede obtener los recordatorios "con nombre" en una lista con un paso y luego coaccionar esa lista en su salida de texto con un segundo. Esto debería ser más rápido que iterar a través de ellos individualmente.

# Find all Reminders whose name contains "Alumni"
set findMe to "Alumni"
set answer to "Maches: "

tell application "Reminders" to ¬
    set names to name of ¬
        (every reminder whose name contains findMe)

set {TID, AppleScript's text item delimiters} to ¬
    {AppleScript's text item delimiters, " --- "}
set answer to answer & names as text
set AppleScript's text item delimiters to TID

return answer

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X