2017-11-06 3 views
0

Ich habe ein Skript, das den gesamten Inhalt in Indesign ersetzt, die ich mit Etiketten in Tabellenzellen markiert haben die großen Werke. Das einzige, was fehlt ist, wenn ich 2 Zellen das gleiche Label gebe, ersetzt das Skript nur den Inhalt des ersten gefundenen Labels. Also ich möchte das Skript alle Inhalte ersetzen, die das gleiche Label hat. Hat jemand eine Idee, wie man das erreicht?Wiederholungs Inhalte per XML in InDesign ersetzt

var main = function() { 
    var doc = app.properties.activeDocument, 
    root, xe, price, 
    tags = <tags> 

<PVDF8HNAPK40>100</PVDF8HNAPK40> 
<PVDF8HNAPK50>100</PVDF8HNAPK50> 
<PVDF8HNAPK63>100</PVDF8HNAPK63> 
<PVDF8HNAPK75>100</PVDF8HNAPK75> 

</tags>, tag, xes; 


    if (!doc) return; 

    root = doc.xmlElements[0]; 

    tags = tags.children(), n = tags.length(); 

    while (n--) { 
     tag = tags[n]; 
     xes = root.evaluateXPathExpression (".//"+ String(tag.name())); 
     if (xes.length) { 
      xe = xes[0]; 
      xe.contents = String(tag).replace (/\./g, ","); 

     } 
    } 
} 


var u; 

app.doScript ("main()",u,u,UndoModes.ENTIRE_SCRIPT, "The Script"); 

Antwort

0

Es sieht aus, als ob alles, was Sie brauchen nur eine andere Schleife ist. Um die Dinge gleich zu machen, habe ich die äußere while Schleife durch eine for Schleife ersetzt.

var main = function() { 
    var doc = app.properties.activeDocument, 
    root, xe, price, tag, xes, 
    tags = <tags> 
     <PVDF8HNAPK40>100</PVDF8HNAPK40> 
     <PVDF8HNAPK50>100</PVDF8HNAPK50> 
     <PVDF8HNAPK63>100</PVDF8HNAPK63> 
     <PVDF8HNAPK75>100</PVDF8HNAPK75> 
    </tags>; 

    if (!doc) return; 

    root = doc.xmlElements[0]; 
    tags = tags.children(); 

    for (var t = 0; t < tags.length(); t++) { 
     tag = tags[t]; 
     xes = root.evaluateXPathExpression (".//"+ String(tag.name())); 
     for (var i = 0; i < xes.length; i++) { 
      xe = xes[i]; 
      xe.contents = String(tag).replace (/\./g, ","); 
     } 
    } 
} 

var u; 
app.doScript ("main()",u,u,UndoModes.ENTIRE_SCRIPT, "The Script"); 

Haftungsausschluss: Ich habe kein InDesign. Dies ist ein nicht getesteter Code.

+1

Ok danke @Tomalak ich es morgen früh testen werden und lassen Sie wissen, ob es funktioniert. – Christophe

+0

Vielen Dank! @Tomalak es sieht aus wie es funktioniert, vielen Dank! – Christophe

Verwandte Themen