[GastForen Programmierung/Entwicklung AppleScript

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Bestimmten Text aus Textrahmen löschen

Hans Haesler
  
Beiträge gesamt: 5826

4. Apr 2016, 08:36
Bewertung:

gelesen: 5779

Beitrag als Lesezeichen
Hallo Marion,

hier kommt endlich eine Antwort.

Die Seitenzahlen könnten per Dialog eingegeben werden. Im Eingabefeld müssen die Zahlen durch Kommas getrennt werden.
Eventuelle Leerschläge werden durch die anschliessende Behandlung entfernt.

Es wird nicht geprüft, ob die Seiten vorhanden sind. Ein 'try'-Wickel verhindert eine Fehlermeldung, aber es kommt keine Meldung.

Ein 'change grep' kann nicht direkt an die Seite gerichtet werden. Deshalb wird 'tell every text frame' eingesetzt.

Code
set pageNumbers to text returned of (display dialog "Seitennummern eingeben:" default answer "") 

set AppleScript's text item delimiters to " "
set tmpList to every text item of pageNumbers as list
set AppleScript's text item delimiters to {""}
set tmpString to every text item of tmpList as string
set AppleScript's text item delimiters to ","
set defList to every text item of tmpString as list
set AppleScript's text item delimiters to {""}

tell application "Adobe InDesign CS4"
activate
-- die GREP-Vorgaben löschen ...
set find what of find grep preferences to nothing
set change to of change grep preferences to nothing

-- das GREP-Muster definieren
set find what of find grep preferences to "~y(ab )?[0-9]+ Min."
set change to of change grep preferences to ""

-- das Suchen/Ersetzen ausführen
tell document 1
repeat with p from 1 to count of defList
set curNumber to item p of defList
try
tell page curNumber
tell every text frame
change grep
end tell
end tell
end try
end repeat
end tell

-- die GREP-Vorgaben zurücksetzen ...
set find what of find grep preferences to nothing
set change to of change grep preferences to nothing

-- die Anwenderin benachrichtigen
display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1

end tell

Eine andere Möglichkeit: Die Liste der Seitenzahlen als Liste im Script definieren.

Code
set defList to {"66", "77", "78"} 

Diese Zeile ersetzt den obigen Dialogaufruf und die nachfolgenden sieben Zeilen, in welchen das Ergebnis mithilfe der 'AppleScript's text item delimiters in eine Liste umgewandelt wird.

Wenn die Seitenzahlen von Anführungszeichen umgeben sind, entspricht die Nummer der automatischen Seitenzahl. Ohne Anführungszeichen ist es die Position der Seiten im Dokument. Und dann muss die erste Seite die Nummer 1 haben und es dürfen keine Seiten durch einen Kapitelanfang ausgelassen werden.

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 4. Apr 2016, 08:36 geändert)
Änderungsverlauf:
Beitrag geändert von Hans Haesler (Veteran) am 4. Apr 2016, 08:36