Obtenir des scripts de colonne en utilisant la boucle ForJ'ai un tableau de données avec un tas de nouvelles colonnes basées sur des formules que j'ai péniblement entrées manuellement. Je souhaite créer un script JSL qui me permettra de recréer toutes ces colonnes dans une autre table.
Le script suivant retournera ce que je veux pour une seule colonne:
dt=current data table();
column(dt,1) << Get script;
Je voulais l'automatiser à l'aide d'une boucle FOR, mais je ne peux pas le faire fonctionner. Toute suggestion sur la façon de résoudre ce problème serait grandement appréciée!
Voici ce que j'ai essayé:
dt=current data table();
j= N cols(dt);
For( i = 1, i <=j , i++,
Column(dt,i) << Get Script;
);
Re: Obtenir des scripts de colonne en utilisant For Loopsalut @ cjohnson6 ,
le Copie de script pour le complément de colonnes sélectionnées fera exactement cela - sélectionnez votre colonne de formule, exécutez le complément, et le script combiné de toutes les colonnes sélectionnées sera copié dans votre presse-papiers afin que vous puissiez le coller dans votre flux de travail JSL.
@julien
Re: Obtenir des scripts de colonne en utilisant For LoopPour référence, la partie commerciale du script de complément est la suivante:
//collist is a list of the formula columns to be copied
For( i = 1, i <= N Items( collist ), i++,
//create a new column in the copy to data table
//substitute replaces the form in the New Column() expression with the formula from
//the source column
Eval(
Substitute(
Expr(
dt2 <<
New Column(
Column(
chosen,
Char( collist[i] )
) << get name,
formula( form )
)
),
Expr( form ),
Column( chosen, Char( collist[i] ) )
<< get formula
)
)
);
Re: Obtenir des scripts de colonne en utilisant For LoopJe viens de télécharger un Complément Copie de formules au Échange de fichiers .
Cela vous donnera un moyen interactif de le faire à partir du menu Add-ins.

Pas besoin d'écrire votre propre script.
Re: Obtenir des scripts de colonne en utilisant For LoopVous pouvez obtenir le script pour la table de données entière à la fois
dt = Current Data Table();
myScript = dt << get script;
L'inconvénient est qu'il apportera toutes les données incorporées dans le script. Donc, la chose la plus facile à faire est de supprimer les données d’abord, puis de récupérer le script.
dt = Current Data Table();
dt << select all rows << delete rows;
myScript = dt << get script;
Il devient alors simple de modifier le script récupéré.
En ce qui concerne votre script, ce que je suppose que vous souhaitez faire est d’afficher les résultats de votre script << get dans le journal, afin que vous puissiez les copier-coller à partir de là. JMP affiche généralement les derniers résultats de la dernière instruction lors de l'exécution d'un script. Par conséquent, lorsque vous exécutez une seule colonne << get script, les résultats sont affichés. Si vous souhaitez le faire en boucle, vous devez forcer les résultats dans le journal à l'aide d'une fonction Ecrire, Imprimer ou Afficher.
dt = Current Data Table();
j = N Cols( dt );
For( i = 1, i <= j, i++,
Show( Column( dt, i ) << Get Script )
);
Ou, si vous souhaitez conserver les valeurs dans une structure avec laquelle vous pouvez travailler par programme, vous pouvez placer les résultats dans une liste.
dt = Current Data Table();
myList = {};
j = N Cols( dt );
For( i = 1, i <= j, i++,
myList[i] = Column( dt, i ) << Get Script
);