Hola,
Creé un script que realiza análisis de datos pero requiere varias entradas del usuario para configurarlo. Hay casos en los que quiero realizar un análisis similar más adelante, pero no necesito volver a ingresar todas mis configuraciones. El script principal ya puede leer variables existentes y autocompletar esos campos, por lo que si tengo alguna forma de guardar e importar esos valores predeterminados, estaré listo. Quiero poder tener múltiples configuraciones diferentes y no necesitar editar el script para crear uno nuevo.
Una idea era guardar una tabla con una columna de nombres de variables y una columna de sus valores, pero eso no funcionaba bien con diferentes tipos de variables (números, cadenas, listas).
Una idea que parece mejor es guardar otros archivos .jsl que contienen la configuración predeterminada para diferentes casos de uso en un espacio de nombres compartido y luego ejecutar el correspondiente antes de ejecutar mi script principal. Me gustaría poder crear el archivo de configuración desde mi script, en lugar de crearlo manualmente.
Encontré esta otra publicación sobre cómo guardar nuevos archivos jsl. https://community.jmp.com/t5/Discussions/how-do-you-create-a-new-script-file-from-jsl/td-p/34740
Parece que debería poder configurar una cotización JSL y luego sustituir los valores actuales de las variables en esa cotización, pero NameExpr no funciona para eso. Las cadenas se sustituyen sin comillas, las listas simplemente aparecen como Lista y los números se ignoran. ¿Existe algún pequeño cambio que haría que esto funcione o una mejor manera de lograr el mismo objetivo?
¡Gracias!
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 );