Problème
Si vous avez besoin d'ouvrir un fichier dans un programme externe, la fonction JSL Open() fonctionnera généralement pour vous. Toutefois, si vous souhaitez ouvrir un type de fichier que JMP sait importer, vous vous retrouverez probablement avec le fichier importé au lieu d'être ouvert dans le programme externe. L'ouverture d'un fichier Excel est un cas d'utilisation courant pour cela.
La solution
Pour ce faire, nous pouvons utiliser la fonction JSL RunProgram(). Windows nécessite une gestion spéciale afin que JMP ne soit pas gelé jusqu'à la fermeture du programme, et que le processus n'ait pas besoin de se fermer avant la fermeture de JMP.
/* Function: openFileInOSDefault
Open file in the operating system default program
Arguments:
filepath - local path file
*/
openFileInOSDefault = Function({filepath},
If( Host is( "Windows" ),
Run Program(
Executable( "PowerShell.exe" ),
Options(
Eval Insert( "\[-Command "& {Start-Process '^filepath^'}"]\" )
),
Read function( "text" )
);
,
RunProgram(
Executable( "/usr/bin/open" ),
Options( filepath ),
ReadFunction( "text" )
)
);
);
Discussion
En règle générale, je ne pense pas que vous ayez besoin de comprendre exactement comment cela fonctionne et vous pouvez le brancher dans vos scripts et l'appeler avec un chemin vers le fichier que vous souhaitez ouvrir.