別のスクリプトファイルをロードして、そのファイルでメソッドを実行するにはどうすればよいですか?
InDesign javascriptを使用していますが、同じスクリプトに複数のファイルを含める方法がわかりません。
別のスクリプトファイルをロードして、そのファイルでメソッドを実行するにはどうすればよいですか?
InDesign javascriptを使用していますが、同じスクリプトに複数のファイルを含める方法がわかりません。
3つのオプション:import、app.doScript、および$.evalFile。私は$.evalFileが好きです。app.doScriptと$.evalFileを参照してください
C:\ script1.jsx
(function() {
$.evalFile(new File("/c/script2.jsx"));
var sFullName = g_script2.combineName("John", "Doe");
$.writeln(sFullName);
return "Success";
})();
C:\ script2.jsx
g_script2 = {
combineName: function(sFirstName, sLastName) {
return sFirstName + " " + sLastName;
}
};
script2.jsxがCドライブのルートにない場合は、スクリプト1を実際の場所に変更します。
sFullName
グローバルになります。g_script2
。combineName
スクリプト2のメソッドを呼び出します。ここで重要なのは、スクリプトのすべてのファイルが同じグローバル名前空間を共有することです。これがスクリプト1のアクセス方法ですg_script2
。ただし、これは、この例のようにグローバルオブジェクト内に保持されていない限り、2つのファイルが関数または変数に同じ名前を付けてはならないことも意味します。combineName
関数が実行され、文字列が返されます。ExtendScriptは、外部スクリプトを含めるためのプリプロセッサディレクティブを提供します。このディレクティブは、ターゲットファイルの内容をステートメントの場所にある現在のスクリプトファイルに挿入します。したがって、ステートメントの後で、現在のスクリプトのメソッドのように任意のメソッドを呼び出すことができます。
#target InDesign;
// Include other script file that includes a function otherScriptFileMethod
#include "otherScriptFile.jsx"
// Now you can call the method as it was written in this script file
otherScriptFileMethod();