Solo puede ejecutar AppleScript desde Automator

6

Tengo el siguiente AppleScript que alterna la dirección de desplazamiento en el panel táctil:

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.trackpad"
end tell

tell application "System Events"
    tell process "System Preferences"
        click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
        click checkbox 1 of tab group 1 of window "Trackpad"
    end tell
end tell

tell application "System Preferences"
    quit
end tell

Este script se ejecuta sin problemas cuando se usa el botón "jugar" en Automator para ejecutarlo. Sin embargo, cuando hago un servicio que lo ejecuta y le asigno un método abreviado de teclado al servicio, no se ejecuta a través del método abreviado de teclado.

Al envolverlo en un bloque try con algunos informes de error, se obtiene lo siguiente:

  

Automator Runner no tiene permitido el acceso de asistencia.

     

Número de error-1728

EncontréAutomatorRunner.appylediaccesodeayudausandolasinstruccionesencontradas aquí .

Ahora aparece con una casilla marcada en la lista de aplicaciones con acceso de asistencia:

Sinembargo,elproblemapersiste.SigorecibiendoelmismomensajenotificándomequeAutomatorRunnerisnotallowedassistiveaccess.cuandointentoejecutarlasecuenciadecomandosmedianteelcomandodetecladodelservicioqueejecutalasecuenciadecomandos.

Actualizar

Simplementelogréimplementarestescriptalternativoparalograrlomismo,perotambiénfuncionasolocuandoAutomatortieneunenfoqueytieneelmismoproblemacuandono:

tellapplication"System Preferences"
    reveal anchor "trackpadTab" of pane "com.apple.preference.trackpad"
end tell
tell application "System Events" to tell process "System Preferences"
    click checkbox 1 of tab group 1 of window 1
end tell
quit application "System Preferences"
    
pregunta Keyslinger 07.09.2014 - 20:34

4 respuestas

1

Sospecho que es posible que no tenga un problema que pueda ser "depurado".
Lea esta Guía de macosxautomation.com sobre cómo tener applets que no permanezcan permanentemente " permiso "para ejecutar, ser aceptado por Mac OS X.

El truco consiste en instalar un ResourceRules-ignoring-Scripts.plist en el que inicia sesión y registra su aplicación (dejar). (¡Pero lea la ADVERTENCIA en esta página web!)

El motivo es que algunas aplicaciones guardan información "en sí mismas" y, por lo tanto, no serán idénticas / reconocidas la próxima vez que se ejecuten.

(Pero de todos modos: incluso si el consejo de la Guía NO te ayuda , podría ser de interés para otros ...)

    
respondido por el clemsam lang 22.12.2015 - 17:35
1

Sé que esta es una pregunta antigua, pero enfrenté este problema justo ahora y logré solucionarlo, así que pensé que publicaría una respuesta.

Leí en otra parte que agregar Automator Runner.app al panel de Privacidad / Accesibilidad de Preferencias del Sistema no evitaría el error, así que no lo intenté, pero lo que sí funcionó fue pegar todo el flujo de trabajo en una "Aplicación" documento de flujo de trabajo. Lo guardé en la misma ubicación que el servicio y luego creé un nuevo flujo de trabajo de "Servicio" que solo hizo una cosa: ejecutar la nueva aplicación que acababa de crear.

Luego agregué esa aplicación al panel de Privacidad / Accesibilidad de las Preferencias del Sistema. Ahora, cuando ejecuto el servicio, no obtengo el error de permisos.

    
respondido por el hepcat72 31.07.2018 - 18:24
1
  

Nota importante sobre las acciones de AppleScript en los flujos de trabajo de Automator.
Esperamos que esto ayude a otros que buscan una solución.

Acceso de asistencia

Si su secuencia de comandos usa elementos como tell application "System Events" para obtener datos de la IU desde las ventanas de la aplicación o para enviar pulsaciones virtuales, etc., se requerirá un "acceso de asistencia".

Esto puede llamarse cosas diferentes en diferentes versiones de Mac OS, pero generalmente se puede encontrar en Preferencias del sistema > Seguridad y amp; Privacidad > Privacidad > Accesibilidad , en "Permita que las aplicaciones a continuación controlen su computadora" .

La habilitación del acceso de asistencia para las aplicaciones 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 la aplicación cualquier también debería permitirle hablar con los eventos del sistema.

Problema con AppleScripts ejecutados desde Automator Actions

Pero como muchos han descubierto , Automator a menudo tiene problemas para crear aplicaciones que se puede otorgar acceso de asistencia, cuando dichas aplicaciones contienen código AppleScript. Sin mencionar el hecho de que a los servicios no se les pueden otorgar tales permisos en absoluto , ya que no son aplicaciones.

Solución

Sin embargo, puede crear aplicaciones AppleScript independientes desde la aplicación Script Editor y otorgarles acceso de asistencia sin problemas.

Luego, puede ejecutar dichas aplicaciones como parte de un Automator o flujo de trabajo de shell, como esto:

Acción de 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 un código que requiera permiso al servicio en sí.

Tenga en cuenta que la llamada tell app no requiere la extensión ".app", ni siquiera una ruta. Si tiene muchas aplicaciones con el mismo nombre, debería haber una forma de obtener la aplicación por su identificador de paquete, etc.

Otros IDE

No estoy seguro de si este es un problema específico de Automator, ya que no he intentado llamar 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, la edición y reconstrucción de una aplicación otorgada requiere que se vuelva a otorgar el acceso. Por lo tanto, es útil probar todo bien en Automator / Script Editor antes que cree la aplicación independiente, para evitarle problemas. Si un proyecto más grande invoca su secuencia de comandos de forma rutinaria, 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 finalice el proyecto más grande.

Para las aplicaciones utilizadas por varios scripts, puede mantenerlos en un lugar consistente como una carpeta personalizada / Applications / Tools / Scripts . Sin embargo, recuerde que cualquier código de terceros puede iniciar aplicaciones y así activar sus scripts potencialmente sensibles. Es importante tener en cuenta las implicaciones de seguridad al crear un código que utiliza el acceso de asistencia.

Cuando la nueva concesión no funciona

Hay veces 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 en un momento posterior. Este es un error por el cual Assistive Access 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é, por favor agregue un comentario; sería muy útil.

    
respondido por el Beejor 21.12.2018 - 07:25
0

No es una respuesta, pero ...
Para intentar depurar, deconstruyo la secuencia de comandos a sus componentes, por lo tanto, se dividen aproximadamente a solo

tell application "System Preferences"
activate
set current pane to pane "com.apple.preference.trackpad"
end tell

& prueba de cualquier error

Luego agrega

tell application "System Events"
    tell process "System Preferences"
         click radio button "Scroll & Zoom" of tab group 1 of window "Trackpad"
    end tell
end tell

comprobar de nuevo

& en adelante hasta que encuentre el punto de falla

Una posibilidad sería revertir eventos sys & sys prefs en tu orden de ejecución actual, pero eso es solo un tiro en la oscuridad.

Con suerte, alguien con mejores chuletas de manzana que yo ofreceré una mejor solución.

    
respondido por el Tetsujin 07.09.2014 - 22:24

Lea otras preguntas en las etiquetas