JSL - 開いているグラフの X 値と Y 値を取得するこんにちは
開いているデータ テーブルをコンボ ボックスで選択できるスクリプトがあります。

その下にグラフがあるデータ テーブルがある場合
このグラフを選択するにはどうすればよいですか?
その理由は、X 列と Y 列の名前を取得したいからです
たとえば、上の図でマークされている最初のグラフでは、test と test2 を取得したい

このグラフはすでに JMP で開かれており、(グラフを作成するスクリプトを編集するという点では) それらを制御することはできません。
スクリプティングRe: JSL - 開いているグラフの X 値と Y 値を取得するプラットフォーム (この場合はグラフ ビルダー) によって記述された JSL を使用して要素を検索するアプローチを次に示します。以下を説明するために含めます。
- 式 ( )
- 名前 expr ( )
- 引数 ( )
- 頭 ( )
- << スクリプト可能なオブジェクトを取得します (これは、スクリプトを取得するグラフ ビルダー オブジェクトを返します)
これらをまだ使用したことがない場合は、スクリプト ガイドを参照してください。 それらは強力ですが、ある程度の練習が必要です。
私は条件文を入れていないので (あなたはそれをしたいと思うでしょう... ウィンドウ名などをチェックしてください)、以下のようにスクリプトが動作することを確認してください。
1) 現在のレポートとグラフを閉じます。
2) グラフ ビルダー グラフを作成します。
3) スクリプト ウィンドウで以下のスクリプトを実行します。 (これを外部ループでラップして、複数のグラフ ウィンドウを循環させることもできます。 繰り返しますが、これは全体的なアイデアを説明するためのスケルトン スクリプトにすぎません)。
乾杯、
ブレイディ
</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 );
Re: JSL - 開いているグラフの X 値と Y 値を取得する助けてくれてありがとう
XY 値 (赤でマークされているもの) を取得したいのですが、その値にアクセスする方法がわかりません。
私にできることは、タイトル (黄色でマークされているもの) を取得することだけです。
「get Text」の代わりに「get XML」を使用すると名前も表示されることがわかりましたが、そこには大量のデータがあり、もっと簡単な方法があることを願っています

Re: JSL - 開いているグラフの X 値と Y 値を取得する書きたいコードを実行する前に JMP セッションを制御できなかった場合は、次のようなアプローチを試すことができます。
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);
);
さまざまなコマンドがどのように機能するかを確認するには、[ヘルプ] > [スクリプト インデックス] を使用します。
子レポートのリストを取得したら、それぞれを調べて必要なものを引き出すことができます。 ただし、レポート ツリーは複雑になる可能性があるため、十分に堅牢にするためには多少の作業が必要になる場合があることに注意してください。