9

私がこれまでに見つけた唯一の違いは、によって実行されるスクリプトがエラーを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 ページを参照

4

1 に答える 1

8

$ .evalFileはExtendScript機能ですが、app.doScriptはInDesignによって実装されています。

$.evalFileは

  • $.stackを維持する
  • $.includePathを検討してください
  • 他のターゲットアプリケーションで動作する

app.doScriptはできます

  • 引数を渡す
  • 言語を変更します(例:AppleScript)
  • #targetengineを使用して他のセッションに対処する
  • サポートされている限り、取り消し/トランザクションモードを変更します

しかし ...

  • ネストされたdoScript呼び出しは引数を上書きします
  • 複雑なセットアップでは、12を超える引数を渡した後、デバッグするのに問題がありました。
  • doScript全体のシングルステップは問題です

また、ご存知のように、エラー処理は異なります。例外に注意してください...

于 2013-02-26T19:49:42.463 に答える