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ú, esquina superior derecha). La aplicación en cuestión se llama Pomodoro One . No tiene compatibilidad integrada con Applescript, así que quiero crear un script que haga clic en su barra de menú y presione "Iniciar Pomodoro".
Después de horas de investigación en Internet y experimentación con Script Editor , más la creación de una automatización visual con Automator, he creado este script que DEBERÍA trabajar :
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, especialmente debido a que 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 recibo, tanto de ScriptEditor como de la ejecución de 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 está sucediendo es que cuando Applescript intenta hacer clic en menu bar 2
(que representa el menulet), el menú que se supone que aparece no lo hace. Como si el click no estuviera pasando totalmente. Sin embargo, puedo hacer clic en menu bar 1
(que representa la barra de menú principal de Pomodoro One). Esta es la razón por la que hacer clic en menu bar 2
no produce nada, especialmente porque las aplicaciones de depuración de IU como UI Browser informan que el menulet está representado por menu bar 2
cuando hago perfiles visuales de la interfaz de usuario.
Estoy horas en esto y me siento muy atascado. Me pregunto si hay alguna forma en que pueda hacer que Applescript juegue bien con el menulet de cualquier aplicación de terceros.
EDIT
Basado en esta publicación ( enlace ), modifiqué 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, hace que el script gire infinitamente y finalmente se agote con el error -1712: System Events got an error: AppleEvent timed out.
Puedo asegurarle que tengo habilitada la accesibilidad, a través de Preferencias del sistema - > Seguridad y privacidad - > Accesibilidad para Pomodoro One y Script Editor.