公開日: 09/19/2023

テーブルスクリプト

JSLを使って、データテーブルに新しいテーブルスクリプトを追加したり、テーブルスクリプトの実行、取得ができます。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Script( "二変量の例", Bivariate( Y( :"体重(ポンド)"n), X( :"身長(インチ)"n ) ) );
dt << Get Table Variable( "二変量の例" );

// Bivariate( Y( :\!"体重(ポンド)\!"n ), X( :\!"身長(インチ)\!"n ) )を戻す

dt << Run Script( "二変量の例" )

次の例は、前述のスクリプトで作成されたテーブルスクリプトの内容を置き換えます。

dt << Set Property( "二変量の例", Bivariate( Y( :"体重(ポンド)"n ), X( :"身長(インチ)"n ), Fit Line ) ); // 「二変量の例」スクリプトにFit Lineを含める

同僚に電子メールで送ったり、スクリプトの一部として使ったりするために、データテーブルをテキスト形式で表したものが必要な場合があります。Get Scriptを使うと、データテーブルの情報を再構成するスクリプトを取得できます。次の例は、「Big Class.jmp」を開き、データ、テーブル変数、および列プロパティをログに出力します。その出力の一部をここに示します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Get Script;

New Table( "Big Class",

Add Rows( 40 ),

New Script(

\["en" => "Distribution",...],

Distribution(

Continuous Distribution( Column( :"体重(ボンド)"n ) )

Nominal Distribution( Column( :年齢 ) )

) ),

Delete Scriptsは1つ以上のスクリプトを削除します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Delete Scripts( "一変量の分布" )

14より前のバージョンのJMPでは、Delete Propertyを使用してスクリプトを削除します。

メモ: テーブルスクリプトでは、Names Default to Hereはデフォルトで偽となっています。テーブルスクリプトでNames Default to Here(1)が指定されている場合、この設定は、スクリプトを実行している間のみ維持され、スクリプトの実行が終了した時点で、実行前の設定にリセットされます。

スクリプトを含むデータテーブルをダウンロードした場合のオプション

ダウンロードしたデータテーブルにスクリプトが含まれる場合、テーブルを開くか確認するかを選択するウィンドウが表示されます。この機能は、予期しない動作をする可能性のあるスクリプトが、お使いのコンピューター上で実行されることを防ぐのに役立ちます。Open()関数で、この動作を制御できます。

データテーブルを開いて、スクリプトの実行を許可する場合は次のように指定します。

Open( "$DOWNLOADS/file.jmp", Quarantine Action( "Allow Scripts" ) );

データステーブルを開いて、スクリプトをブロックする場合次のように指定します。

Open( "$DOWNLOADS/file.jmp", Quarantine Action( "Block Scripts" ) );

デフォルトの確認ウィンドウを表示して、スクリプトを実行するか確認するかをの選択を促す場合は次のように指定します。

Open( "$DOWNLOADS/file.jmp", Quarantine Action( "Show Dialog" ) )

Try()式を有効にして、エラーを見つけるには次のように指定します。

Try( Open( "$DOWNLOADS/file.jmp", Quarantine Action( "Do Not Open" ) ),
Show( exception_msg ) );

[確認する]を選択すると、スクリプトは無効になります。

メモ:

Windowsのインターネットオプションの信頼済みサイトの一覧にデータテーブルをダウンロードしたドメインがある場合、「Block Scripts」オプションや「Show Dialog」オプションは正常に機能しません。

検査されたデータテーブルに対して[開く]を選択した後は、そのデータテーブルは次回JMPを起動するまで信頼されます。

データテーブルを開いたときにスクリプトを実行する

データテーブルを開いたとき、On Openあるいは OnOpenという名前の付いたテーブルスクリプトを開くよう促すことができます。その際の選択は記憶され、現在のJMPセッションでそのデータテーブルを開く度に同じ選択が適用されます。

On Openスクリプトを作成するには、次のアクションのいずれかを実行します。

[スクリプトの保存]>[データテーブルへ]オプションを使用してスクリプトを作成した後、スクリプト名をダブルクリックし、名前をOn Openに変更します。

New Scriptメッセージを使用してスクリプトを保存します。

次の例では、「Big Class.jmp」にOnOpenスクリプトを作成します。

dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Script(
	"OnOpen", // スクリプトを作成する
	sortedDt = Data Table( "Big Class" ) <<Sort( By( :名前 ), Output Table Name( "並べ替えたBig Class" ) ) // データを並べ替え、新しいデータテーブルを出力する
);

JMPの[OnOpenスクリプトの評価]という環境設定では、いつスクリプトを実行するかを定義します。デフォルトでは、スクリプトを実行するか確認するメッセージが表示されます。この環境設定で、On Openスクリプトを常に実行するか、まったく実行しないように指定することもできます。

Preference( Evaluate OnOpen Scripts( "always" ) );
Preference( Evaluate OnOpen Scripts( "never" ) );
Preference( Evaluate OnOpen Scripts( "prompt" ) ); // デフォルト設定

他のプログラムを実行するOn Openスクリプトは、環境設定に関わらず実行されません。予防措置として、他者から受け取ったデータテーブルを開く際はスクリプトが自動実行されないよう設定することをお勧めします。

メモ:

ダウンロードされたデータテーブルにあるOnOpenスクリプトが自動的に実行されるようにするには、Open()式の中にQuarantine Action( "Allow Scripts" )を指定しなければなりません。スクリプトを含むデータテーブルをダウンロードした場合のオプションを参照してください。

スクリプトで新しいデータテーブルを作成し、On Open()関数を含める場合は、データテーブルの作成後にOn Open()が呼び出されます。

OnOpenスクリプトにある操作のうち、現在のデータテーブルを保存するなどいくつかのものは、安全でないとみなされます。OnOpenスクリプトを実行してテーブルを開くのではなく、外部のスクリプトを実行してそのテーブルを保存してください。

テーブルスクリプトのグループを扱う

関連のあるテーブルスクリプトをグループ化して、データテーブルパネルに表示されるスクリプトのリストの領域を節約することができます。Group Scriptsを使い、グループ名と、そのグループに含めるスクリプト名を指定します。

dt = Open( "$SAMPLE_DATA/San Francisco Crime.jmp" );
dt << Group Scripts(
	"地図",
	{"バブルプロット ストリートマップ", "グラフビルダー ストリートマップ: 交通事故",
	"グラフビルダー ストリートマップ(拡大)"}
);
dt << Group Scripts(
	"表の作成",
	{"表の作成: 種類、内容", "表の作成: 種類の要約と割合",
	"表の作成: 解決、種類", "表の作成: 解決、内容"}
);

スクリプトグループの移動

Move Script Groupto firstto lastafter(script)after(group)などの引数を用いて、テーブルスクリプトのグループを並ベ替えます。

dt << Move Script Group( "表の作成", after( "地図" ) );
dt << Move Script Group( "表の作成", to last);

グループとグループ名の取得

テーブルスクリプトのグループのリストを取得するには、Get Script Groupを使用します。これにより、グループ内のスクリプトを実行するなどの操作ができるようになります。

tb = dt << Get Script Group( "表の作成" );
dt << Run Script( tb[2] ); // 「表の作成」グループの2番目のスクリプトを実行

Get Script Groups Namesはグループ名のリストを戻します。

gn = dt << Get Script Groups Names; // returns {"地図", "表の作成"}
 
// 「地図」グループをテーブルスクリプトの末尾に移動
dt << Move Script Group(gn[1], to last);

スクリプトグループの選択

Select Script Groupは指定された名前のテーブルスクリプトのグループ、リストで指定されたグループ、またはすべてのスクリプトグループを選択します。

dt << Select Script Group; // すべてのスクリプトグループを選択
dt << Select Script Group( "表の作成" ); // 「表の作成」グループを選択
dt << Select Script Group( {"表の作成", "地図"} ); // 両方のグループを選択

スクリプトのグループ化解除

Ungroup Scriptsは指定されたテーブルスクリプトやグループをグループの外に出します。スクリプトグループの名前や、スクリプトのリストにこのメッセージを送ることができます。

dt << Ungroup Scripts( "表の作成" );
dt << Ungroup Scripts(
	{"表の作成: 種類、内容", "表の作成: 種類の要約と割合",
	"表の作成: 解決、種類", "表の作成: 解決、内容"}
);

スクリプトグループ名の変更

Rename Script Groupで現在のグループ名と新しいグループを指定することで、グループ名を変更できます。

dt << Rename Script Group( "地図", "ストリートマップ" );

スクリプトグループの削除

テーブルスクリプトのグループを削除する場合は、まずグループを取得し、それから削除します。

a = dt << Get Script Group( "ストリートマップ");
dt << Delete Scripts( a );
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).