Jaka jest różnica między app.doScript a $ .evalFile?

Jedyna różnica, jaką do tej pory znalazłem: Jeśli skrypt jest uruchamiany przezapp.doScript zwraca błąd, plik i numer linii błędu są nadpisywane przez plik i numer liniiapp.doScript połączenie.

Czy są jakieś inne różnice, o których powinienem wiedzieć?

Oto przykładowy kod, który pokazuje powyższą różnicę:

Najpierw uruchom InDesign:

c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
InDesignServer.com -port 12345
pause

Następnie utwórz plik wsadowy, aby uruchomić skrypt:

c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
sampleclient -host localhost:12345 -server "C:/doscript_vs_evalfile/call_doScript.jsx"
pause

To jest „call_doScript.jsx”, który wywoła 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;
}

To jest „named_by_doScript.jsx”, który jest wywoływany przez poprzedni skrypt:

app.consoleout("Running called_by_doScript.jsx");
// Produce error
var a = b;

Uruchom plik wsadowy i to jest wynik:

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

Zauważ, że powyższy błąd jest nieprawidłowy. Błąd został spowodowany przez linię 3 wywołanego_by_do skryptu, a nie przez linię 2 call_doScript.

Teraz zmodyfikuj skrypty, aby użyć $ .evalFile, a otrzymamy ten wynik:

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

Zauważ, że błąd jest teraz zgłaszany we właściwej lokalizacji.

Edytować:

Znalazłem rzadką dokumentację. To naprawdę nie odpowiada na moje pytanie, ale opisuje różne opcjonalne parametry.

doScript: Adobe InDesign CS6 Przewodnik po skryptach: JavaScript (link bezpośredni)
Patrz strona 16, „Używanie metody doScript”

evalFile: Przewodnik po narzędziach Javascript: Adobe Creative Suite 5
Patrz strona 219

questionAnswers(1)

yourAnswerToTheQuestion