¿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

  • Ocultar mes en la barra de menu en OS X
  • Cambiar el comportamiento de copyr y pegar en todo el sistema
  • Nombre persistente en las tabs del Finder
  • ¿Qué es un directory de networking MIDI y por qué se rechaza la connection?
  • ¿Cómo funciona WireShark en OS X? ¿Con qué processs interactúa?
  • Cambiar el atajo de keyboard de la window
  • 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.


  • ¿Puedo convertir inputs de blog en artículos wiki para la migration Leopard-to-Lion?
  • No se puede escribir en HDD externo después de actualizar a OS X El Capitan
  • ¿Puedo agregar la opción "16 pt" a los menus desplegables de fonts?
  • ¿Cómo se activan los posts para conectarse automáticamente durante el inicio de session?
  • La parte de SMB es muy lenta
  • Restaure las windows de la aplicación a sus espacios originales
  • 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).