私がこれまでに見つけた唯一の違いは、によって実行されるスクリプトがエラーをapp.doScript
返す場合、エラーのファイルと行番号がapp.doScript
呼び出しのファイルと行番号によって上書きされることです。
他に知っておくべき違いはありますか?
上記の違いを示すサンプルコードは次のとおりです。
InDesignを最初に実行します。
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
InDesignServer.com -port 12345
pause
次に、スクリプトを実行するためのバッチファイルを作成します。
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
sampleclient -host localhost:12345 -server "C:/doscript_vs_evalfile/call_doScript.jsx"
pause
これは「call_doScript.jsx」で、app.doScriptを呼び出します。
try {
app.doScript(new File("/c/doscript_vs_evalfile/called_by_doScript.jsx"));
"Success";
}
catch (e) {
var sError = "Encountered " + e.name + " #" + e.number + " at line " + e.line + " of file " + e.fileName + "\n" + e.message;
app.consoleout(sError);
sError;
}
これは「called_by_doScript.jsx」であり、前のスクリプトによって呼び出されます。
app.consoleout("Running called_by_doScript.jsx");
// Produce error
var a = b;
バッチファイルを実行すると、次の結果になります。
02/25/13 13:30:03 INFO [javascript] Executing File: C:\doscript_vs_evalfile\call_doScript.jsx
02/25/13 13:30:03 INFO [javascript] Executing File: C:\doscript_vs_evalfile\called_by_doScript.jsx
02/25/13 13:30:03 INFO [script] Running called_by_doScript.jsx
02/25/13 13:30:03 INFO [script] Encountered ReferenceError #2 at line 2 of file /c/doscript_vs_evalfile/call_doScript.jsx
b is undefined
上記のエラーが正しくないことに注意してください。このエラーは、call_doScriptの2行目ではなく、called_by_doScriptの3行目が原因で発生しました。
$ .evalFileを使用するようにスクリプトを変更すると、次の結果が得られます。
02/25/13 13:32:39 INFO [javascript] Executing File: C:\doscript_vs_evalfile\call_evalFile.jsx
02/25/13 13:32:39 INFO [script] Running called_by_evalFile.jsx
02/25/13 13:32:39 INFO [script] Encountered ReferenceError #2 at line 3 of file /c/doscript_vs_evalfile/called_by_evalFile.jsx
b is undefined
エラーが正しい場所で報告されていることに注意してください。
編集:
私はまばらなドキュメントを見つけました。それは私の質問に実際には答えませんが、さまざまなオプションのパラメーターについて説明しています。
doScript: Adobe InDesign CS6スクリプティングガイド:JavaScript(直接リンク)
16ページの「doScriptメソッドの使用」を参照してください。
evalFile: Javascriptツールガイド:Adobe Creative
Suite5219
ページを参照