Bonjour,
J'ai construit un script qui effectue une analyse des données mais nécessite diverses entrées utilisateur pour sa configuration. Il existe des cas où je souhaite effectuer une analyse similaire ultérieurement, mais sans avoir besoin de ressaisir tous mes paramètres. Le script principal peut déjà lire les variables existantes et remplir automatiquement ces champs, donc si j'ai un moyen de sauvegarder et d'importer ces valeurs par défaut, je serai défini. Je veux pouvoir avoir plusieurs configurations différentes et ne pas avoir besoin de modifier le script lui-même pour en créer un nouveau.
Une idée était de sauvegarder un tableau avec une colonne de noms de variables et une colonne de leurs valeurs, mais cela ne fonctionnait pas bien avec différents types de variables (nombres, chaînes, listes).
Une idée plus intéressante consiste à enregistrer d'autres fichiers .jsl contenant les paramètres par défaut pour différents cas d'utilisation dans un espace de noms partagé, puis à exécuter celui correspondant avant d'exécuter mon script principal. J'aimerais pouvoir créer le fichier de configuration à partir de mon script, plutôt que de le créer manuellement.
J'ai trouvé cet autre article sur la sauvegarde de nouveaux fichiers JSL. https://community.jmp.com/t5/Discussions/how-do-you-create-a-new-script-file-from-jsl/td-p/34740
Il semble que je devrais pouvoir configurer un devis JSL, puis remplacer les valeurs actuelles des variables dans ce devis, mais NameExpr ne fonctionne pas pour cela. Les chaînes sont remplacées sans guillemets, les listes apparaissent simplement sous forme de liste et les nombres sont ignorés. Y a-t-il un léger changement qui permettrait que cela fonctionne, ou une meilleure façon d'atteindre le même objectif ?
Merci!
names default to here (1);
//namespace for the shared variables
If( !Namespace Exists( "TestNS" ), New Namespace( "TestNS" ) );
//the variables I want to save for later
TestNS:a = 5;
TestNS:b = "text";
TestNS:c = {1,2,3,4};
TestNS:d = {"a","b","c","d"};
//set up script to save as JSL
script = JSL Quote(
TestNS:a = a_dv;
TestNS:b = b_dv;
TestNS:c = c_dv;
TestNS:d = d_dv;
);
//substitute the dummy values for the current values... this isn't working
substitute Into (script, expr(a_dv), nameexpr (TestNS:a));
substitute Into (script, expr(b_dv), nameexpr (TestNS:b));
substitute Into (script, expr(c_dv), nameexpr (TestNS:c));
substitute Into (script, expr(d_dv), nameexpr (TestNS:d));
show(script);
//save script for later use
Save Text File( "$downloads\MyScript.jsl", script );