4 votos

¿Cómo volver a trabajar un comando de "Eventos del Sistema" en AppleScript para que funcione automáticamente en todas las aplicaciones?

Con el siguiente código de AppleScript dentro de una acción "Run AppleScript" en un Servicio:

tell application "System Events"
    set theSBounds to {{572, 64}, {332, 515}}
    set position of window "Google Hangouts - myemailaddress@gmail.com" of application process "Google Chrome" to item 1 of theSBounds
    set size of window "Google Hangouts - myemailaddress@gmail.com" of application process "Google Chrome" to item 2 of theSBounds
end tell

el Servicio solo funcionará si la aplicación desde la cual se ha llamado ese Servicio se ha agregado a la lista de aplicaciones bajo "Permitir que las aplicaciones a continuación controlen tu ordenador." Esta lista se encuentra en Preferencias del Sistema Seguridad y Privacidad Accesibilidad.

¿Es posible modificar de alguna manera el código de AppleScript para que no sea necesario agregar cada aplicación en la lista? ¿O solo se necesita agregar un elemento a la lista, en lugar de cada aplicación en la computadora?

Pensé que algo como esto podría funcionar:

do shell script "osascript -e 'tell application \"System Events\"' -e 'set theSBounds to {{572, 64}, {332, 515}}' -e 'set position of window \"Google Hangouts - myemailaddress@gmail.com\" of application process \"Google Chrome\" to item 1 of theSBounds' -e 'set size of window \"Google Hangouts - myemailaddress@gmail.com\" of application process \"Google Chrome\" to item 2 of theSBounds' -e 'end tell'" with administrator privileges

pero este código también requiere que la aplicación desde la cual se ejecuta el Servicio se agregue a la lista de Accesibilidad.

Nota: Solo quiero ejecutar este AppleScript como un Servicio, y no en una Aplicación creada con Automator, porque el código recibe texto seleccionado como entrada (en todo el sistema).

0 votos

¿Estás decidido a usar ese script como un servicio? ¿Por qué no simplemente guardas el script como una aplicación a través del editor de scripts? Luego solo necesitas agregar esa única aplicación para permitir accesibilidad en las preferencias del sistema. Luego puedes ir un paso más allá y hacer que la aplicación sea hablable y lanzarla cuando quieras con un comando de dictado.

0 votos

Gracias por la sugerencia. No quería publicar el código completo, ya que no está relacionado con mi pregunta, pero en él, verías que el código acepta el texto actualmente resaltado como entrada. A menos que primero copies el texto seleccionado al portapapeles, un archivo de aplicación de AppleScript no puede acceder a la selección. Además, desconozco siquiera un programa de terceros que pueda obtener el texto seleccionado y enviarlo como variable a un AppleScript.

0 votos

En el segundo punto, en un momento, fui un usuario (breve) de la función de Comandos de Dictado de Mac. Sin embargo, eventualmente encontré que no era lo suficientemente confiable para usar. Si mi habla no logra activar el dictado incluso solo el 10% del tiempo, simplemente es más fácil (IMHO) iniciar la aplicación desde la barra de menú o por medio de un atajo de teclado que depender de que mi dictado sea escuchado correctamente.

3voto

rubik's sphere Puntos 31

He encontrado una solución aceptable (es decir, una solución provisional).

Inserta el bloque de código "Eventos del Sistema" en una acción de "Ejecutar AppleScript" y guárdalo como su propio archivo de aplicación en Automator. Nota: la extensión de archivo de este código debe ser .app para que funcione (más sobre esto en un momento).

Ve a Preferencias del Sistema Seguridad y Privacidad pestaña de Privacidad Accesibilidad. Agrega y marca la nueva aplicación creada en la lista de aplicaciones permitidas para controlar tu ordenador.

Ejecuta la nueva aplicación desde tu Servicio. Para hacerlo, puedes agregar la siguiente línea a tu código de AppleScript:

do shell script "osascript -e 'tell application \"Nombre de la Aplicación\" to activate'"

(Yo suelo usar osascript para activar aplicaciones al usar una acción de "Ejecutar AppleScript" en un Servicio, ya que esto evita un error con Servicios que he descubierto.)

Tu Servicio ahora debería funcionar perfectamente en todas las aplicaciones de tu ordenador, a pesar de que solo una aplicación (la que contiene el código de "Eventos del Sistema") ha sido explícitamente autorizada para controlar el ordenador.

El archivo debe ser guardado como un archivo .app, y no como un archivo .scpt o .applescript. Esto se debe a que no es posible añadir archivos .scpt o .applescript a la lista de aplicaciones permitidas para controlar tu ordenador; solo los verdaderos archivos .app pueden ser seleccionados en el cuadro de diálogo.

Es importante tener en cuenta que el archivo .app no tiene que ser creado en Automator. Si creas el archivo .app en Script Editor.app y sigues los demás pasos, el archivo .app funcionará de la misma manera.

Hay una diferencia, sin embargo. Cuando el archivo .app es creado en Automator, se puede utilizar tanto activate como launch para ejecutar la aplicación en el Servicio. Pero, cuando el archivo .app es creado en Script Editor, solo se puede utilizar activate para ejecutar la aplicación; launch no hará que suceda nada.

1 votos

¡No olvides marcar esto como la respuesta aceptada! :) +1 por un buen truco!

0 votos

Gracias, obtuve un error diferente al intentar activar un flujo de trabajo, pero tu solución alternativa todavía parece funcionar.

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