¿Cómo llamar a una subrutina específica de un AppleScript desde otro AppleScript?

3

Comprendo que es posible activar un archivo .scpt que se guarda en algún lugar de mi computadora desde un archivo .scpt diferente.

¿Puedo llamar a una subrutina específica de ese archivo .scpt desde un archivo .scpt diferente? Quiero omitir todo el script y solo ejecutar el código que se encuentra en una subrutina específica

Comprendo que simplemente puedo copiar la subrutina en su propio archivo .scpt dedicado y lograr lo que quiero de esa manera. Este método se muestra en esta respuesta . Sin embargo, preferiría no tener que hacer esto, por conveniencia.

Además, ¿es posible pasar variables a esa subrutina? Mi necesidad actual no requiere esta habilidad, pero sigo sintiendo curiosidad.

pregunta rubik's sphere 07.03.2017 - 04:40

2 respuestas

1

load script de AppleScript

AppleScript load script hará lo que quieras.

Ejemplo

En tu escritorio, guarda un archivo .scpt que contenga el siguiente controlador saySomething :

on saySomething()
    say "hello"
end saySomething

Luego, dentro de otro script puedes llamar a saySomething :

set myOtherScript to load script (alias ((path to desktop folder as string) & "external.scpt"))
myOtherScript's saySomething()

El objeto devuelto desde load script es un objeto de script. Una vez cargado, el objeto de script se trata como local y puede tener su local handle , incluidos los parámetros.

Consulte ¿Puedo poner el código de AppleScript compartido en un archivo separado y cargarlo en varios scripts? para obtener más ejemplos.

    
respondido por el Graham Miln 07.03.2017 - 10:30
0

Tienes tres preguntas en tu OP ...

  •   

    El título: ¿Cómo llamar a una subrutina específica de un AppleScript desde otro AppleScript?

    Esto se responde realmente mediante el enlace, dentro de la respuesta vinculada, en su OP y también se menciona en la respuesta de Graham Miln.

  •   

    ¿Puedo llamar a una subrutina específica de ese archivo .scpt desde un archivo .scpt diferente? Quiero omitir toda la secuencia de comandos y solo ejecutar el código que se encuentra en una subrutina específica.

    Esta es la buena pregunta porque la documentación y los ejemplos se centran en los controladores y tienden a mostrar que los scripts externos que se llaman deben ser solo una colección de controladores y no otro código de AppleScript.

    Bueno, como dice un viejo refrán ... la prueba está en el pudín ... La respuesta es sí, puedes llamar a un controlador desde otro filename.scpt archivo que contiene cualquier código de AppleScript válido. Tenga en cuenta que el objetivo del load script comando cargará todo el script en la memoria, sin embargo, no ejecutará otra cosa que el controlador (es) llamado.

  •   

    Además, ¿es posible pasar variables a esa subrutina?

    La creación del controlador al que se llama se escribe para tomar parámetros , entonces sí, puede pasarle una variable que ya ha sido asignada y pasar como un parámetro .

respondido por el user3439894 07.03.2017 - 15:23

Lea otras preguntas en las etiquetas