Comment utiliser la valeur de ma boucle For Each pour générer de nouveaux scripts de tableJe parcours les scripts de table de données existants et crée une copie de chaque script avec quelques modifications.
Je souhaite insérer ces noms de scripts de table dans les scripts de table générés.
La sortie que j'obtiens insère simplement le mot "script" dans mes scripts de table générés au lieu de la valeur de chaîne réelle dans scriptList
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
scriptList = dt << Get Table Script Names;
For Each({script}, scriptList,
If ((!Contains(scriptList, "Run "||script)),
dt << New Script("Run "||script,dt=Current DataTable();w=eval(dt << get table property((script)));w << set window title((script)));
);
);
Automatisation et scriptsRe : Comment utiliser la valeur de ma boucle For Each pour générer de nouveaux scripts de tableQuelques manipulations d'expression combinées avec Insérer une expression dans une autre en utilisant Eval Insert, Eval Expr, Parse et Substitute devrait marcher. Voici un exemple :
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For Each({script_name}, dt << Get Table Script Names,
If((!Contains(script_name, "Run " || script_name)),
script_expr = dt << Get Script(script_name);
Eval(Substitute(
Expr(
dt << New Script("Run " || _script_name_,
Local({w},
w = _new_script_;
w << set window title(_script_name_)
)
);
),
Expr(_script_name_), script_name,
Expr(_new_script_), Name Expr(script_expr)
))
)
);Re : Comment utiliser la valeur de ma boucle For Each pour générer de nouveaux scripts de tablemerci effectivement ça marche bien
Re : Comment utiliser la valeur de ma boucle For Each pour générer de nouveaux scripts de tableSalut, je suppose que je ne l'ai pas spécifié comme tel dans ma question d'origine, mais votre solution a changé le comportement de mon script puisqu'il copie le code du script cible dans le nouveau script. Je voulais garder la référence uniquement au script original. Voici le script final que j'utilise, peut-être que d'autres personnes pourraient le trouver utile.
dt = Current Data Table();
scriptList = dt << Get Table Script Names;
For Each( {script_name}, scriptList,
If( (!Contains( script_name, "Run" ) & !Contains( scriptList, "Run " || script_name )),
Eval(
Substitute(
Expr(
dt << New Script(
"Run " || script_name,
dt = Current Data Table();
w = Eval( dt << get table property( script_placeholder ) );
w << set window title( script_placeholder );
)
),
Expr(script_placeholder), Char(script_name)
)
)
)
);Re : Comment utiliser la valeur de ma boucle For Each pour générer de nouveaux scripts de tableJMP 14 pas de travail.
Re : Comment utiliser la valeur de ma boucle For Each pour générer de nouveaux scripts de tableLa fonction For Each() est une nouvelle fonctionnalité de JMP 16.