プロジェクトレイアウトのスクリプト作成5 つのウィンドウを生成するスクリプトがあり、そのスクリプトを使用して出力をプロジェクト形式に整理し、レイアウトを調整したいと考えています。
右側のウィンドウリストが欲しいです。 左側に 2 行が必要です。
上の行、2 つのグラフを並べて表示したいと思います。
一番下の行では、タブに 3 つのテーブルを表示したいと考えています。
以下のスクリプトを思いつきましたが、希望どおりの動作ができません。現在、5 つすべてが 5 つの異なるタブに 1 行に表示され、右側にウィンドウのリストが表示されます。
誰かが私に正しい方向を教えてくれませんか?
Project = new project();
Move to Project( destination( Project ), windows( {"Table1" ,"Table2" , "Table3", "Graph1", "Graph2"} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>Re: プロジェクト レイアウトのスクリプト作成プロジェクトを作成し、データ テーブルを作成し、そのテーブルをプロジェクト コンテンツに保存する最も単純な例:
new Project(
Run Script(
dt = New Table( "My Table",
Add Rows( 3 ),
New Column( "Column 1",
Set Values( [1, 2, 3] )
)
);
dt << Save As("$PROJECT/my table.jmp");
);
);
パス変数 $PROJECT は、現在のプロジェクトのプロジェクト コンテンツにマップされます (したがって、プロジェクト内でのみ使用できます)。 プロジェクトの外でテーブルを作成してからそれを移動することはまったく問題ありませんが、外部の理由でそれが必要ない場合は、最初にプロジェクト内ですべてを直接作成する方が一般的により効率的です。
Re: プロジェクト レイアウトのスクリプト作成スクリプトの本体は 3 つのデータ ファイルを生成し、それらをリンクします。現在の書き込み方法では、ファイルはCドライブのTempフォルダーに保存され、その後プロジェクトに移動されます。コンテンツ セクションを追加し、スクリプトとともにこれら 3 つのファイルをそこに追加したいと思います。その後、プロジェクト内のファイルを開いて工程能力グラフを作成するために行われた分析を更新すると思います。
Re: プロジェクト レイアウトのスクリプト作成プロジェクトのレイアウト コードは(多かれ少なかれ)以前と同じである必要があります。 JMP 16 の違いは、コンテンツを保存するときに、必要に応じてプロジェクト ファイル内に保存できることです。 必要に応じて、これをスクリプトから自動的に実行できます。ただし、特定の方法をお勧めするには、プロジェクトについてもう少し詳しく知る必要があります。
Re: プロジェクト レイアウトのスクリプト作成JMP 16 では、保存および転送のためにファイルをプロジェクト ファイルに組み込むことにより、プロジェクト プラットフォームが改善されています。 これは素晴らしい改善です。 レポートからプロジェクト ファイルにファイルを移動する JMP 15 スクリプトは 16 でも機能しますが、JMP16 の新機能を使用できるように更新したいと考えています。 この場合、新しいスクリプト構造がどのようになるかはわかりません。 助言がありますか? 添付されているのは、私のスクリプトがどのようになっているかです(すべてのファイルは私のPCに基づいており、データのラングリングはスクリプトの前半部分で行われたため、実行できません)。
Re: プロジェクト レイアウトのスクリプト作成通常の TabBox API を使用して、特定の TabBox が特定の現在のタブを持つように設定できます。 (インタラクティブな JMP Scripting Index は、これらを学ぶための優れたリソースです)。 これまで取り組んできた例でそれを行う 1 つの方法を次に示します。
Project = new project();
Move to Project( destination( Project ), windows( {table1, table2, table3} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
タブ ボックスを作成するときに変数に保存し、後でその変数を使用して現在のタブを設定します。
Re: プロジェクト レイアウトのスクリプト作成こんにちは、アーロン
ようやく動作するようになりました、本当にありがとう!
テーブルとグラフを作成するときにウィンドウ ID を設定しようとしていましたが、それが機能していなかったと思います。 したがって、現在はレイアウトが正しく行われています。
別の関連する質問: 特定のタブを表示するにはどうすればよいですか? 注文する方法はありますか? デフォルトでは常に同じテーブルが表示されますが、それは表示したいテーブルではありません。
Re: プロジェクト レイアウトのスクリプト作成申し訳ありませんが、まだ機能していません。以下は、(主に) スクリプトとサンプル データ テーブルを使用した最初の方法の例です。
table1 = Open("$SAMPLE_DATA/Big Class.jmp");
table1 << Set Window ID("Table1");
graph1 = table1 << Run Script("Bivariate");
graph1 << Set Window ID("graph1");
table2 = Open("$SAMPLE_DATA/Iris.jmp");
table2 << Set Window ID("Table2");
graph2 = table2 << Run Script("Graph Builder Contour Plot");
graph2 << Set Window ID("graph2");
table3 = Open("$SAMPLE_DATA/Baseball.jmp");
table3 << Set Window ID("Table3");
Project = new project();
Move to Project( destination( Project ), windows( {table1, table2, table3} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
ID を設定せずにそれを行う 1 つの方法は次のとおりです。
table1 = Open("$SAMPLE_DATA/Big Class.jmp");
graph1 = table1 << Run Script("Bivariate");
table2 = Open("$SAMPLE_DATA/Iris.jmp");
graph2 = table2 << Run Script("Graph Builder Contour Plot");
table3 = Open("$SAMPLE_DATA/Baseball.jmp");
Project = new project();
Move to Project( destination( Project ), windows( {table1, table2, table3} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
最後に、最初からプロジェクト内のウィンドウを開いて、Move to Project() を回避するバージョンを次に示します。
Project = new project();
Project << Run Script(
table1 = Open("$SAMPLE_DATA/Big Class.jmp");
table1 << Set Window ID("Table1");
graph1 = table1 << Run Script("Bivariate");
graph1 << Set Window ID("graph1");
table2 = Open("$SAMPLE_DATA/Iris.jmp");
table2 << Set Window ID("Table2");
graph2 = table2 << Run Script("Graph Builder Contour Plot");
graph2 << Set Window ID("graph2");
table3 = Open("$SAMPLE_DATA/Baseball.jmp");
table3 << Set Window ID("Table3");
);
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
うまくいけば、そのうちの 1 つをスクリプトで動作するように変更できます。
Re: プロジェクト レイアウトのスクリプト作成こんにちは、アーロン
ご提案いただいた内容を試してみましたが、やはりだめで、同じエラーメッセージが表示されました。
私が理解できないのは、新しいウィンドウを作成し、Set Window ID を使用してそれに ID を与えたのですが、その ID が Tab Box() によって認識されないようです。
Re: プロジェクト レイアウトのスクリプト作成私のせいだと思います。 Get Window() は、どこを探すかを知る必要があります (プロジェクト内のウィンドウは、プロジェクト外のウィンドウと同じタイトルを持つことができるため)。 だから代わりに
Get Window("Table1")
(プロジェクトにない「Table1」というウィンドウを探しています)、次を使用する必要があります。
Get Window(Project(Project), "Table1")
ここで、内側の「Project」は、スクリプトの先頭でプロジェクト変数として選択した名前です。
Project = new project();
まとめると、次のようなものが機能するはずです。
Tab Page Box(
Window ID( Get Window(Project(project), "Table1") << Get Window ID())
)
はい、これは将来の JMP リリースで容易になることを期待していることは間違いありません。 
Re: プロジェクト レイアウトのスクリプト作成ご協力いただきありがとうございます。 まだ問題があります。申し訳ありませんが、私は JSL の初心者です...
2 番目のオプションを使用すると、スクリプト可能オブジェクトに関するエラー メッセージが表示されます。
Send は、 'Send' のアクセスまたは評価でスクリプト可能オブジェクトを期待し、 Get Window( "Table1" ) << /*###*/
ウィンドウ ID を取得() /*###*/
これらのオブジェクトをスクリプト可能にする必要があると思いますが、その方法がわかりません。
うまくいくと思った最初のオプションも試しました。 レポートごとに新しいウィンドウを作成し、set window ID コマンドを使用して ID を与えることができましたが、まだ機能しません。
Re: プロジェクト レイアウトのスクリプト作成おっしゃる通りです。GUID は毎回異なります。 単にウィンドウ タイトルを使用しなかった理由については詳しく説明するつもりはありませんが、ID には (複雑ではありますが) 十分な理由があります。 このようにプロジェクトを手動でスクリプト化する場合、最善の方法は、スクリプトの前半で次のコマンドを使用してウィンドウ ID を設定することです。
mywindow << Set Window ID("window1");
または、レイアウト内で Get Window ID() を直接使用します。
Tab Page Box(
Title( "Table1" ),
Window ID( Get Window("Table1") << Get Window ID())
)
Title() は、指定された ID のウィンドウが見つからない場合にフレンドリーなメッセージを出力するためと、もう少し人間が読みやすいようにするためにのみ使用されることに注意してください。 機能的には何もしないので、作業が楽になる場合は無視しても問題ありません。
Re: プロジェクト レイアウトのスクリプト作成こんにちは、アーロン
ありがとうございます。 スクリプトのレイアウトの取得方法がわからなかったので、とても助かりました。
それで、これを実行しましたが、私が抱えている問題は、ログ内の各タブが次のように見えることです。
Tab Page Box(
Title( "Table1" ),
Window ID( "e516a5e8-d5c2-954e-90a6-ba6b719dae98" )
ウィンドウ ID ビットをすべて削除しましたが、それでも機能しないため、ウィンドウ ID ビットが必要だと思います。 ただし、これらのウィンドウ ID 番号はランダムな文字と数字の組み合わせのようで、スクリプトを実行するたびに異なるため、事前に指定することはできません。 開いているウィンドウのウィンドウ ID を見つける方法はありますか? これを行う方法を探しましたが、方法がわかりません。
Re: プロジェクト レイアウトのスクリプト作成JSL でプロジェクト レイアウトを記述する最良の方法の 1 つは、プロジェクトを開き、ドラッグ アンド ドロップ インターフェイスを使用して必要な配置を設定し、JSL を使用してレイアウトを保存することです。 これを行うには、新しい JSL スクリプトを (プロジェクトの外部で) 作成し、実行します。
Get Project("Untitled") << Get Layout();
または
Get Project(1) << Get Layout();
レイアウトを取得したいプロジェクトのタイトルまたはインデックスを使用します。 これにより、参照されたプロジェクトのレイアウトがログにダンプされ、プロジェクト作成スクリプトで動作するように調整できます。
(プロジェクト内から同じことを実行でき、[this project()] ショートカットを使用してコマンドを実行することもできます。ただし、結果として得られるレイアウトには、それを実行するために開いたスクリプト ウィンドウが含まれるため、多くの場合、その方が簡単です)外部から行うため)。