2013-02-25 17 views
6

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

+1

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

Antwort

6

$ .evalFile ist ein ExtendScript Funktion während app.doScript wird von InDesign implementiert.

$ .evalFile tut

  • die .STACK
  • $ halten betrachten $ .includePath
  • Arbeit in anderen Zielanwendungen

App.doScript kann

  • Pass Argumente
  • die Sprache zu ändern, z.B. Apple
  • Verwendung #targetengine zu adressieren anderen Sitzungen
  • die Undo/Transaktionsmodus ändern, wie so weit
  • unterstützt

aber ...

  • verschachtelt doScript ruft Überschreibungs Argumente
  • in a kompliziertes Setup Ich hatte Probleme mit dem Debuggen, nachdem ich mehr als 12 Argumente übergeben hatte.
  • Einzelschritt über doScript ist Mühe

Auch, wie Sie gefunden, Fehler unterscheidet sich der Handhabung. Behalten Sie Ausnahmen im Auge ...