2016-07-21 2 views
0

Ich arbeite in ExtendScript mit Brücke, um Etiketten an Dokumente aus einem Excel-Dokument anzuhängen. Ich analysiere das Excel-Dokument mit der js-xlsx-Bibliothek. Ich führe eine for-Schleife durch die einzelnen Zellen zu analysieren und die Werte zu erhalten, die perfekt funktioniert, wenn ich es von der Befehlszeile aus ausführen. Wenn ich es jedoch in ExtendScript ausführe, bekomme ich eine Ausnahme, dass keys(). ForEach keine Funktion ist. Liest ExtendScript aus irgendeinem Grund for-Schleifen anders? Ich habe Probleme, das herauszufinden. Hier ist die Zeile, die mir Probleme gibt:For Schleife in ExtendScript - Schlüssel(). ForEach keine Funktion

var range = {s:{c:0, r:0}, e:{c:1,r:30}}; 
for (var R = range.s.r; R <= range.e.r; ++R) { 
    for (var C = range.s.c; C <= range.e.c; ++C) { 
     var cell_address = xls.utils.encode_cell({c:C, r:R}); 

Antwort

2

Extendscript, als eine Sprache, ist bei ECMAScript 3 festgefahren - so dass es nativ über Object.keys(), noch Array.forEach() nicht bekannt ist. Nicht einmal JSON.

Amts erwähnt dies in der After Effects scripting guide pag.3 zu finden, wo es heißt:

After Effects Skripts, die die Adobe ExtendScript Sprache verwenden, die eine erweiterte Form von JavaScript ist durch mehrere Adobe-Anwendungen verwendet , einschließlich Photoshop, Illustrator und InDesign. ExtendScript implementiert die JavaScript-Sprache gemäß der ECMA-262 Spezifikation. Das After Effects-Skriptmodul unterstützt die 3. Ausgabe der Edition des ECMA-262-Standards, einschließlich der Notation und der lexikalischen Konventionen, Typen, Objekte, Ausdrücke und Anweisungen . ExtendScript implementiert auch die E4X ECMA-357-Spezifikation, die den Zugriff auf Daten im XML-Format definiert.

Das obige wird weder im PS-Skripthandbuch noch in der Referenz gefunden.

Wenn Sie ES5-Funktionen verwenden möchten, schließen Sie entweder Shims ein oder geben Sie extendscriptr ein. Extendscriptr ist ein Scripting-Community-Projekt (ohne Adobe-Beteiligung), mit dem Sie ES5/ES6-Code schreiben können, der dann in ES3 konvertiert wird.

+1

Die Post wurde aktualisiert. Seltsamerweise werden Informationen über die ECMA-Konformität nicht von der offiziellen Skriptdokumentation jeder App geteilt. –

+0

Die Shim-Datei, die in diesem Fall enthalten ist: https://github.com/es-shims/es5-shim/blob/master/es5-shim.js –

1

Ich habe das herausgefunden. Der Fehler lag weiter unten in der Datei. ExtendScript oder die Version, die ich habe, unterstützt keine forEach-Schleifen, also musste ich die Datei für die forEach-Funktion schreiben und importieren.

Verwandte Themen