クエリ ビルダー スクリプト (クエリ後スクリプトを含む) を別のスクリプトに統合するこんにちは、
私はクエリ ビルダーとグラフ ビルダーを使用して、サーバーから常にデータを取得し、プロットし、結果を保存するスクリプトをまとめました (JMP 13)。 最近、私はこれらのスクリプトのいくつかを、Include() を使用して一度にすべてを実行する 1 つのスクリプトに結び付けようとしましたが、これは正常に機能します。 私が今直面している問題は、すべてのディレクトリがハードコードされていることです.Get Default Directory()のようなものを使用して、この幅広いスクリプトのコレクションを他のコンピュータに移動できるようにします.
残念ながら、次の問題に遭遇しました。
-Get Default Directory() が「Post-Query Script」内で使用されると、このスクリプトが保存されている場所に関係なく、「/」が返されます。
-ポストクエリ スクリプトで作成されたデータ テーブル/グラフを変数に保存する場合、それらの変数は外部には存在しない (またはアクセスできない) ように見えます。
クエリ後のスクリプト。
-クエリ後スクリプトの外部で作成された変数は、内部では使用できません。
// Main File
directory = Get Default Directory();
fileNames = Files In Directory( directory );
For( iFile = 1, iFile <= N Items( fileNames ), iFile++,
filename = fileNames[iFile];
If( Ends With( filename, ".jsl" ),
Include( directory || script_folder || filename, invisible );
);
);
// Example Post-Query File section
gb = Graph Builder(
// graph details
);
// directory = Get Default Directory(); // Another method attempted
myPath = directory || "Report\";
myName = "Example";
fileName = myPath || myName || ".pptx";
myTemplate = directory || "Template.pptx";
Report( gb ) << save presentation( fileName, Template( myTemplate ), Outline Titles( "Hide" ) );
gb << close window;
Close All( data tables );
何かご意見は?
スクリプティングRe: クエリ ビルダー スクリプト (クエリ後スクリプトを含む) を別のスクリプトに統合するアプリケーション用のアドインの作成を検討する必要があります。これにより、ファイルがどこにあるかという問題が解決されます。アドインは、エイリアスをファイルの場所に関連付けます。アドインの「エイリアス」が com.company.dept.mygreatapp の場合、次のようなファイルを参照できます。
include("$ADDIN_HOME(com.company.dept.mygreatapp)\DoSomethingGreat.jsl");Re: クエリ ビルダー スクリプト (クエリ後スクリプトを含む) を別のスクリプトに統合するあなたの投稿には、対処すべきいくつかの項目が含まれています:
- Windows で作業している場合、Get Default Directory() は最後に使用されたディレクトリを取得しません。 プログラムでプロンプトが表示された場合は、Set Default Directory を使用すると、Get Default Directory() がこの値を返します。
- 参照/変数を維持するために、名前空間またはグローバル連想配列を使用することをお勧めします。プログラムの複数のインスタンスが同時に実行されている場合は、匿名の名前空間にして、インスタンスごとに一意になるようにします。連想配列の場合、::varRef_aa = Associative Array(); ::varRef_aa << デフォルト値を設定 (-9999);次に、スクリプトで ::varRef_aa[a] = 1; を指定します。 NameSpace を使用する利点は、意図しない Clear Globals() によって名前空間もその内容も削除されないことです。
- すべてのオブジェクトが別のページに保存され、スケーリングの制御がほとんどないため、私はプレゼンテーションの保存のファンではありません。 と呼ばれる無料の外部プログラムを使用しますP3ICLI . そのため、通常、タスクまたはレポートに固有の出力ディレクトリを作成し、必要なビューをそのディレクトリの画像に保存します。 必要な出力をスライド 1、2 などとして保存することで、私は彼の方法を取り上げています。できるその保存されたディレクトリの Directory() にファイルのリストを作成し、プレゼンテーションの保存を使用してそれらを PPTX に追加する for ループで、プレゼンテーションの保存を使用します。 また、画像を保存することで、複数のオブジェクトを表示して保存することができ、[プレゼンテーションの保存] を使用すると、すべての項目が同じページに表示されます。PPTX レポートをある程度制御できます。
最後に、はい、Open Database(connect_str, ...) と Create Database Connection(connect_str) が末尾のスラッシュを必要とする同じ接続文字列を使用できるのは面倒ですが、 New SQL Query() は末尾のスラッシュを削除し、 ODBC のプレフィックス: データベースに接続する場合。
//--- Method 3: New SQL Query platform script -----------------------------------
//remove the trailing slash on importpath
importnoslash = substr(connect_str, 1, length(connect_str)-1 );
nconnect = "ODBC:" || importnoslash
ほんの少しのアイデア。
Re: クエリ ビルダー スクリプト (クエリ後スクリプトを含む) を別のスクリプトに統合する別の例を追加します。
dir = Get Default Directory();
query = Open( dir || "query.jmpquery", Private );
query << Run(
On Run Complete(
queryResult << // some function
a = 1
)
);
Write( a ); // variable is unknown
Run() 内での変数の作成は、Run() の外ではアクセスできません