[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Suchen und Ersetzen (fester Suchstring, mit Textvariable zusammengesetzter Ersetzungsstring)

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

Suchen und Ersetzen (fester Suchstring, mit Textvariable zusammengesetzter Ersetzungsstring)

pixelstaub
Beiträge gesamt: 128

7. Jan 2011, 15:48
Beitrag # 1 von 4
Bewertung:
(3061 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Applescriptcracks,

ich hänge gerade an folgendem Problem:
Der Text "Allg. Hinweise" soll gesucht und mittels Applescript in "Allgemeine Hinweise finden Sie auf Seite XX bzw. Seite YY" geändert werden. Soweit kein Problem:

Code
set find what of find text preferences to "Allg. Hinweise" 
set change to of change text preferences to "Allgemeine Hinweise finden Sie auf Seite XX bzw. Seite YY"
tell active document
set myFoundItems to change text
end tell


Nun sollen aber XX und YY aus in InDesign benutzerdefinierten Variablen kommen. Prinzipiell stelle ich mir so etwas vor

Code
set change to of change text preferences to "Allgemeine Hinweise finden Sie auf Seite" & text variable {name:XX} & "bzw. Seite " & text variable {name:YY} 


... jemand eine Idee, wie es funktioniert?

Danke und beste Grüße
Stephan
X

Suchen und Ersetzen (fester Suchstring, mit Textvariable zusammengesetzter Ersetzungsstring)

pixelstaub
Beiträge gesamt: 128

10. Jan 2011, 14:52
Beitrag # 2 von 4
Beitrag ID: #461207
Bewertung:
(2989 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mittlerweile bin ich einen kleinen Schritt weiter

Code
set find what of find text preferences to "Allg. Hinweise" 
set change to of change text preferences to "Allgemeine Hinweise finden Sie auf Seite" & contents of variable options of text variable "XX" of active document


funktioniert, wobei hier nur der Wert der Variable eingesetzt wird. Ist es nicht möglich, die Variable selbst einzusetzen?
Also so, dass, wenn ich anschließend den Wert der Variable in InDesign ändere sich der Seitenverweis automatisch anpasst?

Code
set change to of change text preferences to "Allgemeine Hinweise finden Sie auf Seite" & text variable "XX" of active document 

klappt leider nicht ...

Dankbar für jeden Tipp
Stephan


als Antwort auf: [#461096]

Suchen und Ersetzen (fester Suchstring, mit Textvariable zusammengesetzter Ersetzungsstring)

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2011, 10:09
Beitrag # 3 von 4
Beitrag ID: #461281
Bewertung:
(2949 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

weshalb kein Echo auf Deine Anfragen?

1. Es fehlen grundsätzliche Angaben: InDesign-Version, Plattform (okay, muss Mac sein, weil AppleScript :-).
2. Deine Script-Schnipsel sind nicht lauffähig.

Ich habe mir dennoch die Mühe macht, den Code zu ergänzen. Doch sieht es aus, als ob es für Dein Anliegen keine direkte Lösung gibt. Das klassische Suchen/Ersetzen ist nicht für das Einsetzen von Textvariablen ausgerüstet.

Die eine Fehlermeldung sagt: "... Ungültiger Wert für Einrichtung der Eigenschaft \"change to\". string or nothing erwartet, aber text variable erhalten."

Und wenn man die Textvariable verwendet, dann funktioniert es. Aber das Ergebnis ist unbrauchbar, weil alle Zeichen der betreffenden Zeile übereinandergelegt werden.

Letzter Strohhalm: Die Textvariable im InDesign-Tags-Format importieren. Dazu muss die Ersetzen-Textkette in eine Datei auf der Harddisk geschrieben werden. Mit "find text" wird der zu ersetzende Text notiert und anschliessend durch den importierten Text ersetzt.

Code
-- den Ersetzen-String im InDesign-Tags-Format zusammensetzen 
set txtVarString to "<ASCII-MAC>" & return & "<vsn:7><fset:InDesign-Roman><ctable:=>" & return & "Allgemeine Hinweise finden Sie auf Seite <cPageNumType:TextVariable><TextVarName:" & "XX" & "><cPageNumType:>"

-- die Textkette in eine Datei schreiben
try
set tmpFilePath to ((path to "cusr") & "Library:Preferences:textVar.txt") as string
open for access file tmpFilePath with write permission
set eof of file tmpFilePath to 0
write txtVarString as string to file tmpFilePath
close access file tmpFilePath
on error
try
close access file tmpFilePath
end try
end try

-- den zu suchenden Text finden und durch Laden des gespeicherten Textes ersetzen
tell application "Adobe InDesign CS5"
activate
set find what of find text preferences to "Allg. Hinweise"
tell document 1
try
set foundItems to find text
place file tmpFilePath on item 1 of foundItems
end try
end tell
set find what of find text preferences to ""
end tell

In der ersten Codezeile musst Du bei <vsn:7> die Ziffer an Deine InDesign-Version anpassen. CS5 = 7, CS4 = 6, CS3 = 5 ...

Gruss, Hans


als Antwort auf: [#461207]

Suchen und Ersetzen (fester Suchstring, mit Textvariable zusammengesetzter Ersetzungsstring)

pixelstaub
Beiträge gesamt: 128

11. Jan 2011, 13:33
Beitrag # 4 von 4
Beitrag ID: #461340
Bewertung:
(2921 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen, vielen Dank für Deine Antwort und die Mühe, die Du Dir gemacht hast – Du hast natürlich recht: Es war wenig hilfreich, nur ein paar Zeilen des Scripts zu schicken, die so alleine nicht lauffähig sind (zu glauben, dass es reicht, nur die Stelle zu posten, an der es hakt, war ziemlich doof, zugegeben …). "Sorry" dafür …
Zwischenzeitlich habe ich aber eine behelfsmäßige Lösung gefunden. Der Ersetzungstext kommt bei mir nicht aus einer externen Datei, sondern steht in einem Rahmen außerhalb der Montagefläche (mit dem Skriptbezeichner "Hinweis").

Code
tell application "Adobe InDesign CS4" 
set myTextFrame to text frame 1 of page 1 of active document
set find text preferences to nothing
set change text preferences to nothing
--Dokument durchsuchen
set find what of find text preferences to "Allg. Informationen zu den Mitsegeltörns und wichtige Sporthinweise"
-- Im Page-Item "Hinweis" steht der Ersetzungstext
select text of page item "Hinweis" of active document
copy
-- Als Ersetzungstext Inhalt der Zwischenablage
set change to of change text preferences to "^c"
select text of myTextFrame
tell active document
set myFoundItems to change text

end tell
end tell


Grüße
Stephan


als Antwort auf: [#461281]
X