Der einzige Unterschied, den ich bisher gefunden habe: Wenn ein Skript, das von app.doScript
ausgeführt wird, einen Fehler zurückgibt, werden die Datei- und Zeilennummer des Fehlers durch die Datei- und Zeilennummer des Aufrufs app.doScript
überschrieben.
Gibt es noch weitere Unterschiede, über die ich Bescheid wissen sollte?
Hier ist Beispielcode, der die obige Differenz zeigt:
Erstausstrahlung InDesign:
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
InDesignServer.com -port 12345
pause
Nächstes eine Batchdatei erstellen, ein Skript auszuführen:
c:
cd "C:\Program Files\Adobe\Adobe InDesign CS6 Server x64"
sampleclient -host localhost:12345 -server "C:/doscript_vs_evalfile/call_doScript.jsx"
pause
Das ist „call_doScript. jsx ", die app.doScript aufrufen wird.
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;
}
Das ist "called_by_doScript.jsx", die von der vorherigen Skript aufgerufen wird:
app.consoleout("Running called_by_doScript.jsx");
// Produce error
var a = b;
die Batch-Datei starten und das ist das Ergebnis:
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
Beachten Sie, dass die Fehler oben ist falsch. Der Fehler wurde von Zeile 3 von called_by_doScript, nicht von Zeile 2 von call_doScript verursacht.
jetzt die Skripte modifizieren $ .evalFile zu verwenden, und wir bekommen dieses Ergebnis:
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
Beachten Sie, dass der Fehler jetzt an der richtigen Stelle gemeldet wird.
Edit:
fand ich spärliche Dokumentation. Es beantwortet meine Frage nicht wirklich, aber es beschreibt verschiedene optionale Parameter.
doScript:Adobe InDesign CS6 Scripting Guide: JavaScript (direct link)
Siehe Seite 16, "Verwenden der doScript Method"
evalFile:Javascript Tools Guide: Adobe Creative Suite 5
Siehe Seite 219
Ich weiß nicht die Antwort, aber ich würde wagen, dass mit app.doscript Sie JS-Dateien sowie VBS-Dateien ausführen können. – bgmCoder