4 votos

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

Entiendo que es posible activar un archivo .scpt que está guardado en algún lugar de mi ordenador desde un archivo .scpt diferente.

¿Puedo llamar a una subrutina específica de ese archivo .scpt desde otro archivo .scpt? Quiero saltarme todo el script, y sólo ejecutar el código que se encuentra en una subrutina específica

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


Además, ¿es posible pasar también variables a esa subrutina? Mi necesidad actual no requiere esta capacidad, pero sigo teniendo curiosidad.


2voto

Steve Evans Puntos 155

AppleScript's load script

AppleScript's load script hará lo que quieras.

Ejemplo

En su Escritorio, guarde un .scpt que contiene lo siguiente saySomething manipulador:

on saySomething()
    say "hello"
end saySomething

Luego, dentro de otro script se puede llamar a saySomething :

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

El objeto devuelto de load script es un objeto script. Una vez cargado, el objeto script es tratado como local y puede tener su maneja llamado, incluso con parámetros.

Ver ¿Puedo poner el código applescript compartido en un archivo separado y cargarlo en varios scripts? para ver más ejemplos.

0voto

user3439894 Puntos 5883

Tienes tres preguntas en tu OP...

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

    En realidad, esto se responde en el enlace, dentro de la respuesta vinculada, en su OP y también se toca en la respuesta de Graham Miln.

  • ¿Puedo llamar a una subrutina específica de ese archivo .scpt desde otro archivo .scpt? Quiero saltarme todo el script, y sólo 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 el manipuladores mismos y tienden a mostrar que los scripts externos que se llaman deben ser sólo una colección de manipuladores y ningún otro AppleScript código .

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

  • Además, ¿es posible pasar también variables a esa subrutina?

    Proporcionar la manipulador que se llama está escrito para tomar parámetros , entonces sí se puede pasar un variable que ya ha sido asignado y pasarlo como un parámetro .

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