Re: JSL スクリプトを使用した次のレベルの自動化追加@Jordan_Hillerと@ChristianBilleこのコメントに。
まとめてくださった皆さん、ありがとうございました。 「一般化」について追加の質問がありますが、それは私のスクリプト作成能力の欠如と関係があります。 通常、私のワークフローでは、「すべての列を選択」してから、要約、グループ化、欠損値の探索などの何かを行う必要があります。しかし、数千の列があり、新しいデータテーブルごとに異なる名前が付けられます。したがって、特定の列が見つからないというメッセージが表示されても、単純に 5,000 列を置き換えることはできません (数時間かかります)。 最初に列をグループ化し、そのグループに対して残りのワークフロー手順を実行できるかどうか疑問に思っています。 グループに一般的な名前を付けることができます。
別の方法としては、以下のスクリプトのように、名前のプロパティによって列を選択することもできます。 ワークフローの次のステップでこのスクリプトによって生成された SELECTED 列を機能させるスクリプトを作成する方法がある場合はどうすればよいですか? たとえば、名前に「the」が含まれるすべての列を転置したい場合、このスクリプトをワークフローに埋め込むことができますか? 各ファイルの列名を再コード化する必要を回避する方法を考えようとしていますが、それはさらに別のオプションです。
Workflow Builder は、処理する同じ形式のテーブルが数十個ある場合に最適に機能する可能性が高いことはわかっていますが、各テーブルがわずかに異なる場合に Workflow Builder を連携させることができないか考えています。
names default to here(1);
dt=current data table();
colNames = dt << get column names(string);
for each({Name}, colNames,
if(contains(Name,"nox"),
for each row(
column(name)[row()] = ???????????; // your formula here
)
);
);
Re: JSL スクリプトを使用した次のレベルの自動化あなたの質問が理解できれば、 @abmayfield 、JMP17 ワークフローが多数の列名の変更に対応できるかどうかを尋ねています。 確かにそれは可能ですが、ワークフローにカスタム JSL を挿入しないと不可能です。
良いアプローチの 1 つは、ユーザーが選択した列に対してワークフロー/スクリプトを動作させることです。前ワークフローを実行しています。
以下は、血圧サンプル データ セットを使用した例です。
Names Default To Here( 1 );
//Custom JSL: Get the user-selected columns, save them into list CNames
CNames = Current Data Table() << Get Selected Columns;
//Slightly modified workflow step: replace hard-coded columns with list CNames
Data Table( "Blood Pressure" ) << Transpose(
columns( CNames ),
By( :Dose ),
Label( :Subject ),
Output Table( "tdata" )
);
これをどのように攻撃しても、解決策にはおそらく JSL が関与するでしょう。リスト。 リストについて少し学ぶと、新しいコーディングのスーパーパワーを得ることができます。
JSL スクリプトを使用した次世代の自動化ビデオは2024年8月に更新されました。
ワークフローは、頻繁にまたは毎日使用する分析やレポートを自動化するコード不要の方法です。さらに、ワークフローを JSL スクリプトに変換して、スムーズなユーザー エクスペリエンスとより洗練されたプレゼンテーションを提供し、他のユーザーと共有するためのアドインを作成することもできます。このデモでは、ワークフロー スクリプトを理解して変更し、新しいデータや新しいユーザーに対してより柔軟にするための基本を示します。JMP ワークフローの作成に関するある程度の知識があることを前提としています。
このケース スタディでは、2015 年から 2017 年のデータを使用してワークフローを構築し、その後、それ以降の年のデータで使用できるスクリプトを作成するために使用する 3 つのソースを使用します。
添付の .zip ファイルには、育児 Excel データの 2 つのバージョンと育児分析 JMP アドインなど、練習に必要なすべてのファイルが含まれています。
方法をご覧ください:
- JSLの基本構成要素を理解する
- コメント
- データテーブル内の列の参照
- 表現とそれが参照するオブジェクト
- パス変数
- ワークフローを作成する
- ワークフロースクリプトを保存する
- 新しいデータと新しいユーザー向けにスクリプトを編集して一般化する
- テーブル名とファイルパスを変更する
- データテーブル名変数を作成する
- 必要に応じてユーザー入力メカニズムを追加します (ファイルの選択、列ダイアログなど)
- ファイルを選択
- 特定の基準に基づいてファイルを選択するための JSL を作成する
- 現在開いているデータテーブルをデフォルトにする
- 列を選択し、ダイアログから選択した列をアンロードして、後でスクリプト内で操作できるようにします。
- 列を選択するのではなく、埋め込みレポートの列スイッチャーを使用する
- オプションでスクリプトを配布用のJMPアドインとして保存する
- ファイル > 新規 > アドインを使用してアドインを作成します
- スクリプトを起動するためのメニュー項目やツールバー項目を作成します
- データファイル、PDF などを含めます。
- アドインをインストールし、*.jmpaddin ファイルをダブルクリックしてインストールできる他のユーザーと共有します。
ライブ ウェビナーで Jordan Hiller @Jordan_Hillerが回答した質問:
Q: ワークフローがプロセスで新しいテーブルを生成し、その新しいテーブルが後続のステップで呼び出される場合、新しく形成されたテーブルに「untitled 5」のような予測しにくい名前が付けられるため、問題が発生します。このステップを同様の方法で「一般化」できますか?
A: 特に、スタック、分割、転置などのテーブル メニューの機能や、スタック、分割、転置で作成した機能を使用する場合に、この問題が発生します。明示的に名前を付けないと、u=Untitled 17 または Untitled 32 という名前になります。そのため、テーブル メニューの操作中に新しい出力テーブルに名前を付けます。

Renamed split table分割テーブルの名前を変更しました
Q: JSL スクリプトがワークフロー ビルダーなしで実行された場合、それをワークフローに変換するにはどうすればよいでしょうか?
A: はい、新しいワークフロー カスタム アクションを作成し、スクリプトをコピーしてウィンドウに貼り付けたり、スクリプトを個別のカスタム アクションに分割したりすることができます。
Q: ワークフロー ビルダーで [記録] をクリックしてからスクリプトを実行できますか? WFB はスクリプトの手順をキャプチャしますか?
A: JMP 17 以前では、ステップはキャプチャされません。ただし、JMP 18 ワークフローでは、ワークフローの記録中に実行されるスクリプトはキャプチャされます。
Q: 「by」変数を使用してフィットモデルを実行する場合の提案はありますか? ワークフローは、各カテゴリの内訳を含むインスタンスを保存しますか? ただし、列に新しいカテゴリがある場合、それをより一般的にするにはどうすればよいでしょうか?
A: JSL でグループごとにスクリプトを作成するのは少々難しいです。JSL リストの処理方法を知っておく必要があります。JMP ユーザー コミュニティに相談するか、ユーザー コミュニティに質問を送信することをお勧めします。そこで役立つアドバイスが得られるでしょう。
Q: 現在実行中のスクリプトが配置されているディレクトリを参照するパス変数はありますか?
A: いいえ、スクリプトにはパス変数はありません。回避策はあります。多くの場合、JMP スクリプトでファイルを指定するときに、そのファイルが実行中の同じスクリプト内の同じパス/ディレクトリ/フォルダーにある場合は、ファイル名からパス/ディレクトリを削除して相対パスを使用できます。以下を参照してください。
リソース

自動化とスクリプトRe: JSL スクリプトを使用した次世代の自動化ワークフロー ビルダーで [記録] をクリックしてからスクリプトを実行できますか? WFB はスクリプトの手順をキャプチャしますか?
Jmp18: はい
Re: JSL スクリプトを使用した次世代の自動化@hogi さん、ありがとうございます。上記の質問に対する回答を修正しました。hogi さんが指摘したように、 JMP 18 ワークフローは、ワークフローの記録中に実行されるスクリプトを実際にキャプチャします。