JSL - Holen Sie sich offene Diagramme X- und Y-WerteHallo
Ich habe ein Skript, mit dem ich in einem Kombinationsfeld alle geöffneten Datentabellen auswählen kann

Wenn ich eine Datentabelle habe, die Diagramme enthält

Wie kann ich diese Grafiken auswählen?
Der Grund ist, dass ich ihre X- und Y-Spaltennamen erhalten möchte
Zum Beispiel möchte ich in der ersten Grafik, die im obigen Bild markiert ist, test und test2 erhalten

Diese Grafiken sind bereits in JMP geöffnet und ich habe keine Kontrolle über sie (in Bezug auf die Bearbeitung des Skripts, mit dem sie erstellt werden).
SkriptingBetreff: JSL - Holen Sie sich offene Diagramme X- und Y-WerteDa Sie vor dem Ausführen des zu schreibenden Codes keine Kontrolle über die JMP-Sitzung hatten, können Sie folgende Vorgehensweise ausprobieren:
NamesDefaultToHere(1);
tableOfInterest = "Big Class";
allWindows = GetWindowList();
tableWindows = {};
for (w = 1, w <= NItems(allWindows), w++,
winTitle = allWindows[w] << GetWindowTitle;
if (StartsWith(winTitle,tableOfInterest) & (allWindows[w] << WindowClassName) == "Report", InsertInto(tableWindows, allWindows[w]));
);
for (w = 1, w <= NItems(tableWindows), w++,
Print(tableWindows[w] << GetWindowTitle);
);
Verwenden Sie 'Hilfe> Skriptindex', um zu sehen, wie die verschiedenen Befehle funktionieren.
Sobald Sie die Liste der untergeordneten Berichte haben, können Sie jeden überprüfen, um herauszufinden, was Sie wollen. Bedenken Sie jedoch, dass die Berichtsbäume komplex sein können. Daher ist möglicherweise einige Arbeit erforderlich, um sie ausreichend robust zu machen.
Betreff: JSL - Holen Sie sich offene Diagramme X- und Y-WerteDanke für die Hilfe
Ich möchte jetzt die XY-Werte abrufen (was rot markiert ist), bin mir aber nicht sicher, wie ich auf diesen Wert zugreifen soll
Alles was ich tun kann ist den Titel zu bekommen (was gelb markiert ist).
Ich fand, dass mit "get XML" anstelle von "get Text" mir auch die Namen gegeben werden, aber es gibt VIELE Daten dort und ich hoffe, es gibt einen einfacheren Weg

Betreff: JSL - Holen Sie sich offene Diagramme X- und Y-WerteHier ist ein Ansatz, der die von der Plattform (in diesem Fall Graph Builder) geschriebene JSL verwendet, um die Elemente zu finden. Ich füge sie hinzu, um Folgendes zu veranschaulichen:
- expr ()
- Name expr ()
- arg ()
- Kopf ( )
- << Skriptfähiges Objekt abrufen (dies gibt das Graph Builder-Objekt zurück, von dem Sie das Skript erhalten)
Sie sollten diese im Skripthandbuch nachlesen, wenn Sie sie zuvor noch nicht verwendet haben. Sie sind mächtig, erfordern aber etwas Übung.
Da ich keine Bedingungen eingegeben habe (das möchten Sie tun ... Fensternamen überprüfen usw.), gehen Sie wie folgt vor, um sicherzustellen, dass das Skript wie unten beschrieben funktioniert.
1) Schließen Sie aktuelle Berichte und Grafiken.
2) Erstellen Sie ein Graph Builder-Diagramm.
3) Führen Sie das folgende Skript in einem Skriptfenster aus. (Sie können dies auch in eine externe Schleife einschließen, um durch mehr als ein Diagrammfenster zu blättern. Auch dies ist nur ein Skelett-Skript, das die Gesamtidee veranschaulichen soll.)
Prost,
Brady
</CODE></P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
winList = Get Window List( Type( "reports" ) );
obj = winlist[1][Outline Box( 1 )] << Get Scriptable Object;
script = obj << get script;
i = 1;
//move through the script's arguments until you get to the Variables ( ) argument.
While( Head( exp = Arg( Name Expr( script ), i ) ) != Expr( Variables ), i++ );
xList = ylist = {};
nexp = name expr ( exp ); //optional; this allows us to type nexp instead of name expr ( exp ) in the code below.
//cycle through the arguments in the Variables ( ) section. If X ( ) or Y ( ) is
//encountered, insert into the appropriate list.
For( i = 1, i <= N Arg( nexp ), i++,
If( Head( var = Arg( nexp, i ) ) == Expr( X ), Insert Into( xList, Arg( Name Expr( var ), 1 ) ));
If( Head( var = Arg( nexp, i ) ) == Expr( Y ), Insert Into( yList, Arg( Name Expr( var ), 1 ) ));
);
Show( xList, yList );