[GastForen Programmierung/Entwicklung AppleScript Telefonummern per AppleScript in InDesign CS3/4 spationieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Gunray
Beiträge gesamt: 26

4. Feb 2010, 11:06
Beitrag # 1 von 11
Bewertung:
(4350 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

da bin ich mal wieder.
Ich komme leider nicht mehr weiter. Auch hier im Forum habe ich nix passendes gefunden.

Mein Problem:

Ich möchte per Dialogbox eine Telefonnummer eingeben z.B.:
+49(0)511-87451-0

Diese soll dann per in eine Textbox geschrieben werden (das funktioniert schon) und so aus sehen:

+49(0)5 11 - 8 74 51-0

mein Problem ist das die Länge der Telefonnummer variiert und ich nicht weiß wie ich das realisieren soll.

Wie kann ich das machen?

Hier mein Codeschnipsel:

Dialog-Teil:
Code
			tell (make dialog row) 
tell (make dialog column)
make static text with properties {static label:"Name:"}
make static text with properties {static label:"Titel 1:"}
make static text with properties {static label:"Titel 2"}
end tell
tell (make dialog column)
set NameField to make text editbox with properties {edit contents:"Vorname Name", min width:60}
set Titel1Field to make text editbox with properties {edit contents:"+49(0)511-87451-0", min width:60}
set Titel2Field to make text editbox with properties {edit contents:" ", min width:60}
end tell
end tell


und hier das Ausführen:

Code
	tell spread 1 of aDoc to set t to make text frame with properties {geometric bounds:{20, 4, 30, 40}, item layer:aLayer} 
set tc to vkName & return & vkTitel1 & return & vkTitel2
set contents of t to tc
set s to parent story of t
set point size of characters of s to 6
set point size of characters of line 1 of s to 8
set fill color of characters of s to aSwatch
set fill color of line 1 of s to "Black"
set applied font of s to "Baskerville BQ"
set font style of s to "Italic"
set applied font of line 1 of s to "Akzidenz Grotesk"
set font style of line 1 of s to "Bold"


Vielleicht hat ja jemand eine Idee


Mit freundlichen Grüßen

Benjamin Böse

---------------------------
Typostudio Müller GmbH
www.typostudio.de
Mit freundlichen Grüßen

Benjamin Böse

---------------------------
Achilles Präsentationsprodukte GmbH
www.achilles-app.de

(Dieser Beitrag wurde von Gunray am 4. Feb 2010, 11:07 geändert)
X

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Hans Haesler
  
Beiträge gesamt: 5816

4. Feb 2010, 15:27
Beitrag # 2 von 11
Beitrag ID: #432734
Bewertung:
(4321 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gunray,

möchtest Du als "Spatium" einen normalen Leerschlag verwenden?
Oder, z.B., ein Achtelgeviert?

Würdest Du bitte ein paar mögliche Telefon-Nummern angeben?

Gruss, Hans


als Antwort auf: [#432687]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Gunray
Beiträge gesamt: 26

4. Feb 2010, 19:15
Beitrag # 3 von 11
Beitrag ID: #432752
Bewertung:
(4292 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

danke für die schnelle Reaktion.

Die Telefonnummern sollen lediglich zweistellig von rechts gegliedert werden mit einem Kerning-Wert von 100.

Mögliches aussehen:

Eingabe => Textfeld

+49(0)3231-23456-23 => +49 (0) 32 31 - 2 34 56 - 23
+49(0)323-2345-231 => +49 (0) 3 23 - 23 45 - 2 31
+49(0)3231-2356-231 => +49 (0) 32 31 - 23 56 - 2 31
+49(0)323-2345-231 => +49 (0) 3 23 - 23 45 - 23

Zudem habe ich jetzt noch ein Problem. Den Code & tab & kann ich ja zwischen texten setzen in:
Code
tell spread 1 of aDoc to set t to make text frame with properties {geometric bounds:{23, 43, 53, 85}, item layer:aLayer} 
set tc to "Hallo" & tab & "Welt"
set contents of t to tc

setzen

Aber wenn ich danach make tab stop with properties {position:9}
eingebe kommt eine Fehlermeldung. Wie kann ich zusäztlich den Tabluator setzen?

Danke für die Hilfe

Benjamin Böse

---------------------------
Typostudio Müller GmbH
www.typostudio.de
Mit freundlichen Grüßen

Benjamin Böse

---------------------------
Achilles Präsentationsprodukte GmbH
www.achilles-app.de


als Antwort auf: [#432734]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Hans Haesler
  
Beiträge gesamt: 5816

4. Feb 2010, 23:38
Beitrag # 4 von 11
Beitrag ID: #432759
Bewertung:
(4256 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Benjamin,

bitteschön. Und danke für die weiteren Beispiele.

Aufgrund Deines ersten Beispiels hatte ich eine Lösung vorbereitet, welche fünf Leerschläge einsetzt, dort wo Du sie in Deinem ersten Beitrag getippt hast.

Doch nun sollte an neun Stellen ein Kerning-Wert von 100 Einheiten zugewiesen werden ... Das muss ich auf morgen verschieben.

Zu Deinem tab-stop-Problem. Leider zeigst Du nicht das Umfeld der Codezeile, welcher den Fehler generiert.

So sollte es klappen:

Code
tell parent story of t 
make tab stop with properties {position:9}
end tell

Gruss, Hans


als Antwort auf: [#432752]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

-hans-
Beiträge gesamt: 748

5. Feb 2010, 08:29
Beitrag # 5 von 11
Beitrag ID: #432764
Bewertung:
(4228 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen,
wenn es kein fester Kerningwert sein muss, sondern eventuell ein Leerzeichen zur Gliederung reicht (könnte man wohl auch durch einen festen abstand z.b. achtelgeviert ersetzen), dann funktioniert folgendes:
Code
set meinetelnr to "+49(0)3231-23456-23" 

my telnrgliedern(meinetelnr)

on telnrgliedern(ausgangsstring)
set mylist to every text item of ausgangsstring
set startstring to "+49 (0) "
set nrlist to characters 7 thru -1 of ausgangsstring

--liste umgekehrt sortieren
set nrlist02 to {}
repeat with i from 1 to count of nrlist
set mynr to item i of nrlist
set beginning of nrlist02 to mynr
end repeat

--von ende her paarweise abzaehlen
set nrlist03 to {}
set counter to 0
repeat with j from 1 to count of nrlist02
set mynr02 to item j of nrlist02
try
set mynr02 to mynr02 as number
if counter = 2 then
set mynr02 to mynr02 & " "
set beginning of nrlist03 to mynr02
set counter to 1
else
set beginning of nrlist03 to mynr02
set counter to counter + 1
end if
on error
set mynr02 to " " & mynr02 & " "
set beginning of nrlist03 to mynr02
set counter to 0
end try
end repeat
set telnr to startstring & (nrlist03 as string)
return telnr
end telnrgliedern

Lieben Gruß

Hans-Gerd Claßen


als Antwort auf: [#432759]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Hans Haesler
  
Beiträge gesamt: 5816

5. Feb 2010, 09:21
Beitrag # 6 von 11
Beitrag ID: #432767
Bewertung:
(4216 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

eine gute Lösung. Aber ein Leerschlag ist schon etwas viel.

Anstelle der Kerning-Einheiten bevorzuge ich ebenfalls ein Achtelgeviert. So wie es in der folgenden GREP-Lösung eingesetzt wird.

Gruss, Hans


als Antwort auf: [#432764]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Hans Haesler
  
Beiträge gesamt: 5816

5. Feb 2010, 09:25
Beitrag # 7 von 11
Beitrag ID: #432768
Bewertung:
(4213 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Benjamin,

und hier ist das Script in lauffähiger Version.

Es benötigt die Scripting Addition "Satimage.osax". Okay, man könnte die Suchen/Ersetzen-Vorgänge mit InDesigns "grep" durchführen. Werde ich vielleicht später mal versuchen.

Für die Variablen aLayer und aSwatch habe ich irgendetwas definiert (weil keine Angabe).

Anstelle der 100 Kerning-Einheiten wird ein Achtelgeviert eingesetzt. Dieses ist nur unwesentlich breiter. Hat aber zwei Vorteile: Es ist sichtbar. Und bei der Änderung einer Ziffer bleibt es erhalten.

Im Dialog habe ich die Breite der Eingabefelder auf 160 erhöht.

Code
tell application "Adobe InDesign CS3" 
activate
-- eventuell offengebliebene Dialoge schliessen
try
destroy dialogs
end try
-- den Dialog vorbereiten
set aDialog to make dialog with properties {name:"Visitenkarte"}
tell aDialog
tell (make dialog column)
tell (make dialog row)
tell (make dialog column)
make static text with properties {static label:"Name:"}
make static text with properties {static label:"Titel 1:"}
make static text with properties {static label:"Titel 2:"}
end tell
tell (make dialog column)
set NameField to make text editbox with properties {edit contents:"Vorname Name", min width:160}
set Titel1Field to make text editbox with properties {edit contents:"+49(0)511-87451-0", min width:160}
set Titel2Field to make text editbox with properties {edit contents:" ", min width:160}
end tell
end tell
end tell
-- den Dialog zeigen
with timeout of 300 seconds
set dResult to show aDialog
end timeout
-- die Auswahl auswerten
if dResult = true then
set vkName to edit contents of NameField
set vkTitel1 to edit contents of Titel1Field
set vkTitel2 to edit contents of Titel2Field
else
destroy aDialog
error number -128
end if
destroy aDialog
end tell

-- die Textkette dem Handler zum Spationieren schicken
set vkTitel1 to my groupNumbers(vkTitel1)

-- die Suchen/Ersetzen-Vorgaben leeren
set find text preferences to nothing
set change text preferences to nothing
set find change text options to nothing

set aDoc to document 1
set aLayer to layer 1 of document 1
set aSwatch to swatch 6 of document 1
tell spread 1 of aDoc to set t to make text frame with properties {geometric bounds:{20, 4, 30, 40}, item layer:aLayer}
set tc to vkName & return & vkTitel1 & return & vkTitel2
set contents of t to tc
set s to parent story of t

-- die Zeichen definieren ("<2009>" ist der Unicode des Achtelgevierts)
set find what of find text preferences to "¶"
set change to of change text preferences to "<2009>"

-- das Suchen/Ersetzen auslösen
tell s to change text

set point size of characters of s to 6
set point size of characters of line 1 of s to 8
set fill color of characters of s to aSwatch
set fill color of line 1 of s to "Black"
set applied font of s to "Baskerville BQ"
set font style of s to "Italic"
set applied font of line 1 of s to "Akzidenz Grotesk"
set font style of line 1 of s to "Bold"

-- die Suchen/Ersetzen-Vorgaben leeren
set find text preferences to nothing
set change text preferences to nothing
set find change text options to nothing
end tell

-- der Handler, welcher das Spationieren vorbereitet
on groupNumbers(tmpString)
set tmpString to change "(\\(0\\))" into "¶\\1¶" in tmpString with regexp
set tmpString to change "(-)" into "¶\\1¶" in tmpString with regexp
set tmpString to change "¶([0-9])?([0-9][0-9])([0-9][0-9])¶" into "¶\\1¶\\2¶\\3¶" in tmpString with regexp
set tmpString to change "¶([0-9])([0-9][0-9])" into "¶\\1¶\\2" in tmpString with regexp
set tmpString to change "¶+" into "¶" in tmpString with regexp
return tmpString
end groupNumbers

Gruss, Hans


als Antwort auf: [#432767]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Gunray
Beiträge gesamt: 26

5. Feb 2010, 12:48
Beitrag # 8 von 11
Beitrag ID: #432792
Bewertung:
(4175 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke ersteinmal für die nette Hilfe. Momentan habe ich leider viele Fragen, da ich ja erst angefangen habe mit Hilfe von AppleScript viele lästigen Arbeitschritte in InDesign zu vereinfachen.

Das einzige Problem das ich jetzt noch habe, ist dass InDesign sich beim Ausführen immer verabschiedet.

Naja muss ich ersteinmal schauen voran das liegt!
Mit freundlichen Grüßen

Benjamin Böse

---------------------------
Achilles Präsentationsprodukte GmbH
www.achilles-app.de


als Antwort auf: [#432687]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Hans Haesler
  
Beiträge gesamt: 5816

5. Feb 2010, 13:20
Beitrag # 9 von 11
Beitrag ID: #432798
Bewertung:
(4162 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Benjamin,

bitteschön.

Also, dass InDesign abstürzt ist nicht angenehm.

Mit welcher Version von InDesign hast Du dieses Problem?
Hast Du überprüft, ob die Definitionen der Variablen (aLayer, aSwatch) mit dem Dokument übereinstimmen?

Falls ja, dann schrittweise vorgehen. Zuerst nur das Erzeugen des Textrahmens zulassen. Und den Rest des Codes auskommentieren.

Dann die Textkette einsetzen lassen. Dann das Suchen/Ersetzen auslösen.

Gruss, Hans


als Antwort auf: [#432792]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

-hans-
Beiträge gesamt: 748

5. Feb 2010, 15:06
Beitrag # 10 von 11
Beitrag ID: #432806
Bewertung:
(4150 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also das Script von Hans läuft bei mir (auch wenn ich meinen Handler dort einsetze ;-) ) problemlos.
CS4
Lieben Gruß

Hans-Gerd Claßen


als Antwort auf: [#432798]

Telefonummern per AppleScript in InDesign CS3/4 spationieren

Gunray
Beiträge gesamt: 26

5. Feb 2010, 19:27
Beitrag # 11 von 11
Beitrag ID: #432817
Bewertung:
(4125 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke euch beiden!

Nach einer Neuinstalation von InDesign CS4 hat jetzt alles funktioniert.

Tausend Dank!
Mit freundlichen Grüßen

Benjamin Böse

---------------------------
Achilles Präsentationsprodukte GmbH
www.achilles-app.de


als Antwort auf: [#432806]
X

Aktuell

PDF / Print
Wolken_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022