Hice un AppleScript, lo guardé como un archivo en una carpeta específica en mi disco duro. Ahora quiero asignarle un acceso directo y parece que tengo que hacer un Servicio a través de Automator, pero Run AppleScript
me pide que coloque el código dentro, mientras quiero ejecutar el archivo .scpt ya existente. ¿Como hacer eso?
Sí, Automator es la mejor opción aquí. Para crear el servicio siga estos pasos:
Abra Automator y seleccione Servicio:
Busque 'applescript' y arrastre la acción al panel derecho:
Cambie Service receives selected text
a Service receives no input
para que siempre aparezca en el menú Servicios:
Reemplazar (* Your script goes here *)
con:
do shell script "/usr/bin/osascript /path/to/your/script.scpt"
si desea ejecutar su .scpt
archivo existente. Tenga en cuenta que osascript no puede manejar la interacción del usuario como mostrar una ventana de diálogo:
Para superar esta limitación, utilice esta solución alternativa o simplemente reemplácela (* Your script goes here *)
con el contenido de su secuencia de comandos.
Guárdalo:
Si lo desea, puede asignar un acceso directo a su nuevo servicio. Seleccione Servicios>Preferencias de servicios en Finder (o cualquier aplicación abierta):
Asigne un atajo no tan común:
Ahora su servicio es accesible desde cualquier aplicación a través del acceso directo que asignó en el paso anterior:
Si alguna vez desea deshacerse del servicio abierto ~/Library/Services
, elimine el servicio y vacíe la papelera:
En el script, agregue un on run
argumento:
on run
-- do whatever the script does
end run
Luego puede usar la acción "Ejecutar script de Shell" de Automator, con el osascript
comando:
osascript /path/to/script.scpt
osascript
es un comando que ejecuta AppleScript en el shell. Necesita las líneas en el script para permitir que el script se ejecute fuera del editor AppleScript.
on run {input, arguments}
formulario especial, pero incluso en Automator puede simplemente eliminar el controlador de ejecución.Tal vez desee echar un vistazo a This Service , que le permite "crear servicios de Mac OS X desde cualquier secuencia de comandos".
No recomendaría crear servicios de Automator para asignar accesos directos a los scripts. Hay un error en 10.7 y 10.8 donde los métodos abreviados de teclado para los servicios de Automator no siempre funcionan hasta que pasas el cursor sobre el menú de servicios desde la barra de menú. También hay un retraso relativamente largo (quizás de 0,1 a 1 s) antes de que se ejecuten los servicios.
Consulte esta respuesta para conocer otras formas de asignar métodos abreviados de teclado a los scripts. Yo uso FastScripts y Alfred yo mismo.
Puede EJECUTAR el script existente con un servicio de automatización simple como este. Y asigne su atajo desde dentro de los atajos de teclado como de costumbre. Solo recuerde que es posible que deba reiniciar algunas aplicaciones antes de que seleccionen los accesos directos.
ejemplo.
Di hola script:
say "hello"
Servicio de automatización:
Que en este ejemplo usa:
La acción es un script Run Shell . El código solo usa el comando Unix osascript y la ruta al archivo. La entrada de pase puede ser a stdn o a argumento
Eso es todo, no se necesita hacer nada especial con el guión.
Para obtener más detalles sobre el comando osascript, consulte las páginas del manual. La página de manual proporciona otro ejemplo en el que puede pasar argumentos al script.
Para desarrollar un Servicio, necesita algún tipo de software que cree un Servicio como uno de los siguientes:
Todos los tipos de servicios anteriores son paquetes. Son todas carpetas que contienen un plist que especifica los atributos de un Servicio.
Así es como creé un Servicio usando Automator que usa una acción de Automator "Ejecutar AppleScript" para llamar a un .script existente.
Nakilon
jaume
osascript
, como se explica en otras respuestas.jaume
osascript
en Automator para ejecutar su.scpt
archivo, una limitación y dos soluciones.Zack
jaume
/usr/bin/osascript /path/to/your/script.scpt
en una ventana de Terminal, ¿el script también necesita de 4 a 5 segundos para iniciarse?Zack
jaume
sleep 10 && /usr/bin/osascript /path/to/your/script.scpt
. Esto le da 10 segundos para cambiar a Correo y seleccionar el mensaje antes de que se ejecute el script. ¿Podrías probarlo e informarnos?Zack
jaume
osascript
necesita 4 segundos adicionales para ejecutar su secuencia de comandos, pero Automator no es la causa del retraso, que era mi preocupación. Es posible que desee depurarosascript
, consulte opensourcehacker.com/2011/12/02/… y stackoverflow.com/questions/31045575/…