Nota importante sobre las acciones de AppleScript en los flujos de trabajo de Automator.
Esperemos que esto ayude a otros que buscan una solución.
Acceso de asistencia
Si su script usa cosas como tell application "System Events"
obtener datos de la interfaz de usuario de las ventanas de la aplicación o enviar pulsaciones de teclas virtuales, etc., entonces requerirá "acceso de asistencia".
Esto se puede llamar diferentes cosas en diferentes versiones de Mac OS, pero generalmente se puede encontrar en Preferencias del sistema> Seguridad y privacidad> Privacidad> Accesibilidad , en "Permitir que las aplicaciones a continuación controlen su computadora" .
Habilitar el acceso de asistencia para las aplicaciones de Automator y Script Editor permitirá que sus flujos de trabajo y scripts se ejecuten desde esas herramientas, pero no cuando se guardan como aplicaciones independientes. En teoría, habilitar el acceso para cualquier aplicación también debería permitirle hablar con System Events.
Problema con AppleScripts ejecutado desde acciones de Automator
Pero como muchos han descubierto , Automator a menudo tiene problemas para crear aplicaciones a las que se les puede otorgar acceso de asistencia, cuando tales aplicaciones contienen código AppleScript. Por no mencionar el hecho de que los servicios no se pueden conceder tales permisos en absoluto , ya que no son aplicaciones.
Solución alternativa
Sin embargo, puede crear aplicaciones AppleScript independientes desde la aplicación Script Editor en su lugar, y otorgarles acceso de asistencia sin problemas.
Luego puede ejecutar dichas aplicaciones como parte de un Automator o flujo de trabajo de shell, como este:
Acción AppleScript en Automator
do shell script "osascript -e 'tell application \"My Granted App Name\" to activate'"
Shell Script
(también puede ser de una acción de Automator)
osascript -e 'tell application "My Granted App Name" to activate'
Esto también funciona para crear servicios en Automator. Simplemente haga que su servicio ejecute la aplicación con permiso otorgado, en lugar de intentar agregar el código que requiere permiso al servicio en sí.
Tenga en cuenta que la tell app
llamada no requiere la extensión ".app", ni siquiera una ruta. Si tiene muchas aplicaciones con el mismo nombre, debería haber una manera de obtener la aplicación por su identificador de paquete, etc.
Otros IDEs
No estoy seguro de si este es un problema específico de Automator, ya que no he intentado llamar a AppleScripts sofisticados desde aplicaciones creadas con herramientas distintas a eso y Script Editor. De cualquier manera, lo anterior debería funcionar para otros IDE / compiladores / etc. también.
Reconstruyendo tu aplicación
En la mayoría de los casos, editar y reconstruir una aplicación otorgada requiere que se le vuelva a otorgar acceso. Por lo tanto, es útil probar todo bien en Automator / Script Editor antes de compilar la aplicación independiente, para evitarle problemas. Si su secuencia de comandos es invocada por un proyecto más grande que recompila habitualmente, es mejor convertir esa secuencia de comandos en su propia aplicación para otorgarle acceso una vez y ejecutar la aplicación desde su proyecto más grande. Al menos hasta que se complete el proyecto más grande.
Para las aplicaciones utilizadas por múltiples scripts, puede mantenerlas en un lugar consistente como una carpeta personalizada / Aplicaciones / Herramientas / Scripts . Sin embargo, recuerde que cualquier código de terceros puede iniciar aplicaciones y así activar sus scripts potencialmente confidenciales. Es importante tener en cuenta las implicaciones de seguridad al crear código que utiliza el acceso de asistencia.
Cuando volver a otorgar no funciona
Hay momentos en que volver a otorgar una aplicación reconstruida no "toma". En tales casos, cambiar el nombre de la aplicación y volver a agregarla a través de Preferencias del sistema generalmente resuelve esto. Debería poder cambiar el nombre de la aplicación a su original más adelante. Este es un error con la forma en que el Acceso de asistencia almacena en caché su lista de aplicaciones, y el nombre de archivo y / o la ruta están involucrados de alguna manera. Si alguien sabe cómo borrar este caché, agregue un comentario; sería muy útil.