Estoy tratando de crear un Applescript para automatizar una interacción con una aplicación que tiene un menulet de terceros (elemento de la barra de menús, esquina superior derecha). La aplicación en cuestión se llama Pomodoro Uno . No tiene soporte integrado para Applescript, así que quiero crear un script que haga clic en su barra de menú y pulse "Iniciar Pomodoro".
Después de horas de investigación en Internet y de experimentar con Script Editor , más la creación de una automatización visual con Automator, he llegado a este script que DEBE trabajo:
tell application "Pomodoro One"
activate
end tell
tell application "System Events"
tell UI element "Pomodoro One"
tell menu bar item 1 of menu bar 2
click menu item 1 of menu 1
end tell
end tell
end tell
Sin embargo, no funciona. Sorprendente, sobre todo porque la automatización en Automator funciona y este script es básicamente una paráfrasis del Applescript en el que Automator convierte su automatización visual. Este es el error que obtengo, tanto desde ScriptEditor como ejecutando el Applescript en Automator:
System Events got an error: Can’t get menu 1 of menu bar item 1 of menu bar 2 of UI element "Pomodoro One". Invalid index.
Lo que creo que ocurre es que cuando Applescript intenta hacer clic en menu bar 2
(que representa el menulet), el menú que debe aparecer no lo hace. Como si el clic no se produjera en absoluto. Sin embargo, sí puedo hacer clic en menu bar 1
(que representa la barra de menú principal de Pomodoro One). Esto es un problema porque al hacer clic en menu bar 2
no produce nada, especialmente porque las aplicaciones de depuración de la interfaz de usuario como Navegador UI efectivamente informan que el menulet está representado por menu bar 2
cuando hago un perfil visual de la interfaz de usuario.
Llevo horas en esto y me siento muy atascado. Me pregunto si hay alguna forma de conseguir que Applescript funcione bien con el menulet de cualquier aplicación de terceros.
EDITAR
Basado en este post ( https://stackoverflow.com/questions/20595708/applescript-to-click-on-a-specific-icon-in-the-mac-menu-bar ), he modificado mi script para que sea el siguiente:
ignoring application responses
tell application "System Events" to tell process "Pomodoro One"
click menu bar item 1 of menu bar 2
end tell
end ignoring
do shell script "killall System\\ Events"
delay 0.1
tell application "System Events" to tell process "Pomodoro One"
tell menu bar item 1 of menu bar 2
click menu item "Start Pomodoro" of menu 1
end tell
end tell
Esta vez, el resultado es que el script gira infinitamente y finalmente se desconecta con el error -1712: System Events got an error: AppleEvent timed out.
Puedo asegurar que tengo la accesibilidad activada, a través de Preferencias del Sistema --> Seguridad y Privacidad --> Accesibilidad tanto para Pomodoro One como para scriptEditor.