Come chiamare una subroutine specifica di un AppleScript da un altro AppleScript?

3

Capisco che sia possibile attivare un file .scpt salvato da qualche parte sul mio computer da un altro file .scpt.

Posso chiamare una subroutine specifica di quel file .scpt da un altro file .scpt? Voglio saltare l'intero script e solo eseguire il codice che si trova in una subroutine specifica

Capisco che posso semplicemente copiare la subroutine nel proprio file .scpt dedicato e realizzare ciò che voglio in questo modo. Questo metodo è dimostrato in questa risposta . Tuttavia, preferirei non doverlo fare, per comodità.

Inoltre, è possibile anche passare le variabili a quella subroutine? Il mio attuale bisogno non richiede questa abilità, ma sono comunque curioso.

posta rubik's sphere 07.03.2017 - 04:40
fonte

2 risposte

1

load script di AppleScript

AppleScript load script farà ciò che desideri.

Esempio

Sul desktop, salva un file .scpt contenente il seguente saySomething gestore:

on saySomething()
    say "hello"
end saySomething

Quindi all'interno di un altro script puoi chiamare saySomething :

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

L'oggetto restituito da load script è un oggetto script. Una volta caricato, l'oggetto script viene considerato locale e può avere il suo gestisce gli handle , compresi i parametri.

Vedi Posso inserire il codice di applescript condiviso in un file separato e caricarlo in vari script? per ulteriori esempi.

    
risposta data 07.03.2017 - 10:30
fonte
0

Hai tre domande nel tuo OP ...

  • The Title: How to call a specific subroutine of an AppleScript from another AppleScript?

    In realtà questo risponde al link, all'interno della risposta collegata, nel tuo OP e anche toccato dalla risposta di Graham Miln.

  • Can I call a specific subroutine of that .scpt file from a different .scpt file? I want to skip over the entire script, and only run the code that is found in one, specific subroutine.

    Questa è la buona domanda perché la documentazione e gli esempi si concentrano sugli gestori stessi e tendono a mostrare che gli script esterni che vengono chiamati dovrebbero essere solo una raccolta di gestori e no altro codice AppleScript .

    Bene, come dice un vecchio proverbio ... la prova è nel budino ... La risposta è sì, puoi chiamare un gestore da un altro nomefile.scpt file che contiene un codice AppleScript valido. Nota che il target del comando% em_de% caricherà l'intero script in memoria, tuttavia, non eseguirà nulla di diverso dal handler (s) chiamato.

  • In addition, is it possible to also pass variables to that subroutine?

    Fornendo il gestore chiamato viene scritto per prendere parametri , allora sì puoi passargli una variabile che è già stata assegnata e passare è un parametro .

risposta data 07.03.2017 - 15:23
fonte

Leggi altre domande sui tag