Holen Sie sich Spaltenskripte mithilfe der For-SchleifeIch habe eine Datentabelle mit einer Reihe neuer Spalten, die auf Formeln basieren, die ich mühsam manuell eingegeben habe. Ich möchte ein JSL-Skript erstellen, mit dem ich alle diese Spalten in einer anderen Tabelle neu erstellen kann.
Das folgende Skript gibt das zurück, was ich für eine einzelne Spalte möchte:
dt=current data table();
column(dt,1) << Get script;
Ich wollte es mit einer FOR-Schleife automatisieren, bekomme es aber nicht zum Laufen. Für Vorschläge zur Behebung dieses Problems wären wir sehr dankbar!
Folgendes habe ich versucht:
dt=current data table();
j= N cols(dt);
For( i = 1, i <=j , i++,
Column(dt,i) << Get Script;
);
Automatisierung und SkripterstellungBetreff: Spaltenskripte mithilfe der For-Schleife abrufenHallo @cjohnson6 ,
Der Skript für das Add-In „Ausgewählte Spalten“ kopieren wird genau das tun: Wählen Sie Ihre Formelspalte aus, führen Sie das Add-In aus, und das kombinierte Skript für alle ausgewählten Spalten wird in Ihre Zwischenablage kopiert, sodass Sie es in Ihren JSL-Workflow einfügen können.
@julianisch
Betreff: Spaltenskripte mithilfe der For-Schleife abrufenAls Referenz lautet der geschäftliche Teil des Add-In-Skripts wie folgt:
//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
)
)
);
Betreff: Spaltenskripte mithilfe der For-Schleife abrufenIch habe gerade eine hochgeladen Add-in zum Kopieren von Formeln zum Dateiaustausch .
Es bietet Ihnen eine interaktive Möglichkeit, dies über das Add-Ins-Menü zu tun.

Sie müssen kein eigenes Skript schreiben.
Betreff: Spaltenskripte mithilfe der For-Schleife abrufenSie können das Skript für die gesamte Datentabelle auf einmal abrufen
dt = Current Data Table();
myScript = dt << get script;
Der Nachteil besteht darin, dass alle im Skript eingebetteten Daten übernommen werden.Am einfachsten ist es also, zuerst die Daten zu löschen und dann das Skript abzurufen
dt = Current Data Table();
dt << select all rows << delete rows;
myScript = dt << get script;
Dann ist es eine einfache Angelegenheit, das abgerufene Skript zu bearbeiten.
Was Ihr Skript betrifft, gehe ich davon aus, dass Sie die Ergebnisse Ihres << get-Skripts im Protokoll anzeigen möchten, damit Sie von dort aus ausschneiden und einfügen können.JMP zeigt normalerweise die letzten Ergebnisse der letzten Anweisung an, wenn ein Skript ausgeführt wird.Daher werden die Ergebnisse angezeigt, wenn Sie nur ein <dt = Current Data Table();
j = N Cols( dt );
For( i = 1, i <= j, i++,
Show( Column( dt, i ) << Get Script )
);
Wenn Sie die Werte in einer Struktur speichern möchten, mit der Sie programmgesteuert arbeiten können, können Sie die Ergebnisse auch in einer Liste platzieren
dt = Current Data Table();
myList = {};
j = N Cols( dt );
For( i = 1, i <= j, i++,
myList[i] = Column( dt, i ) << Get Script
);