[GastForen Programme Print/Bildbearbeitung Adobe InDesign InDesign Scripting Text einlesen/ausgeben

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

InDesign Scripting Text einlesen/ausgeben

Steini1980
Beiträge gesamt: 11

18. Nov 2005, 02:37
Beitrag # 1 von 11
Bewertung:
(20135 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich beschäftige mich seit kurzem mit InDesign Scripten unter Win mit VB. Ich hab auch schon ein paar Spielereien hinbekommen aber leider nichts ernstes.

Es geht darum, ich will einen Preis im Dokument selektieren, dann das Script ausführen, das Script soll den Preis von EUR in CHF umrechnen. Dabei geht es mir zunächst um das einlesen und ausgeben des selektierten Textes, wäre prima wenn mir hier jemand zeigt wie ich das hinbekomme. Ich schaffe es nur mit Copy und Paste, dann bekomme ichs aber nicht hin den Code ausm clipboard in mein Script zu laden und zu berechnen, dann wieder zurück ins Clipboard zu schreiben. Ich denke mal das ganze lässt sich wahrscheinlich sowieso viel geschickter ohne den umweg übers Clipboard lösen, oder?

Also ganz konkret, ich bräuchte einmal den Befehl wie ich einen markierten Textabschnitt als Variable einlese. Zudem müsste ich dann die geänderte Variable wieder an die markierte Stelle (insertion point?) im Dokument einfügen.

P.S: Vorzugsweise als VBS, notfalls tuts auch JS.
X

InDesign Scripting Text einlesen/ausgeben

Martin Fischer
  
Beiträge gesamt: 12891

18. Nov 2005, 07:33
Beitrag # 2 von 11
Beitrag ID: #196652
Bewertung:
(20129 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Also ganz konkret, ich bräuchte einmal den Befehl wie ich einen
> markierten Textabschnitt als Variable einlese. Zudem müsste ich
> dann die geänderte Variable wieder an die markierte Stelle
> (insertion point?) im Dokument einfügen.

In JS:

Code
mySel = app.selection[0].contents*1; 
inCHF = umrechnungInCHF(mySel);
app.selection[0].contents = inCHF + "";

function umrechnungInCHF(inEuro){
myEuro2CHF_Kurs = 22;
myCHF = inEuro * myUmrechnungsFaktor;
return myCHF;
}


Den Umrechnungsfaktor (myEuro2CHF_Kurs) mußt Du korrigieren/anpassen. Den könntest Du dann vielleicht auch hier posten.

Beachte: Das Skript oben überprüft nicht, ob eine reine Zahl oder etwa Text oder eine Kombination Zahl-Text markiert ist. Diese Prüfroutine sollte ggf. noch ergänzt werden.

Du kannst Dir auch mal das Skript ZahlenHerauslesen.js ansehen. Das schaut sich um nach Zahlen, die mit bestimmten Zeichenformaten ausgezeichnet sind, addiert ihre Werte und trägt die Summe an einer bestimmten Stelle ein: http://www.hilfdirselbst.ch/...i?post=190598#190598


als Antwort auf: [#196650]
(Dieser Beitrag wurde von MartinF am 18. Nov 2005, 07:40 geändert)

InDesign Scripting Text einlesen/ausgeben

Martin Fischer
  
Beiträge gesamt: 12891

18. Nov 2005, 08:57
Beitrag # 3 von 11
Beitrag ID: #196666
Bewertung:
(20110 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im Skript oben konnte ich mich auf die Schnelle nicht für eine eindeutige Bezeichnung des Umrechnungsfaktors entscheiden (myEuro2CHF_Kurs oder myUmrechnungsFaktor). Deswegen streikt das Skript.

Hier das korrigierte und um eine Prüfroutine (Auswahl = Zahl, Kombination: Zahl + nichtnumerisches Zeichen, nichtnumerische Zeichen oder leer) erweiterte Skript:
Code
mySel = app.selection[0].contents.split(",").join(".") // Inhalt der Auswahl; Komma wird ggf. durch Punkt ersetzt 
inEuro = parseFloat(mySel); // wandelt Inhalt der Auswahl (=string) in Zahl um (trennt ggf. enthaltene nichtnumerische Zeichen ab)

// Prüfen, ob eventuell nichts ausgewählt
if (isNaN(inEuro) == true){
alert ("Keine Zahl ausgewählt")
}
else{
inCHF = umrechnungInCHF(inEuro); // Aufruf der Umrechnungsfunktion
// Auswahl wird ersetzt durch den umgerechneten Wert; Dezimalpunkt wird ggf. durch Komma ersetzt
app.selection[0].contents = (inCHF + "").split(".").join(",");
}

function umrechnungInCHF(inEuro){
myEuro2CHF_Kurs = 22;
myCHF = inEuro * myEuro2CHF_Kurs;
return myCHF;
}



als Antwort auf: [#196652]

InDesign Scripting Text einlesen/ausgeben

Steini1980
Beiträge gesamt: 11

18. Nov 2005, 12:53
Beitrag # 4 von 11
Beitrag ID: #196727
Bewertung:
(20080 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank erstmal für die schnelle Antwort, werds gleich mal ausprobieren. Über das andere Zahlen auslesen/addieren Script bin ich überhaupt erst auf euch gekommen. Da es in den meisten Foren keine InDesign Scripter gibt:-)

Habe gestern Stunden damit verbracht, habs aber nie hinbekommen. Konnte immer nur ganze Textboxen auswählen und verschieben etc. aber eine Textselection hab ich nie einlesen können. DANKE


als Antwort auf: [#196666]

InDesign Scripting Text einlesen/ausgeben

Steini1980
Beiträge gesamt: 11

18. Nov 2005, 13:37
Beitrag # 5 von 11
Beitrag ID: #196739
Bewertung:
(20073 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
zwei problemchen hab ich dann doch noch:

1. bekomme ich bei beiden scripten die fehlermeldung undefined is not an object.

2. funzt bei mir nur des "ExtendScript Toolkit", wie kann ich mein script direkt vom InDesign Scriptpanel starten? Im 2.0.2 musste ich einfach im Programmverzeichnis einen Unterordner "Scripts" anlegen. Bei CS2 bekomme ichs einfach nicht gebacken.


als Antwort auf: [#196727]

InDesign Scripting Text einlesen/ausgeben

Martin Fischer
  
Beiträge gesamt: 12891

18. Nov 2005, 13:47
Beitrag # 6 von 11
Beitrag ID: #196742
Bewertung:
(20069 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das erste Skript kannst Du getrost vergessen.
Das kann nicht funktionieren. Bei der Entwicklung habe ich die eindeutige Benennung einer Variablen verschlafen. Aber das habe ich doch oben schon erklärt ...
Oder kann/will jemand den Text noch editieren?
Die Funktion sollte folgendermaßen lauten:
Code
function umrechnungInCHF(inEuro){  
myUmrechnungsFaktor = 0.65;
myCHF = inEuro * myUmrechnungsFaktor;
return myCHF;
}



Zum Fehler beim zweiten Skript solltest Du mir noch ein paar Angaben machen:
1. Wie lautet die Fehlermeldung genau (mit Angabe der Zeile)
2. Was hast Du ausgewählt? Es muß Text - eine Zahl - ausgewählt sein.
Oder hast Du darauf gewartet, daß das Skript Dir alle Zahlen in Euro umrechnet?


Zum Speichern des Skripts:
Sichere das Skript unter "[Adobe InDesign]/Presets/Scripts" mit einem Namen Deiner Wahl (z.B. "CHF2Euro.jsx") und mit der Endung ".jsx" (dann erkennt's das EST - ExtendScript Toolkit).
Das solltest Du als Skripter aber eigentlich wissen.

Jetzt sollte es in der Skriptpalette erscheinen.
Und nun kannst Du es auch auf eine Taste legen.


als Antwort auf: [#196739]
(Dieser Beitrag wurde von MartinF am 18. Nov 2005, 13:52 geändert)

InDesign Scripting Text einlesen/ausgeben

Steini1980
Beiträge gesamt: 11

18. Nov 2005, 14:36
Beitrag # 7 von 11
Beitrag ID: #196760
Bewertung:
(20054 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
vielen dank, wenn ich die datei in den unterordner presets lege funktioniert es. das script ist genau das was ich brauch, muss nur noch etwas die feinheiten ausfeilen, das sollte aber kein problem sein, insofern das javascript im browser über den selben funktionsumfang verfügt. dabei geht es zum beispiel um tausenderzahlen: 1.450,75 umrechnen und auch wieder in der form ausgeben etc.

aber vielen dank, hat mir echt geholfen die funktion!


als Antwort auf: [#196742]

InDesign Scripting Text einlesen/ausgeben

Martin Fischer
  
Beiträge gesamt: 12891

18. Nov 2005, 14:57
Beitrag # 8 von 11
Beitrag ID: #196766
Bewertung:
(20050 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> vielen dank, wenn ich die datei in den unterordner presets lege funktioniert es.
Hast Du darauf geachtet, daß im ES-Toolkit im Programmfenster "InDesign CS2" ausgewählt ist?

> dabei geht es zum beispiel um tausenderzahlen
Das darfst Du jetzt ausknobeln.
Aber denke daran, JavaScript nimmt den Punkt als Dezimalkomma!
Wir freuen uns auf die Veröffentlichung Deiner Lösung.


als Antwort auf: [#196760]
(Dieser Beitrag wurde von MartinF am 18. Nov 2005, 14:59 geändert)

InDesign Scripting Text einlesen/ausgeben

Steini1980
Beiträge gesamt: 11

18. Nov 2005, 16:17
Beitrag # 9 von 11
Beitrag ID: #196784
Bewertung:
(20036 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
...und hier ist auch schon das endergebnis:

Code
mySel = app.selection[0].contents.split(".").join("").split(",").join(".") // Inhalt der Auswahl; Komma wird ggf. durch Punkt ersetzt  
inEuro = parseFloat(mySel); // wandelt Inhalt der Auswahl (=string) in Zahl um (trennt ggf. enthaltene nichtnumerische Zeichen ab)

// Prüfen, ob eventuell nichts ausgewählt
if (isNaN(inEuro) == true){
alert ("Keine Zahl ausgewählt")
} else {
inCHF = umrechnungInCHF(inEuro); // Aufruf der Umrechnungsfunktion
inCHF = runden(inCHF); // Aufruf der Rundungsfunktion
outCHF = PreisFormat(inCHF); // Aufruf der Preisformatierung
// Auswahl wird ersetzt durch den umgerechneten Wert; Dezimalpunkt wird ggf. durch Komma ersetzt
app.selection[0].contents = (outCHF);
}

function umrechnungInCHF(inEuro){
myEuro2CHF_Kurs = 1.85;
myCHF = inEuro * myEuro2CHF_Kurs;
return myCHF;
}

function runden(inCHF) {

// Endergebnis unter 10 CHF - auf den nächsten Zehner runden!
if(inCHF <= 10) {
myCHF = Math.ceil(inCHF * 10);
myCHF = (myCHF / 10);
}
// Endergebnis unter 100 CHF - auf den nächsten Fünfziger runden!
else if (inCHF <= 100) {
if((inCHF - Math.floor(inCHF)) >= 0.5) {
myCHF = Math.ceil(inCHF);
} else {
myCHF = Math.floor(inCHF) + 0.5;
}
}
// Endergebnis über 100 CHF - auf die nächste Ganzzahl runden!
else {
myCHF = Math.ceil(inCHF);
}
return myCHF;
}

function PreisFormat(zahl) {
wert = parseInt(zahl * 100);
wert = wert / 100;
wert = wert.toFixed(2);

// Punkt durch Komma ersetzen
wert = wert.replace(/\./,",");

// Solange noch drei aufeinanderfolgende Ziffern gefunden werden
while(wert.match(/^(\d+)(\d{3}\b)/)){
// Tausendertrennzeichen einfügen
wert = wert.replace(/^(\d+)(\d{3}\b)/, RegExp.$1 + "." + RegExp.$2);
}
return wert;
}


wobei ich zubeben muss, die preisformat funktion kommt auch nicht von mir:-)


als Antwort auf: [#196766]

InDesign Scripting Text einlesen/ausgeben

Martin Fischer
  
Beiträge gesamt: 12891

18. Nov 2005, 16:43
Beitrag # 10 von 11
Beitrag ID: #196791
Bewertung:
(20027 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Steini,

wow, das sieht ja klasse aus.

Nur der Umrechnungsfaktor überrascht mich etwas.
Wo hast Du den her?
Schau mal hier: http://waehrungskurs.de/


als Antwort auf: [#196784]

InDesign Scripting Text einlesen/ausgeben

Steini1980
Beiträge gesamt: 11

18. Nov 2005, 18:54
Beitrag # 11 von 11
Beitrag ID: #196803
Bewertung:
(20018 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
den umrechnungsfaktor hab ich halt mal zum testen eingefügt, war zu faul den richtigen rauszusuchen.

bzw. hab ich den zwischenzeitlich mal abgeändert um zu sehen was passiert:-)


als Antwort auf: [#196791]
(Dieser Beitrag wurde von Steini1980 am 18. Nov 2005, 18:55 geändert)
X