[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Inhalt von Textrahmen ersetzen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Inhalt von Textrahmen ersetzen

tsone
Beiträge gesamt: 70

31. Jan 2023, 11:50
Beitrag # 1 von 9
Bewertung:
(2610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

ich suche eine Möglichkeit, den Inhalt von Textrahmen mit bestimmten Namen (Gruppennamen) auf allen Seiten eines Dokumentes zu füllen/ersetzen.

Beispiel: Dokument hat 5 Seiten. Jede Seite enthält einen Textrahmen mit dem Namen "Produktbezeichnung" und als Textinhalt "xxx".
Ich möchte per Skript (evt. per Promt) dann die "xxx" in allen Rahmen ändern.

Schon mal besten Dank für eure Hilfe!
X

Inhalt von Textrahmen ersetzen

Peter Sauseng
Beiträge gesamt: 483

31. Jan 2023, 12:32
Beitrag # 2 von 9
Beitrag ID: #585418
Bewertung:
(2594 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Dazu gibt es einige Fragen:
Meinst du mit Namen das Label, also Skriptetikett?
Gibt es auf jeder Seite nur einen Textrahmen?
Soll das "xxx" nur in Textrahmen mit dem bestimmten Label ersetzt werden?

Gruß, Peter


als Antwort auf: [#585417]

Inhalt von Textrahmen ersetzen

tsone
Beiträge gesamt: 70

31. Jan 2023, 12:49
Beitrag # 3 von 9
Beitrag ID: #585419
Bewertung:
(2588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

mit "Name" meine ich zum Beispiel "app.selection[0].name".

Geplant ist, dass nur einen Textrahmen mit dem Namen "Produktbezeichnung" auf der Seite habe. Es können natürlich mehrere Textrahmen pro Seite vorhanden sein, aber die interessieren erstmal nicht.
Ich stelle mir das so vor, dass ich mit dem Skript nach dem .name = "Produktbezeichnung" suche und dann mit .content die "xxx" ersetze. Und dass dann auf allen Seiten, wo der Textrahmen "Produktbezeichnung" vorhanden ist.

Ich hoffe, ich habe das einigermaßen verdeutlichen können.


als Antwort auf: [#585418]

Inhalt von Textrahmen ersetzen

Peter Sauseng
Beiträge gesamt: 483

31. Jan 2023, 13:33
Beitrag # 4 von 9
Beitrag ID: #585421
Bewertung:
(2566 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Sollte so funktionieren:

Code
if (app.documents.length == 0) { 
alert("Kein Dokument geöffnet");
exit();
}

main();

function main() {

var _Doc = app.documents[0];

var _Input = prompt("'xxx' ersetzen durch", "xxx" );

if (_Input == null) {
alert ("Keine Eingabe, Skript abgebrochen!", "Info", true);
exit();
}

findChangeOptions();

app.findGrepPreferences.findWhat = "xxx";
app.changeGrepPreferences.changeTo = _Input;
for (var i = 0; i < _Doc.textFrames.length; i++) {
if (_Doc.textFrames[i].name == "Produktbezeichnung") {
_Doc.textFrames[i].changeGrep();
}
}
clearPreferences();

}

function findChangeOptions() { // Optionen einstellen )

clearPreferences();

app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeMasterPages = false;
}

function clearPreferences() { // Zurücksetzen der Suchoptionen
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
}


"xxx" wird durch den eingegebenen Text ersetzt, aber nur in Textrahmen (des gesamten aktiven Dokuments) mit Namen "Produktbezeichnung".

Gruß, Peter


als Antwort auf: [#585419]

Inhalt von Textrahmen ersetzen

tsone
Beiträge gesamt: 70

31. Jan 2023, 14:28
Beitrag # 5 von 9
Beitrag ID: #585422
Bewertung:
(2545 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

das funktioniert super. Besten Dank dafür!


als Antwort auf: [#585421]

Inhalt von Textrahmen ersetzen

Peter Sauseng
Beiträge gesamt: 483

31. Jan 2023, 15:10
Beitrag # 6 von 9
Beitrag ID: #585423
Bewertung:
(2530 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo!

Freut mich. Voraussetzung ist eben, dass die Textrahmen richtig gekennzeichnet sind. Falls statt "xxx" etwas anderes zu ersetzen ist, kann es im Skript ganz einfach geändert werden.


als Antwort auf: [#585422]

Inhalt von Textrahmen ersetzen

tsone
Beiträge gesamt: 70

31. Jan 2023, 15:22
Beitrag # 7 von 9
Beitrag ID: #585424
Bewertung:
(2517 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe deinen Code ein wenig angepasst, damit ich flexibler bin:

Code
if (app.documents.length == 0) {  
alert("Kein Dokument geöffnet");
exit();
}

main();

function main() {
var _Doc = app.documents[0];
var _Input = prompt("Text ersetzen", "" );
var _InputRahmenname = prompt("Rahmenname", "Produktbezeichnung" );

for (var i = 0; i < _Doc.textFrames.length; i++) {
if (_Doc.textFrames[i].name == _InputRahmenname) {
_Doc.textFrames[i].contents = _Input;
}
}
}



als Antwort auf: [#585423]

Inhalt von Textrahmen ersetzen

Martin Fischer
  
Beiträge gesamt: 12778

31. Jan 2023, 15:52
Beitrag # 8 von 9
Beitrag ID: #585425
Bewertung:
(2487 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Von Hand geht die Benamung übrigens so, dass man die zu benennenden Objekte auswählt und in der Ebenenenpalette den Text der mit einer Checkbox markierten »Unterebenen« (= pageItems/Textrahmen) ändert.



Bei leeren Textrahmen steht, drin, um was es sich handelt; in spitzen Klammern.
Bei Textrahmen mit Text steht der Text in spitzen Klammern drin.

Erst bei den benannten Textrahmen fehlen diese spitzen Klammern.


als Antwort auf: [#585423]
Anhang:
Bildschirm­foto_2023-01-31_um_15.47.17.png (40.5 KB)

Inhalt von Textrahmen ersetzen

tsone
Beiträge gesamt: 70

31. Jan 2023, 16:17
Beitrag # 9 von 9
Beitrag ID: #585426
Bewertung:
(2481 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ja das weiß ich. Ist mir aber zu unflexibel. Ich habe das auch mit Skripten geregelt, weil ich teilweise auch ganze Reihen benennen will.
Aber das hat mit oben der Geschichte nichts zu tun.


als Antwort auf: [#585425]
X