Fehler beim Ausführen des Skripts – „Send Expects Scriptable Object“ beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Ich habe das zuvor von einem der Mitwirkenden freigegebene Skript geändert (vielen Dank), sodass der Benutzer auswählen kann, welche Datendatei (.jmp) geöffnet werden soll:
Names Default To Here( 1 );
// Open a dialog to choose a .jmp file to open
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Run the Distribution Platform
dt << Distribution( column( eval(colNameList) ));Beim Ausführen des Skripts ist der folgende Fehler aufgetreten:
Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/spaltennamen abrufen( string, fortlaufend) /*###*/
Anscheinend gibt es ein Problem mit dt << Spaltennamen abrufen?
Ich habe auch eine Kopie der Datendatei angehängt, die ich verarbeiten möchte. Die erste und zweite Datenzeile sind die LSL bzw. USL, die ich nicht in die Daten aufnehmen möchte. Vielmehr werden sie verwendet, um die LSL- und USL-Linien im Verteilungsdiagramm darzustellen.
Schätzen Sie jede Hilfe aus der Community. Danke schön!
Automatisierung und SkripterstellungBetreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Hallo Jim,
Vielen Dank, dass Sie mich auf dieser Reise begleitet haben!
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Ja, alles, was getan werden muss, ist, den Ausgang zu durchlaufen und jede Achse anzupassen. Siehe unten
names default to here(1);
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude(1);
// Run the Distribution Platform
dist = dt << Distribution( column( eval(colNameList) ));
// Loop across the output and addjust the axes
rdist = dist << report;
For Each( {col, i}, colNameList,
offset = (Column( col )[2] - Column( col )[1]) * .1;
myMin = Column( col )[1] - offset;
myMax = Column( col )[2] + offset;
// Adjust Min and Max Y-axis
rdist[axis box( i )] << Min( myMin ) << Max( myMax );
);Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Es scheint, dass ich eine Art Schleife benötige, damit die Achseneinstellungen auf alle Verteilungsdiagramme angewendet werden?
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Habe einen kleinen Fortschritt gemacht, indem ich das Skript wie folgt geändert habe:
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Adjust Min and Max Y-axis
//dist = dt << Set Axis(
// Min( -10 ),
// Max( 10 )
//);
// Run the Distribution Platform
dist = dt << Distribution( column( eval(colNameList) ));
// Adjust Min and Max Y-axis
rdist = dist << report;
axisbox = rdist[axis box( 1 )];
axisbox << Min( 0 );Mit der Änderung gelang es mir, den Min-Wert des ersten Verteilungsdiagramms auf „0“ zu ändern, aber die restlichen Änderungen blieben unverändert. Darf ich wissen, wie ich den Code ändern soll, damit die Min-Einstellung auf alle Diagramme angewendet werden kann?
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Die Syntax zum Festlegen des Maximalwerts für die Achse ist nicht vorhanden
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
Der Skriptindex zum Ändern von Einstellungen für eine AxisBox() wird unten angezeigt

Das JSL-Beispiel zeigt die richtige Syntax
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Big Class.jmp" );
biv = Bivariate( Y( :weight ), X( :height ), FitLine );
rbiv = biv << report;
axisbox = rbiv[axis box( 1 )];
axisbox << Max( 120 );
Hier ist eine leichte Modifikation der Beispielsyntax, bei der die Einstellung der Achse für ein Histogrammdiagramm gilt, ähnlich dem, was Sie in Ihrem Skript verwenden möchten.
// Run the Distribution Platform
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dist = dt << Distribution( column( :weight ));
rdist = dist << report;
axisbox = rdist[axis box( 1 )];
axisbox << Max( 200 ) << Min( 50 );
Weitere Informationen zum Bearbeiten der Anzeigeausgabe finden Sie im Abschnitt „Anzeigebäume“ des Skripthandbuchs.
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Ich habe die folgenden Zeilen hinzugefügt, um zu sehen, ob ich die Verteilungsdiagramme dazu bringen kann, die Höchst- und Mindestwerte ihrer Y-Achsen zu ändern:
// Adjust Min and Max Y-axis
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
Es scheint keine Wirkung zu geben. Mache ich es falsch?
Das komplette Skript:
// Get the filename of the .jmp file to open
dt = Pick File("Select a .jmp file to open", "", {"JMP Files|jmp;jsl;jrn", "All Files|*"}, 1, 0, "");
// If the user did not select a file, exit the script
If( Is Missing( dt ),
Throw(),
// Else Open the selected file
dt = Open( dt )
);
// Get all of the numeric column's names
colNameList = dt << get column names( string, continuous );
// Take the data from rows 1 & 2 and create the Spec Limits column property
For Each( {col}, colNameList,
Eval(
Substitute(
Expr(
Column( dt, col ) << set property(
"Spec Limits",
{LSL( _LSL_ ), USL( _USL_ ), Show Limits( 1 )}
)
),
Expr( _LSL_ ), As Column( dt, col )[1],
Expr( _USL_ ), As Column( dt, col )[2]
)
)
);
// Exclude and Hide row 1 & 2 to eliminate them from Distributions
dt << Select rows( {1,2} );
dt << hide and exclude;
// Adjust Min and Max Y-axis
dist = dt << Set Axis(
Min( -10 ),
Max( 10 )
);
// Run the Distribution Platform
dist = dt << Distribution( column( eval(colNameList) ));Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Es ist leicht zu machen. Sehen Sie sich den Skriptindex an und sehen Sie sich die für das AxisBox-Objekt verfügbaren Meldungen an. Sie können die Min- und Max-Werte festlegen. Im Index finden Sie Beispiele zur Veranschaulichung der JSL.
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Ich habe gehört, dass Sie gesagt haben, dass JMP, sobald wir die Show( )-Funktion in das Skript einfügen, die Max- und Min-Werte der Achse anpasst, um alle Datenpunkte sowie die LSL und USL zu berücksichtigen.
Aber sagen wir, wenn ich Max und Min manuell über das Skript definieren möchte (mithilfe der Formeln, die ich zuvor erwähnt habe), ist das machbar?
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Sobald die Eigenschaften der Spalte „Spezifikationsgrenzen“ festgelegt und das Element „Show(1)“ angegeben ist, ändert JMP standardmäßig die Achsenwerte für jedes Diagramm, um alle Datenpunkte und alle angegebenen Spezifikationsgrenzen einzuschließen

Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Vielen Dank für Ihre klare Erklärung. Ich verstehe, was Sie gemeint haben, als Sie sagten, dt habe ursprünglich den Namen des Pfads und des Dateinamens übernommen, was es dann für den Versuch, die Spaltennamen abzurufen, unbrauchbar macht. Ich sollte daher Folgendes durchführen:
dt = Open( dt )
Damit die Datentabelle zur ordnungsgemäßen Verarbeitung mit den entsprechenden Daten aus der Datei geladen wird.
Darf ich auch fragen, ob ich möchte, dass das Skript die einzelnen Maxima und Minima der Y-Achsen jedes Diagramms anpasst? Wie kann ich das tun?
Ich möchte den absoluten Bereich zwischen USL und LSL ermitteln und dann das maximale Y auf USL + 0,1*Bereich und das minimale Y auf LSL-0,1*Bereich setzen. Die Idee besteht darin, eine einheitliche Darstellung der Verteilungsdiagramme zu erreichen.
Betreff: Fehler beim Ausführen des Skripts – Send erwartet ein skriptfähiges Objekt beim Zugriff oder bei der Auswertung von „Send“, dt << /*###*/get Column Names( String, Continuous) /*###*/Die Variable „dt“ ist das Problem. Sie verwenden es in Ihrer Pick File() als Ergebnis der Auswahl. Es enthält daher den Wert des Pfads und Namens der Datei, die Sie öffnen möchten, z. B
„C:\Dokumente\meineDatei.jmp“
Dies ist sehr gut für Ihre Open()-Funktion geeignet.
Open( dt )
da die Open()-Funktion den Pfad und den Dateinamen haben muss.
Nach dem Öffnen der Datentabelle wird jedoch „dt“ als Objekt der Nachricht verwendet, um Spaltennamen abzurufen ()
colNameList = dt << get column names( string, continuous );
Die Nachricht „Get Column Names()“ muss auf eine Datentabelle angewendet werden, nicht auf einen Pfad und einen Dateinamen.
Ihre JSL wird ausgeführt, wenn Sie Ihren Open()-Funktionsaufruf in ändern
dt = Open( dt )
Die Variable wird so geändert, dass sie den Wert annimmt
Datentabelle („der Name der Datentabelle“)
Dies ist das Formular, das für den Rest Ihres JSL benötigt wird