こんにちは、みんな、
分析が完了した後、レポート ウィンドウの画像を保存し、ユーザーが必要に応じて画像を開くスクリプトをデータ テーブルに保存したいという、作業中のスクリプトを更新しています。それ。 分析ごとに新しいレポート画像が生成されます。ファイル名を更新したデータ テーブル参照にスクリプトを保存する必要があります (すべて同じディレクトリにあります)。
補足: レポートの作成時に参照される一時データ テーブルがいくつかあるため、レポートを画像として保存する必要がありますが、それらのデータ テーブルはデータ テーブル スクリプトには保存しますが、保存したくありません。誰かがそれに対する解決策を持っていれば素晴らしいでしょう。
とにかく、私が苦労しているのは、新しいスクリプトがデータテーブルに保存されるときに、必要な文字ではなく、メインスクリプトに変数が書き込まれることです。 それを取得する方法として Eval Insert() と Eval(Substitute(Expr())) を試しましたが、何も機能しません。
以下は、分析からのそのような出力の 1 つの例です。

分析では、右下の GB イメージを構築するために別のデータ テーブルが実際に作成されます。このデータ テーブルは次のとおりです。

ただし、分析が終了するか、ユーザーが別の列で分析を実行すると、このデータ テーブルは削除され、参照できなくなります。<<すべてのオブジェクトをデータに保存するスクリプトを使用してみました。 Table コマンドですが、これにはグラフ ビルダーを生成するために上記のデータ テーブルへの参照が必要ですが、データ テーブルは削除されました。
代わりに、ウィンドウを png として保存する必要があります。これは問題ありません。上の最初の画像のように見えるはずですが、png として保存されます。 これを実行しているスクリプト内のコードの 1 つの反復は次のとおりです。
Button Box( "Save Results to DT",
path = dt << Get Path; //gets the dt's path
l = Length( path ) - Length( dt << GetName ) - 4; // takes off dt name and .jmp extension
dir = Left( path, l ); //actual path where the PNG file is supposed to be saved
If( N Items( Icols ) == 0 & N Items( Xcols ) == 0,
pic_name = "Self_Corr_" || ycols[1] || ".png"; //name of the picture
nwin[Outline Box( 1 )] << Save Picture( dir || pic_name, "png" ); //saves the report window as a PNG to the directory<BR /> full_name=dir||pic_name;
dt << New Script( "Self Corr of " || ycols[1], Open( full_name ) ); // the new script is supposed to substitute the actual dir name and pic_name, not the variables.
);
)
次のようなデータ テーブルへのスクリプトを作成します。

ただし、スクリプトは次のようにする必要があります。

メインスクリプトに何をさせようとしているのかを示すために、スクリプト内にあるべきものをコピー/ペーストした場所。 これは実行可能なはずですが、私が行った試みはすべて機能しませんでした。
前述したように、レポートを PNG として保存しても問題なく、ユーザーは JMP でレポートを PNG として開くだけですが、可能であれば、一時データ テーブルを New Script() に保存しておき、ユーザーがスクリプトをクリックすると、完全なインタラクティブ機能に必要な一時データ テーブルが生成されますが、それはより困難になると思われます。
ご意見やご提案をいただきありがとうございます。
DS
必要に応じて、テーブル作成をテーブル スクリプトとして保存できますが、これは非常に大きくなり、多くのスペースを占有する可能性があります。 画像をテーブルに保存することもできます。 以下に 3 つの異なるオプションを示します。テーブル内でスクリプトがどのように表示されるかを忘れずに確認してください。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Saving table creation
dt_script = dt << Get Script;
Eval(EvalExpr(
dt << New Script("Create Table", Expr(Name Expr(dt_script)));
));
// Saving image
img = Open("$SAMPLE_IMAGES/windmap.png", "png");
Eval(EvalExpr(
dt << New Script("Open Image",
New Window("Image",
Picture Box(Expr(img));
)
)
));
// Saving filepath which will open the image
file_path = "$SAMPLE_IMAGES/windmap.png";
Eval(EvalExpr(
dt << New Script("Open File from Path",
Open(Expr(file_path))
)
));
ところで、これに JMP プロジェクトを使用することを検討しましたか?
私は、解決策として JMP プロジェクトを検討するという Jarmo の提案に賛成します。
こんにちは@jthiそして@txnelson 、
素早いフィードバックとアイデアをありがとうございます。 スクリプトをデータ テーブルに保存するためのさまざまなオプションに感謝します。 一時データ テーブルを保存し、新しいスクリプトでそのスクリプトを呼び出す必要があることが複雑であることが判明したため、最終的にイメージを使用することになりました。
このためにプロジェクトを検討しましたが、ユーザーがこれを操作する方法は、プロジェクト形式ではそれほど役に立たないと思います。 私の組織でプロジェクトを使用しているのはおそらく私だけだと思います。 それが変わった場合は、コードを更新することを必ず検討します。
すべてのご協力に改めて感謝いたします!、
DS