別のスクリプトによって JSL スクリプトをデータ テーブルに読み込むこんにちは、
複数のスクリプト(XXX.jsl)があり、それぞれに多数のグラフを含む個別のレポートを生成しています。また、Excelファイルからデータを読み込み、生成されたJMPテーブルを変更して保存する2つ目のスクリプトもあります。
2 番目のスクリプトに、これらのレポート スクリプトをフォルダーから読み込み、JMP テーブルの左上のボックスで使用できるようにするセクションを含めることに興味があります。
同僚が使えるJMPスクリプトを作成したので、この方法を試しています。同僚はExcelファイルのファイルパスを変更してスクリプトを実行するだけで、JMPテーブルを取得し、現在のテーブルに基づいてレポートを実行するオプションが表示されます。
オプションがあることは確かですが、現在は、たとえば include() が失敗したか、<< データ テーブルへのスクリプトの保存に失敗しました。
自動化とスクリプトRe: 別のスクリプトによるデータテーブルへの JSL スクリプトのロードこれは、ファイルからテーブルにテキストをテーブルスクリプトとして追加する簡単な例です。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names); // demo
script_txt = Load Text File("$SAMPLE_SCRIPTS/chaosGame.jsl");
Eval(EvalExpr(
dt << New Script("S",
Expr(Parse(script_txt))
);
));
コメントを残しておきたい場合は、少し複雑になります。
編集: コメントが不要な場合は、Include を << Parse Only で使用できます。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Delete Scripts(dt << Get Table Script Names); // demo
script_expr = Include("$SAMPLE_SCRIPTS/chaosGame.jsl", << parse only);
Eval(EvalExpr(
dt << New Script("S",
Expr(Name Expr(script_expr))
);
));
Re: 別のスクリプトによるデータテーブルへの JSL スクリプトのロード早速のご返信誠にありがとうございます。
この解決策をもう少し詳しく説明していただけますか?
「Names Default To Here(1);」を使用すると、ローカル名前空間を設定できます。
次に、jmp テーブルを開いて、開いたテーブルに付属するスクリプトを削除しますか?
続いて、読み込むスクリプトを扱う部分が続きます。変数script_txtを定義し、これが指定されたディレクトリから読み込まれるテキストファイルになります。最後の5行のコードは何をするのでしょうか?少し説明していただけますか?
私は常に、コードが何をしているかを詳細に理解するようにしています。これは、実装中に単純だが致命的なエラーを回避するのに非常に役立ちます。
Re: 別のスクリプトによるデータテーブルへの JSL スクリプトのロード基本については、 JMP スクリプト ガイドを読むことをお勧めします。
- 名前のデフォルトはここ(1)です。スクリプトは常にこれで始める必要があります。 スクリプト ガイド > プログラミング方法 > 高度なスコープと名前空間。
- テーブルを開いてスクリプトを削除するのは、何が起こっているかをわかりやすくするためのデモ目的のみです。
- 最後の部分では、式の評価を使用して、スクリプトが正しい形式でテーブルに取り込まれ、簡単に実行できるようにします。 「スクリプト ガイド > プログラミング方法 > 高度な式、マクロ、およびリスト」を参照してください。
Re: 別のスクリプトによるデータテーブルへの JSL スクリプトのロード素晴らしいです!うまくいきました!そして、説明もありがとうございました。