Laden von JSL-Skripten in eine Datentabelle durch ein anderes SkriptHallo,
Ich habe mehrere Skripte (XXX.jsl), die separate Berichte mit vielen Diagrammen in jedem dieser Berichte generieren. Und ich habe ein zweites Skript, das Daten aus einer Excel-Datei lädt, die resultierende JMP-Tabelle ändert und die Tabelle speichert.
Ich wäre daran interessiert, im zweiten Skript einen Abschnitt einzubauen, der diese Berichtsskripte aus einem Ordner lädt und diese im oberen linken Feld der JMP-Tabelle verfügbar macht.
Ich mache das, weil ich ein JMP-Skript erstelle, das von meinen Kollegen verwendet werden soll. Sie müssen lediglich den Dateipfad der Excel-Datei ändern und das Skript ausführen. Damit erhalten sie die JMP-Tabelle und können basierend auf ihrer aktuellen Tabelle die Berichte ausführen.
Ich bin sicher, dass es eine Option gibt, aber derzeit sind Ansätze wie „include() fehlgeschlagen“ oder „<< Skript in Datentabelle speichern fehlgeschlagen“ fehlgeschlagen.
Automatisierung und SkriptingBetreff: Laden von JSL-Skripten in eine Datentabelle durch ein anderes SkriptHier ist ein einfaches Beispiel, das Text aus einer Datei als Tabellenskript zu einer Tabelle hinzufügt
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names); // demo
script_txt = Load Text File("$SAMPLE_SCRIPTS/chaosGame.jsl");
Eval(EvalExpr(
dt << New Script("S",
Expr(Parse(script_txt))
);
));
Wenn Sie Kommentare behalten möchten, wird es etwas komplizierter.
Bearbeiten: Auch wenn keine Kommentare benötigt werden, können Sie „Include with << Parse Only“ verwenden.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names); // demo
script_expr = Include("$SAMPLE_SCRIPTS/chaosGame.jsl", << parse only);
Eval(EvalExpr(
dt << New Script("S",
Expr(Name Expr(script_expr))
);
));
Betreff: Laden von JSL-Skripten in eine Datentabelle durch ein anderes SkriptVielen Dank für Ihre schnelle Antwort.
Wäre es möglich, dass Sie diese Lösung etwas näher erläutern?
Mit „Names Default To Here(1); legen Sie Ihren lokalen Namensraum fest.
Dann öffnen Sie eine JMP-Tabelle und löschen die Skripte, die mit der geöffneten Tabelle geliefert wurden, richtig?
Anschließend folgt der Teil, der sich mit dem zu ladenden Skript beschäftigt. Du definierst die Variable script_txt und diese soll die geladene Textdatei aus dem angegebenen Verzeichnis sein. Was bewirken die letzten fünf Codezeilen? Könntest du das kurz erklären?
Ich möchte immer im Detail verstehen, was der Code macht. Das hilft mir sehr, einfache, aber fatale Fehler bei der Implementierung zu vermeiden.
Betreff: Laden von JSL-Skripten in eine Datentabelle durch ein anderes SkriptIch empfehle, den JMP Scripting Guide zu lesen, um die Grundlagen zu erfahren.
- Bezüglich „Namen werden standardmäßig hier verwendet“ (1); Sie sollten Ihre Skripte einfach immer damit beginnen, Skripthandbuch > Programmiermethoden > Erweiterte Bereichsbestimmung und Namespaces .
- Das Öffnen der Tabelle und das Entfernen von Skripten dienen nur zu Demozwecken, um leichter zeigen zu können, was vor sich geht.
- In den letzten Teilen wird die Ausdrucksauswertung verwendet, um sicherzustellen, dass Sie das Skript im richtigen Format in Ihre Tabelle bekommen, damit es einfach ausgeführt werden kann. Skripthandbuch > Programmiermethoden > Erweiterte Ausdrücke, Makros und Listen .
Betreff: Laden von JSL-Skripten in eine Datentabelle durch ein anderes SkriptSuper, danke, es funktioniert! Und vielen Dank für die Erklärung.