Die häufigste Anwendung der JMP-Skriptsprache ist die Automatisierung von Arbeitsabläufen. Die zweithäufigste Anwendung ist das Auslesen von Ergebnissen aus JMP-Fenstern. Dies ist einfach, aber leider ist es für Einsteiger nicht offensichtlich, wie man dies mit einem Skript umsetzt. Wir erklären den Aufbau von Fenstern anhand eines einheitlichen Modells von Anzeigeobjekten. Anschließend zeigen wir, wie man auf beliebige Inhalte in beliebigen Fenstern zugreift. Abschließend stellen wir verschiedene alternative Adressierungsformen vor.
Wir stellen Ihnen insbesondere die XPath-Abfragesprache vor. Fundierte Hintergrundinformationen werden durch anschauliche und praxisnahe Beispiele ergänzt, die wir beim Schreiben von Unit-Test-Skripten für die JMP-Entwicklung erstellt haben. Wir heben außerdem interaktive JMP-Tools hervor, die die Arbeit mit JMP-Inhalten vereinfachen und zugänglicher machen, sowie einige Best Practices. Wir zeigen Ihnen, wie Sie Ihre JMP-Ergebnisse optimal nutzen!
Hallo. Ich bin Mark Bailey und hier bin meine Kollegin Tanya Muldon. Der Titel unserer Präsentation lautet: „Ich sehe es, aber wie komme ich darauf?“ Wir werden uns mit einer häufigen Situation befassen. JMP erzeugt viele verschiedene Ergebnisse in unterschiedlichen Fenstern, und irgendwann möchten Sie vielleicht Ihre Analyse automatisieren, die Darstellung anpassen oder Informationen für weitere Berechnungen extrahieren. Das wirft einige Fragen auf: Wie mache ich das? Gibt es eine Möglichkeit, auf diese Ergebnisse zuzugreifen? Gibt es ein hilfreiches Tool? Und schließlich: Gibt es nach fast 25 Jahren JMP-Skripting bewährte Vorgehensweisen für diesen Zweck?
Bevor ich zum Hauptteil unserer Präsentation komme, möchte ich noch etwas anmerken. Sie können JMP jederzeit anweisen, ein Skript für Ihre Plattform zu speichern. Alle Änderungen, die Sie an der Anzeige vorgenommen haben, werden automatisch mithilfe des Arguments „An Anzeige senden“ im Startskript der Plattform protokolliert. Dieses Skript führen Sie später aus, wenn Sie die Analyse und die Ergebnisse reproduzieren möchten.
Das Argument „An Anzeige senden“ ist ein Mechanismus, der entwickelt wurde, damit JMP diese Änderungen für Sie protokollieren kann, aber er ist nicht für Skripte gedacht. Wir zeigen Ihnen die in JMP integrierten Techniken, die sich als bewährte Vorgehensweisen erwiesen haben.
Zunächst einmal ist es wichtig zu verstehen, dass Sie in JMP zwei Objekte betrachten, die zusammenarbeiten. Das erste Objekt ist die Analyseebene, die für alle Berechnungen zuständig ist. Sie interagieren mit der Analyseebene über die Kontextmenüs, beispielsweise durch Klicken auf ein Dreieck, um eine Auswahl zu treffen. Das zweite Objekt ist die Berichtsebene, die die Ergebnisse der Analyseebene organisiert und anzeigt.
Sie möchten mit der Berichtsebene kommunizieren. Dies geschieht über eine Objektreferenz, an die eine Nachricht gesendet werden kann. Die Berichtsebene ist hierarchisch verzweigt, und die Ausgangsreferenz verweist auf die Wurzel dieses Anzeigebaums. Die Knoten entlang der einzelnen Zweige sind JMP-Anzeigefelder. Nun stellt sich die Frage: Wie finde ich das Anzeigefeld, an das ich eine Nachricht senden möchte? Dies geschieht mithilfe eines Index. Der Index steht in eckigen Klammern nach der ursprünglichen Referenz der Berichtsebene. Bei stark verschachtelten Anzeigefeldern kann es erforderlich sein, mehrere Indizes zu verwenden. Diese können entweder aufeinanderfolgend oder als einzelner Index mit einer Liste der verschiedenen Felder angegeben werden.
Ihr Index kann verschiedene Formen annehmen: absolut, relativ oder bedingt. Um dies zu veranschaulichen, beginne ich mit einem einfachen Beispiel. Ich öffne die große REST-Datentabelle. Anschließend sende ich die Nachricht „by variant“ an die Datentabelle, um die Analyse von Gewicht und Größe zu starten. Nachdem ich diese Referenz in einem Variablenobjekt gespeichert habe, kann ich ihr Nachrichten senden. Beispielsweise sende ich die Nachricht „fit line“ mit der Zahl 1, um diese Analyse zu aktivieren. Das Ergebnis ist die rote Ausgleichsgerade (Methode der kleinsten Quadrate).
Ich möchte aber das Feld auswählen, in dem das Diagramm dargestellt wird. Dazu muss ich die Analyseebene mithilfe der Berichtsnachricht um eine Referenz bitten. Diese speichere ich. Nun kann ich diese Referenz indizieren; in diesem Fall ist „Rahmenfeld eins“ die passende Indizierung. Darauf kommen wir später zurück. Anschließend kann ich die Nachricht senden und auswählen. So verwenden wir Indizes im Prinzip.
Sprechen wir zunächst über absolute Indizes. In diesem Fall verwenden Sie einen Index, der Ihnen angibt, welchen Zweig Sie in der verzweigten Struktur der Anzeigefelder nehmen müssen. Angenommen, ich möchte die Spalte mit den Zahlen in der Zusammenfassung der Anpassungsübersicht auswählen. Ich beginne mit dem Wurzelknoten, der mir zugewiesenen Referenz, und durchlaufe die Zweige. Vom Wurzelknoten aus gehe ich zum zweiten Zweig, dann zum ersten, dann zum dritten und so weiter. Schließlich rufe ich die `select`-Methode auf.
Sie sehen, dass dies funktioniert. Absolute Skripte sind zwar gültig und effektiv, aber sehr schwer zu spezifizieren und ebenso schwer lesbar. Sie sind außerdem fehleranfällig. Das heißt, sie können je nach verschiedenen Umständen, den geöffneten Fenstern, der Reihenfolge der ausgeführten Operationen und natürlich JMP-Updates selbst leicht fehlerhaft werden. Wir raten daher davon ab.
Die relative Schreibweise ist einfacher anzugeben und zu lesen. Um in diesem Fall auf dieselbe Zahlenspalte zuzugreifen, beginne ich mit „Bericht“ und verwende dann folgende Indizes: „Gliederungsfeld Nr. 3“, „Tabellenfeld Nr. 1“, „Zahlenspaltenfeld Nr. 1“. Sie können sich den Vorgang beim Lesen fast vorstellen. Das Ergebnis ist dasselbe, aber diese Schreibweise ist auch weniger fehleranfällig.
Die dritte Möglichkeit besteht in der Verwendung der XPath-Abfragesprache. Hierbei senden wir die XPath-Nachricht an den Bericht. Diese benötigt ein einzelnes Argument: eine Zeichenkette, die den Suchbegriff enthält. Das Ergebnis ist dasselbe wie bei den ersten beiden Methoden, jedoch ist diese Methode am zuverlässigsten. Darüber hinaus ist sie die leistungsfähigste und flexibelste. Sie gibt eine Liste aller Treffer zurück und wird von zahlreichen Funktionen und bedingten Logiken dieser Abfragesprache unterstützt.
Diese Folie zeigt den Anfang der XML-Datei für dieses bivariate Fenster. Es handelt sich dabei um die Extensible Markup Language (XML). Wir werden hier nicht näher darauf eingehen, aber im Prinzip dient sie zur Darstellung eines JMP-Fensters, und die XPath-Abfragesprache basiert auf dieser Form.
JMP-Anzeigestrukturen, also alle Fenster in JMP, lassen sich mithilfe von XML beschreiben. XML dient allgemein der Kennzeichnung und Speicherung hierarchischer Daten und Attribute. JMP implementiert die erste Version dieser Sprache. Ein separates Dokument mit detaillierteren Informationen und weiterführenden Online-Ressourcen ist verfügbar.
Ich möchte Ihnen nun einige grundlegende Syntaxregeln erläutern, um Ihnen einen Überblick zu geben, und anschließend übergebe ich das Wort an Tanya, die Ihnen anhand einiger Beispiele aus der Praxis zeigen wird, wie wir diese anwenden.
XPath kennt auch eine absolute Form bzw. einen absoluten Pfad. Dieser wird mit einem einzelnen Schrägstrich gefolgt vom Namen des gesuchten Knotens angegeben. Weitere Knoten werden mit jeweils mehreren Schrägstrichen dargestellt. Dies ist jedoch im Allgemeinen nicht die beste Methode für die Darstellung von Baumstrukturen in JMP, da JMP-Fenster dynamisch sind.
Eine bessere Methode ist der relative Pfad. In diesem Fall verwenden wir zwei Schrägstriche, um den ersten Knoten zu kennzeichnen. Dieser Knoten kann an beliebiger Stelle im Anzeigebaum vorkommen, gefolgt von weiteren Knoten, um schließlich das gewünschte Ziel zu finden. Die Knoten müssen nicht benachbart sein, also keine aufeinanderfolgenden Zweige darstellen.
In der dritten Zeile sehen Sie ein einfaches Beispiel. Die Suchanfrage sucht in einem relativen Pfad nach „Umrissbox“. Sie liefert eine Liste aller Knoten, die sich in einer Umrissbox befinden – eine sehr leistungsstarke Funktion. Alternativ können Sie die Suche mit einem Prädikat präzisieren, in diesem Fall mit dem Inhalt der eckigen Klammern. Ich werde darauf später genauer eingehen. So können wir die Suche einschränken: Wir möchten nicht alle Umrissboxen, sondern nur die mit einem Titel oder einer Zusammenfassung der Anpassung.
Ähnlich verhält es sich mit Platzhaltern, mit denen wir einige, aber nicht alle Details einer Suche angeben können. Ich möchte nach Gliederungsboxen suchen, deren Titel das Wort „Zusammenfassung“ enthält. Der Titel kann beispielsweise „Zusammenfassung“ lauten oder auch „Zusammenfassung der Passform“. Es werden alle Treffer gefunden. Wir können dies auch verwenden, um alle Knoten der nächsten Ebene zu finden. „Outlinebox/*“ gibt alle Anzeigefelder innerhalb aller Gliederungsboxen zurück.
Wir können nicht nur nach Knoten, sondern auch nach Attributen suchen. In diesem Fall suchen wir nach allen Attributen aller Umrisskästchen. Das @-Zeichen steht für ein Attribut, und der Stern bedeutet, dass es sich um ein beliebiges Attribut handelt.
Sprechen wir nun etwas genauer über Prädikate. Prädikate werden in eckigen Klammern angegeben. In diesem Fall suchen wir nach Rahmen, die den Wert „Zusammenfassung der Anpassung“ haben. Aber es geht noch mehr. In der zweiten Zeile sehen Sie dieselbe Suche, nur dass wir am Ende nicht alle Felder der Zahlenspalte, sondern nur das letzte betrachten. Sie können diese Art von Information angeben, wie zum Beispiel in der dritten Zeile, wo wir die ersten drei Rahmen durchsuchen möchten. Wir verwenden die Positionsfunktion, und diese muss kleiner als der Wert sein, damit die Übereinstimmung gefunden wird. Es kann sich nicht nur um eine Information über den Knoten selbst handeln, sondern auch um ein Attribut dieses Knotens. Wir könnten beispielsweise nach allen Texteingabefeldern mit einer Breite von mehr als 10 suchen. Diese Möglichkeiten stehen Ihnen zur Verfügung.
Während Sie suchen, benötigen Sie manchmal eine Referenz auf ein Anzeigefeld oder möchten eine Nachricht senden. Manchmal benötigen Sie aber auch den Wert oder das Attribut des Knotens. Hier ein Beispiel: Wir suchen alle Zugriffsfelder und für jedes dieser Felder alle Texteingabefelder. Anstatt eine Referenz auf das Anzeigefeld zurückzugeben, benötigen wir den Wert, den aktuellen Text im Feld usw. In der letzten Zeile ermitteln wir die Breite aller Rahmenfelder im Fenster.
Abschließend möchte ich noch kurz auf das Konzept der Achsen in XPath eingehen. Achsen dienen, wie bereits erwähnt, der Verzweigung von Knoten zum nächsten und der Suche nach Informationen entlang dieses Weges – ob vorwärts, rückwärts oder seitwärts. Im ersten Beispiel suche ich alle Achsenfelder. Anstatt einen bestimmten Knotentyp anzugeben, verwenden die beiden Punkte die Angabe der übergeordneten Knoten dieser Achsenfelder.
Dasselbe gilt für die zweite Zeile: Wir suchen nach Spaltenüberschriften mit der Bezeichnung „Summe der Quadrate“ und anschließend nach dem übergeordneten Knoten dieser Spalten. Das ist die eigentliche Spaltenüberschrift. Ich kann die Beziehung explizit angeben. Im dritten Beispiel betrachte ich das erste Bildfeld und suche nach einem untergeordneten Texteingabefeld.
Ich kann auch den umgekehrten Weg gehen. Das ähnelt dem zweiten Beispiel auf dieser Folie. Ich suche nach einer Spaltenüberschrift mit dem Namen „T-Verhältnis“ und möchte dann das übergeordnete Element dieser Anzeigebox vom Typ „Zahlenspalte“ finden. Sie haben viele Möglichkeiten und sind sehr flexibel. Oft genügt eine einfache Suchzeichenfolge, aber bei Bedarf können Sie Prädikate und einige der anderen von mir erwähnten Syntaxwerkzeuge verwenden.
JMP bietet Ihnen einige hilfreiche Funktionen. Im Hilfemenü finden Sie unter „Skriptindex“ die Option, Anzeigefelder anzuzeigen. Dort werden Ihnen alle verfügbaren Anzeigefelder, die zugehörigen Protokolle sowie eine Suchfunktion angezeigt.
Wenn Sie mit der rechten Maustaste auf das graue Dreieck vor einem Rahmen klicken, öffnet sich ein Menü. Dort können Sie „Anzeigestruktur anzeigen“ oder „Eigenschaften anzeigen“ auswählen. Diese interaktiven Werkzeuge helfen Ihnen, die Anzeigestruktur und ihre Werte und Attribute zu erkunden. Das kann sehr hilfreich sein.
Das Optimierungsprotokoll ist eine hervorragende Möglichkeit, die Suchergebnisse einzusehen und festzustellen, ob weitere Anpassungen erforderlich sind. Es gibt die JSL-Nachricht „Get XML“. Manchmal ist es notwendig, die zugrundeliegende XML-Darstellung zu betrachten. Dies kann sehr hilfreich sein. Außerdem gibt es die JSL-Funktion „Get Display Path“, die für ein bestimmtes Anzeigefeld entweder die korrekte Indexform oder den korrekten XML-Pfad angibt, um auf dieses Feld zu verweisen.
Das war’s von mir. Ich übergebe nun an Tanya für unsere Live-Demonstration.
Danke, Mark. In der ersten Fallstudie, die ich mir ansehen möchte, möchte ich JSL verwenden, um die in diesem Bericht angezeigten Werte zu ermitteln. Zunächst muss ich herausfinden, welches Element diese Werte enthält. Eine Möglichkeit hierfür ist die Verwendung von „Eigenschaften anzeigen“.
Die Eigenschaftenanzeige zeigt mir, dass die Mittelwerte in einer Zahlenspalte enthalten sind. Dieses Feld hier zeigt die verschachtelte Baumstruktur, die Mark bereits erwähnt hat. Diese Zahlenspalte ist Teil der Tabelle, die wiederum Teil einer Gliederung ist usw.
Hier finden Sie auch den Pfadknoten für dieses Feld. Der folgende JSL-Code ermöglicht es Ihnen, auf die Spalte „Mittelwert“ mit den Zahlenwerten zuzugreifen. Standardmäßig wird die Indexmethode verwendet. Alternativ können Sie XPath verwenden. JMP zeigt Ihnen dann den entsprechenden XPath-Code an, um auf diese Spalte zuzugreifen.
Sobald Sie das Element identifiziert haben, das die Informationen speichert, müssen Sie herausfinden, welche Befehle Sie an dieses Element senden können. Eine Möglichkeit hierfür bietet der Skriptindex. Wenn wir beispielsweise nach „Zahlenspaltenfeld“ suchen, finden wir verschiedene GET-Befehle, die wir an dieses Element senden können. Ich werde hier den Befehl „GET als Matrix“ verwenden.
Ich werde verschiedene Methoden verwenden, um diese Informationen zu erhalten. Die erste Methode verwende ich für meinen Bericht. Die RPT-Datei ist meine Berichtsebene, die Mark bereits erwähnt hat. In meinem Bericht suche ich nach dem ersten Zahlenspaltenfeld und rufe die Werte als Matrix ab. Diese Werte sind hier unten in meinem Protokoll sichtbar. Wenn ich mir meinen Bericht ansehe, sehe ich, dass es sich um dieselben Werte handelt.
Als Nächstes verwende ich einen XPath-Befehl, um dieselben Informationen zu erhalten. Diesmal suche ich nach dem Titel des Übersichtsfelds, „Variabilitätsübersicht der Messungen“. Ich suche nach der Spalte mit der Überschrift „Mittelwert“ und lasse mir diese als Matrix anzeigen.
Abschließend werde ich hier relative Indizes verwenden. In meinem Bericht suche ich nach der Variabilitätsübersicht für die Messung und der Spalte mit der Bezeichnung „Mittelwert“. Das Ergebnis stelle ich als Matrix dar.
Obwohl ich mit allen drei Methoden die gleichen Ergebnisse erhalte, raten wir von der ersten Methode ab. Sie ist nicht sehr zuverlässig. Sollte JMP den Bericht in Zukunft ändern und eine weitere Zahlenspalte hinzufügen, würde dieser Code nicht mehr die erwarteten Ergebnisse liefern.
Die letzten beiden Beispiele zeigen recht umfangreiche Änderungen. Das zuletzt gezeigte relative Beispiel ist kürzer als das XPath-Beispiel. Das ist normalerweise der Fall, wenn man nur ein einzelnes Element aus dem Bericht extrahiert. XPath spielt seine Stärken besonders aus, wenn man mehrere Elemente gleichzeitig extrahiert oder komplexe Operationen mit Platzhaltern und Prädikaten durchführt, wie Mark es bereits erwähnt hat.
Betrachten wir ein komplexeres Beispiel. In dieser Fallstudie möchten wir die zusammenfassenden Grenzwertinformationen für beide Antworten extrahieren. Wir haben hier zwei Antworten und benötigen die Informationen von beiden. Dies erreichen wir durch relative Indizierung mit zwei Spalten.
In unserer Berichtsebene können wir in der ersten, darunterliegenden Tabellenbox nach Zusammenfassungen der Gewichtsbeschränkungen suchen und diese Informationen abrufen. Anschließend können wir einen zweiten Befehl verwenden, um in derselben Tabellenbox nach Zusammenfassungen des zulässigen Gewichts zu suchen und auch diese Informationen abzurufen.
Alternativ können wir einen einzelnen X-Graph-Befehl verwenden. In unserer Berichtsebene finden wir das Rahmenfeld mit der Bezeichnung „Regeldiagramm-Generator“. Sie sehen es hier oben. Wir können alle Tabellenfelder unter „Regeldiagramm-Generator“ suchen und deren Informationen abrufen.
Beim Schreiben dieses Codes sehen wir deutlich mehr Informationen im Protokoll als erwartet. Hier werden sowohl die Tabellenfelder angezeigt, die in Ihrem Bericht erscheinen, als auch unsichtbare Tabellenfelder. Es gibt weitere Tabellenfelder, die Teil dieses Berichts sind, deren Informationen wir aber noch nicht in unsere Berichtsebene aufgenommen haben, beispielsweise hinzugefügte Grenzwerte oder den Sigma-Bericht. Wir können unserer XPath-Anweisung einige Informationen hinzufügen, um diese sichtbar zu machen.
Für alle Tabellenfelder möchten wir sowohl das Tabellenfeld selbst als auch seine übergeordneten Elemente untersuchen und prüfen, ob sie sichtbar sind oder nicht. In diesem speziellen Code prüfen wir, ob die Sichtbarkeit auf „false“ gesetzt ist, zusätzlich verwenden wir aber auch eine „nicht“-Anweisung. Im Wesentlichen suche ich nach den Tabellenfeldern, die im Bericht sichtbar sind. Wenn ich den Code ausführe, erhalte ich nun dieselben Informationen wie zuvor mit meinen zwei separaten Anweisungen. XPath ermöglichte es mir, diese Informationen mit einer einzigen Anweisung anstatt mit zwei separaten Anweisungen zu erhalten.
In der folgenden Fallstudie erstelle ich ein Vorhersageprofil und habe die Wünschbarkeit maximiert. Ich möchte die roten Y- und X-Werte aus diesem Bericht extrahieren. Da es sich in beiden Fällen um Achsenwerte handelt und beide rot sind, könnte man annehmen, dass sie im selben Element gespeichert sind. Das ist jedoch nicht der Fall.
Das können wir überprüfen, indem wir zum Fenster „Eigenschaften anzeigen“ zurückkehren. Wenn ich das richtige Element anklicke, sehen wir, dass die Y-Werte Textfelder und die X-Werte Zahleneingabefelder sind. Zuerst kümmern wir uns um die Textfelder. Wir suchen den Vorhersage-Profiler per XPath und anschließend die sichtbaren Textfelder. Auch hier mussten wir Code für die Sichtbarkeit hinzufügen, da einige Textfelder im Bericht nicht angezeigt werden und wir diese nicht berücksichtigen möchten.
Beim Ausführen des Codes sehen wir, dass wir nicht nur die roten Werte erhalten, sondern auch die blauen Werte für die Konfidenzintervalle. Das liegt daran, dass diese ebenfalls als Textfelder gespeichert sind. Wir können eine for-Schleife hinzufügen, um jedes Element zu durchlaufen, jedes dritte Element mit den roten Werten zu erfassen und diese Informationen in einer Matrix zu speichern.
Wir haben nun unsere rot markierten Y-Werte, benötigen aber auch die rot markierten X-Werte. Diese wurden in nummerierten Eingabefeldern gespeichert. Mithilfe einer XPath-Abfrage können wir in diesen Feldern nach einem Vorhersageprofil suchen und die Werte als Matrix abrufen. Diese Werte finden Sie in unserem Protokoll weiter unten.
Für die nächste Fallstudie möchte ich alle Y-Werte für jede Linie innerhalb dieses ersten Rahmens bzw. dieser Positionskarte ermitteln, also den durchschnittlichen Durchmesser. Wenn Sie die Eigenschaften anzeigen, werden Sie feststellen, dass Sie nicht direkt auf diese Rahmenebene zugreifen können. Wenn ich hier klicke, wird mir zwar ein Rahmen angezeigt, aber ich kann dessen Inhalt nicht sehen. Ich muss wissen, wie diese Werte in meinem Rahmen gespeichert sind. Eine andere Möglichkeit, diese Informationen zu erhalten, ist die Verwendung der Baumstrukturanzeige.
In der Baumstrukturanzeige sehe ich auch die Verzweigungsstruktur, die Mark vorhin erwähnt hat. Innerhalb dieses Rahmens sehe ich verschiedene Segmente. Mich interessieren die Liniensegmente, die hier unten angezeigt werden. Ich kann eine XPath-Anweisung verwenden, um alle Liniensegmente aus dem ersten Rahmen abzurufen.
Bisher hatten alle meine XPath-Anweisungen einen Umrissknoten. Diese hier nicht. Er ist im Control Chart Builder nicht wirklich notwendig. Alle Diagramme im Control Chart Builder werden unterhalb dieses Umrisses angezeigt, selbst wenn mehrere Antworten vorhanden sind. Daher benötige ich ihn hier nicht.
Wenn ich das ausführe, sehe ich, dass es sieben Elemente gibt. Ich kann dann ein assoziatives Array verwenden, um die Y-Werte dieser Elemente zu erhalten. Nach der Ausführung sehe ich, dass meine Y-Werte für den hinzugefügten Durchschnitt 4,2 betragen, mein Y-Wert für die hinzugefügte untere Grenze 4,1 beträgt usw.
Für diese Fallstudie habe ich drei verschiedene Diagramme. Ich möchte, dass die Y-Achse in allen Diagrammen denselben Minimal- und Maximalwert hat und dass in jedem Diagramm dieselbe Referenzlinie angezeigt wird. Zuerst benötige ich einen Verweis auf die Achsenbox. Dazu verwende ich XPath, um den Knoten „Fit Group Outline“ zu finden. Anschließend suche ich nach allen sichtbaren Achsenboxen.
Ich sehe, dass ich sechs verschiedene Achsenfelder habe. Es gibt drei Diagramme, jeweils mit einer X- und einer Y-Achse, also insgesamt sechs. Ich werde eine for-Schleife verwenden, um alle diese Werte zu durchlaufen. Nur für die Y-Achse werde ich den Minimalwert und den Maximalwert festlegen und eine Referenzlinie hinzufügen. Nun habe ich für jedes meiner drei Diagramme eine Referenzlinie hinzugefügt und den Minimal- und Maximalwert auf denselben Wert gesetzt.
Im nächsten Beispiel möchte ich den Gesamtbericht zur Sigma-Fähigkeitsübersicht verkürzen. Ich benötige nur die Daten bis einschließlich PP. CPM, erwartete und beobachtete Werte werden nicht angezeigt. Dies lässt sich per XPath realisieren. Ich sende einen Befehl zum Erstellen eines Rahmens an meine Berichtsebene und suche nach dem Gesamtbericht zur Sigma-Fähigkeitsübersicht.
Nachdem ich einen Verweis auf diese Berichtsebene habe, möchte ich mithilfe von XPath Überschriften auswählen, die mit „Erwarteter“, „Beobachteter“ oder „Gleich CPM“ beginnen. Anschließend führe ich den Befehl zum Ausblenden der Sichtbarkeit aus. Nun stelle ich fest, dass diese Werte aus meinem Bericht verschwunden sind. Es ist wichtig, keine Elemente aus Ihrem Bericht zu löschen. Das Löschen von Elementen kann unerwartete Folgen haben. Wir empfehlen Ihnen, Elemente in Ihrem Bericht auszublenden oder zu reduzieren, anstatt sie zu löschen.
Ich habe noch ein letztes Beispiel. In dieser Fallstudie haben wir die Plattform „Limits verwalten“ in einem neuen Fenster geöffnet und möchten die Hilfeschaltfläche entfernen. JSL-Skripte erstellt man häufig, um die Ergebnisse mit anderen zu teilen. Daher muss sichergestellt sein, dass sich das Skript auf dem eigenen Computer genauso verhält wie auf dem eines anderen.
Windows und Macintosh haben oft Schaltflächen an unterschiedlichen Stellen. Suchen Sie niemals nach einer Schaltfläche anhand ihrer Position im Bericht. Suchen Sie stattdessen nach dem Namen der Schaltfläche. Ich werde hier nicht auf den Code für die Fensterbehandlung eingehen, sondern möchte Sie auf diese XPath-Anweisung aufmerksam machen. Ich suche nach der Schaltfläche „Hilfe“ und blende sie anschließend aus. Sie werden sehen, dass die Hilfeschaltfläche nicht mehr angezeigt wird. Ich habe sie gerade angeklickt. Ich möchte sie nicht aus dem Bericht löschen, um unerwartete Folgen zu vermeiden.
Ich habe Ihnen drei verschiedene Methoden gezeigt, um Werte aus dem Bericht zu extrahieren. Die absolute Indexierung ist nicht empfehlenswert, da sie nicht robust gegenüber Änderungen ist. Die XPath-Methode und die relative Indexierung sind hingegen recht robust. Wenn Sie nur einen einzelnen Wert aus dem Bericht benötigen, ist die relative Indexierung wahrscheinlich der kürzere und einfachere Code. Der XPath-Code ist nützlich, wenn Sie mehrere Informationen gleichzeitig abrufen oder komplexe Operationen mit Platzhaltern durchführen möchten.
Ich hoffe, diese Informationen waren hilfreich für Sie und Sie sind nun bereit, wieder Drehbücher zu schreiben.