Programma di esecuzione AppleScript JMP 15()Non ho mai usato Run Program() prima e ho bisogno di aiuto. Poiché JMP non è in grado di aprire file Excel protetti da password, sto elaborando un piccolo Applescript per aprirli ed esportarli come file .csv non protetti. Mi piacerebbe eseguire questo Applescript all'interno di uno script JSL. Forse se funziona bene, creerò una piccola funzione utente JMP per avvolgerlo, così posso simulare in JMP la possibilità di aprire Excel protetto da password.
MA... ho dei problemi con Run Program(). Alcune domande.
1. Il mio Applescript deve essere salvato come applicazione (estensione .app) o come script (estensione .scpt).
2. La mia sintassi JSL è simile a questa:
Run Program( Executable( "Users/me/Desktop/myscript.scpt" ) )
ma non funziona, dando il seguente errore:
launch path not accessible in access or evaluation of 'Glue' , Names Default To Here( 1 ); /*###*/Run Program(
Executable( "/Users/me/Desktop/re.scpt" )
) /*###*/;
In the following script, error marked by /*###*/
Names Default To Here( 1 ); /*###*/Run Program(
Executable( "/Users/me/Desktop/re.scpt" )
) /*###*/;
Ancora una volta, ho provato a utilizzare .app e .scpt e nessuna estensione - nessuna gioia.
Ovviamente, dovrò aggiungere del codice aggiuntivo per ottenere una gestione del file di esportazione .csv risultante, ma per ora, ho solo bisogno di partire con l'esecuzione di un Applescript barebone.
Grazie per qualsiasi aiuto.
Oggetto: JMP 15 programma di esecuzione AppleScript()Grazie, Giuliano.
Ecco una versione leggermente migliorata, che consente di restituire un valore dalla macro KM includendo un'azione KM "Imposta appunti di sistema su testo..." come ultima azione dello script KM. La funzione JSL utilizza quindi il contenuto degli appunti come valore di ritorno della funzione.
Inoltre, mi sono reso conto che non è necessario utilizzare l'UUID della macro KM; funziona ugualmente bene se usi solo il semplice nome vanigliato della macro KM.
Add Custom Functions(
New Custom Function(
"ex",
"Run KMScript",
Function( {scriptID, paramlist = {}},
{paramstring, savedClipboard, macroResult = ""},
paramstring = Concat Items( paramlist );
savedClipboard = Get Clipboard();
Run Program(
Executable( "/usr/bin/osascript" ),
Options(
"-e tell application \!"Keyboard Maestro Engine\!" to do script \!"" || scriptID || "\!" with parameter \!"" || paramstring ||
"\!""
)
);
macroResult = Get Clipboard();
Set Clipboard( savedClipboard );
Return( macroResult );
)
) << Prototype( "ex:Run KMScript( scriptID as string, < {param1 as string, param2 as string, etc.} > )" ) << Parameter( "String", "scriptID" )
<< Parameter( "List", "parameter(s)" ) << Formula Category( "Utility" ) << Description(
"Runs a Keyboard Maestro (KM) script. The KM scriptID is either the KM macro's name or UUID. (You can reveal and copy the UUID by opening the 'Or trigger by shell script' text box at the top of your KM macro window.) The (optional) parameters to the KM script can be retrieved inside the KM macro using the KM '%TriggerValue%' token. KM receives them as a single concatenated string of space-separated values. If you want to return a value from KM, push it to the system clipboard before exiting the macro. This function will grab the clipboard contents and use as the function return value. (The function saves and restores the pre-invocation clipboard state, so the system clipboard is unaffected by the function.)"
)
);Oggetto: JMP 15 programma di esecuzione AppleScript()È fantastico, Giovanni! Sono così felice che tu abbia condiviso questo, sono sicuro che sarà utile a qualcuno.
@giulianoOggetto: JMP 15 programma di esecuzione AppleScript()Solo un piccolo seguito su questo, forse alcuni utenti Mac potrebbero trovare utile.
L'idea di Applescript non ha funzionato, non a causa di JSL, ma a causa delle limitazioni di MSExcel applescripting sotto OSX 10.15. (I comandi di salvataggio in Excel non funzionano più correttamente, apparentemente a causa del sandboxing; mi è stato detto che Microsoft deve aggiornare il suo supporto Applescript. )
Invece, ho deciso di scrivere ciò di cui avevo bisogno usando Keyboard Maestro (KM), che è un'ottima app per scripting/macro OSX. (Lo consiglio vivamente - non ho conflitti di interesse.)
Ho scritto la sceneggiatura di cui avevo bisogno in KM. Poi ho scritto una piccola funzione JSL che richiama uno script KM:
Add Custom Functions(
New Custom Function(
"ex",
"Run KMScript",
Function( {scriptID, paramlist = {}},
{paramstring},
paramstring = Concat Items( paramlist );
Run Program(
Executable( "/usr/bin/osascript" ),
Options(
"-e tell application \!"Keyboard Maestro Engine\!" to do script \!"" || scriptID || "\!" with parameter \!"" || paramstring ||
"\!""
)
);
)
) << Prototype( "ex:Run KMScript( scriptID as string, < {param1 as string, param2 as string, etc.} > )" ) << Parameter( "String", "scriptID" ) <<
Parameter( "List", "parameter(s)" ) << Formula Category( "Utility" ) << Description(
"Runs a Keyboard Maestro script. The KM scriptID is a UUID; you can reveal and copy it by opening the 'Or trigger by shell script' text box at the top of your KM macro window. The (optional) parameters to the KM script can be retrieved inside the KM macro using the KM '%TriggerValue' token. KM receives them as a single concatenated string of space-separated values."
)
);In questo momento, lo sto usando all'interno del mio JSL per richiamare una macro KM che apre il file Excel protetto in Numbers, lo rimuove dalla protezione, lo salva come csv, lo apre in JMP, quindi chiude Numbers. Funziona bene.
Spero che qualcun altro possa trovarlo utile.
Oggetto: JMP 15 programma di esecuzione AppleScript()Perfetto!! Grazie!!!Oggetto: JMP 15 programma di esecuzione AppleScript()CIAO @john_madden ,
Vorrei salvare il tuo script come .app, quindi utilizzare qualcosa di simile al seguente per aprire quell'applicazione, che utilizza l'eseguibile "aperto" per aprire .app:
Run Program(
Executable( "/usr/bin/open"),
options( {"/users/me/Desktop/myscript.app"} )
);
Spero che questo ti aiuti a iniziare!
@giuliano