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

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

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

  • Eliminar definitivamente un post de Correo
  • ¿Debo tener dos aplicaciones de iBooks para iOS y Mac?
  • Introducción a las convenciones del directory del sistema OSX
  • ¿Cómo download e instalar Darwin 13 OS en x86?
  • Cómo grabar si y cuándo se abre mi Macbook
  • ¿Cuál es el process InterCheck que ocasionalmente usa 96% de CPU en mi Mac?
  • Entiendo que simplemente puedo copyr la subrutina en su propio file .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 hacer esto, por el bien de la conveniencia.


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


  • AppleScript: cuadro de mandos y configuration de la GUI, botones de opción y valores de campo
  • Los icons del menu no se cargan después de reiniciar
  • Error al crear un USB de arranque
  • ¿Cómo puedo automatizar el mantenimiento de versiones históricas de las aplicaciones de iOS en la Mac?
  • Actualización de Mac OS X 10.6.8 a la última versión
  • ¿Hay alguna forma de minimizar las windows abiertas desde la command-line en OS X Lion?
  • 2 Solutions collect form web for “¿Cómo llamar a una subrutina específica de un AppleScript desde otro AppleScript?”

    load script de AppleScript

    El command de load script de AppleScript hará lo que usted desee.

    Ejemplo

    En su escritorio, guarde un file .scpt que contenga el siguiente controller saySomething :

     on saySomething() say "hello" end saySomething 

    Luego, dentro de otro script puedes llamar saySomething :

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

    El object devuelto del load script es un object de script. Una vez cargado, el object de script se trata como local y puede tener sus identificadores locales llamados, incluso con parameters.

    Consulte ¿Puedo colocar el código compartido de AppleScript en un file separado y cargarlo en varios guiones? para más ejemplos.

    Tienes tres preguntas en tu OP …

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

      Esto es realmente respondido por el enlace, dentro de la respuesta vinculada, en su OP y también tocado por la respuesta de Graham Miln.

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

      Esta es la buena pregunta porque la documentation y los ejemplos se centran en los manejadores mismos y tienden a mostrar que los scripts externos que se invocan deben ser simplemente una colección de controlleres y ningún otro código AppleScript.

      Bueno, como dice un viejo refrán … la testing está en el pudín … La respuesta es sí, puedes llamar a un manejador desde otro file filename.scpt que contenga cualquier código AppleScript válido. Tenga en count que el objective del command load script cargará toda la secuencia de commands en la memory, sin embargo, no ejecutará ninguna otra cosa que no sea el nombre del manejador .

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

      Siempre que el controller que se está llamando se escriba para tomar parameters , entonces sí puede pasarle una variable que ya ha sido asignada y pasarla como parámetro .

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).