Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign » leere Felder füllen

leere Felder füllen

max.wien
Beiträge gesamt: 67

13. Mär 2014, 21:39
Bewertung:

gelesen: 5609

Beitrag als Lesezeichen
Liebe Kollegen und Kolleginnen, ich bearbeite eine Tabelle mit ca. 3000 Zeilen und unzähligen Feldern. Viele dieser Felder sind auch leer, und diese möchte ich mit einem einfachen Strich füllen.
Gibt es eine einfache Möglichkeit dies zu tun?
(Indesign CS3 (sic), Apple)

Vielen Dank
Markus
max.wien


CS3-CS6 Mac, iMac, Macbook pro, iPad

leere Felder füllen

Ralf Hobirk
Beiträge gesamt: 5961

13. Mär 2014, 22:01
Bewertung:

gelesen: 5603

Beitrag als Lesezeichen
Hallo Markus,

Martin Fischer hat mir solch ein Script vor zwei Jahren geschrieben:

Code
// FillCellsWithEmDash.jsx 
// by Martin Fischer

//DESCRIPTION: Füllt leere Tabellenzellen mit einem Geviertstrich

var d = app.documents.firstItem();
for (var s = 0; s < d.stories.length; s++)
{
for (var t = 0; t < d.stories.item(s).tables.length; t++)
{
for (var c = 0; c < d.stories.item(s).tables.item(t).cells.length; c++)
{
var _content = d.stories.item(s).tables.item(t).cells.item(c).texts.firstItem().contents;
if (_content.replace(/\s+/g,'') == '')
{
d.stories.item(s).tables.item(t).cells.item(c).texts.firstItem().contents = '\u2014';
}
}
}
}


Das "\u2014" in Zeile 16 steht für einen Geviertstrich (m-dash) und kann auch gegen ein anderes Zeichen ausgetauscht werden. Viel Spaß damit!

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

leere Felder füllen

max.wien
Beiträge gesamt: 67

14. Mär 2014, 09:18
Bewertung:

gelesen: 5519

Beitrag als Lesezeichen
Hallo Ralf, vielen Dank!

Hat wunderbar geklappt, dauerte zwar fast 2 Stunden, wollte schon aufgeben, aber habe durchgehalten.

Großer Dank an Dich und Martin Fischer

LG aus Wien
Markus
max.wien


CS3-CS6 Mac, iMac, Macbook pro, iPad

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

14. Mär 2014, 11:38
Bewertung:

gelesen: 5486

Beitrag als Lesezeichen
Hallo Markus,

rein interessehalber …

Kannst Du mal prüfen, ob's mit folgendem Skriptle schneller gegangen wäre?

Code
var _err = []; 

app.findGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = '^[ ~s~S\\t]*\\z';

var r = app.documents.firstItem().findGrep();

app.findGrepPreferences = NothingEnum.nothing;

for (var i = 0; i < r.length; i++)
{
try
{
if (r[i].parent.constructor.name == 'Cell' && r[i].parent.pageItems.length == 0 && r[i].parent.tables.length == 0)
r[i].parent.contents = '–';
}
catch(e)
{
_err.push (i + ': ' + e);
}
}

if (_err.length > 0)
alert('Achtung!\n' + _err.join('\n'));
else
alert('Fertig');


Viele Grüße
Martin


leere Felder füllen

max.wien
Beiträge gesamt: 67

14. Mär 2014, 13:42
Bewertung:

gelesen: 5446

Beitrag als Lesezeichen
Hallo Martin,

mach ich sehr gerne, aber ich kann das Script aber nicht speichern: E/A-Fehler: I/O-Fehler
(kenne mich zuwenig damit aus um den Fehler zu beheben)

LG Markus
max.wien


CS3-CS6 Mac, iMac, Macbook pro, iPad

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

14. Mär 2014, 14:06
Bewertung:

gelesen: 5430

Beitrag als Lesezeichen
Hallo Markus,

wenn Du das Skript genauso speicherst wie das erste, das funktioniert und Dich zwei Stunden vom Rechner verbannt hat, dann kommst Du zum Ziel. ;-)

Kopier Dir den Code in einen Texteditor und sichere das Skript als 'nur Text' (nicht RTF o.ä.) mit einem Dateinamen, der auf .jsx endet.

Das Skriptverzeichnis (der Ort, wo's abgelegt werden soll) kannst Dir im Finder anzeigen lassen indem Du in der Skriptpalette ein Skript markierst und über das Kontextmenü (CTRL – Maus-Taste) 'Im Finder anzeigen' wählst.

Viele Grüße
Martin


leere Felder füllen

max.wien
Beiträge gesamt: 67

14. Mär 2014, 16:35
Bewertung:

gelesen: 5369

Beitrag als Lesezeichen
Hallo Martin,

tut mir leid, aber das Script tut nix.
Es meldet in der Sekunde fertig, aber nichts passiert. Ich schließe einen Anwendungsfehler natürlich nicht aus...

LG aus Wien
Markus
max.wien


CS3-CS6 Mac, iMac, Macbook pro, iPad

leere Felder füllen

Ralf Hobirk
Beiträge gesamt: 5961

14. Mär 2014, 17:32
Bewertung:

gelesen: 5330

Beitrag als Lesezeichen
Läuft bei mir einwandfrei, gerade spaßeshalber getestet.

---
Viele Grüße,
Ralf
---
iMac i7 (18,3) 4,2 GHz, 32 GB 10.15.7 Catalina | MacBook Pro 15" (8,2) 2,0 GHz, 16 GB, 10.13.6 High Sierra | Mac Mini (6,1) als Server 2,5 GHz, 8 GB, 10.13.6 High Sierra | CC 2021 (ID 16.3.2)

leere Felder füllen

max.wien
Beiträge gesamt: 67

14. Mär 2014, 21:53
Bewertung:

gelesen: 5238

Beitrag als Lesezeichen
tja, finde meinen Fehler nicht.
Mehrmals neu gespeichert und getestet, und nix passiert...

LG aus Wien
max.wien


CS3-CS6 Mac, iMac, Macbook pro, iPad

leere Felder füllen

WernerPerplies
Beiträge gesamt: 2762

14. Mär 2014, 22:48
Bewertung:

gelesen: 5210

Beitrag als Lesezeichen
Probieren Sie mal Folgendes:

Download von fillEmptyTableCells.zip, entpacken in das Skriptpanel und starten.

Damit sollte ein Speicherfehler ausgeschlossen sein.

Außerdem habe ich das Skript noch um eine Fehlerbehandlungsmethode ergänzt.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

16. Mär 2014, 07:26
Bewertung:

gelesen: 5081

Beitrag als Lesezeichen
Hallo Max,

mit welcher Indesign-Version hast Du das Skript getestet?
In CS3 funktioniert der GREP-Ausdruck '^[ ~s~S\t]*\z' in Tabellenzellen nicht.

\z steht für die Position Textabschnittsende (im Gegensatz zu \Z ggf. nach der letzten Absatzmarke).

In CS3 (und höher) wird damit das Ende eines Textabschnitts gefunden.
Ab CS4 wird damit auch das Ende des Textes in einer Tabellenzelle gefunden.
In CS3 funktioniert das noch nicht.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 16. Mär 2014, 08:16 geändert)

leere Felder füllen

WernerPerplies
Beiträge gesamt: 2762

16. Mär 2014, 10:13
Bewertung:

gelesen: 5050

Beitrag als Lesezeichen
Guten Morgen Herr Fischer,

ich habe die Datei im obigen Link entsprechend angepasst.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

16. Mär 2014, 11:44
Bewertung:

gelesen: 5025

Beitrag als Lesezeichen
Hallo Herr Perplies,

und jetzt funktioniert's auch unter CS3?
Das muß ich mir mal ansehen.

---
edit: Mit '^[ ~s~S\\t]*' wird der Halbgeviertstrich doch überall eingefügt, nicht nur in den leeren Zellen. Kann's grad nicht testen, aber ich habe meine Zweifel an dieser Lösung.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 16. Mär 2014, 11:51 geändert)

leere Felder füllen

WernerPerplies
Beiträge gesamt: 2762

16. Mär 2014, 11:48
Bewertung:

gelesen: 5020

Beitrag als Lesezeichen
Hallo Herr Fischer,

Zitat und jetzt funktioniert's auch unter CS3?


Ich habe es nur mit einer einfachen leeren Tabelle ausprobiert:

Ohne Änderung:
Keine Fehlermeldung, kein Füllen.
Mit Änderung:
Felder werden gefüllt.

Andere Nebeneffekte kann ich natürlich nicht ausschließen.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

16. Mär 2014, 11:53
Bewertung:

gelesen: 5016

Beitrag als Lesezeichen
Antwort auf: Andere Nebeneffekte kann ich natürlich nicht ausschließen.


Was passiert in einer Zelle mit Text/Inhalt??

Freilich könnte man in einem zweiten Durchgang alle Halbgeviertstriche am Anfang einer Zelle, auf die ein Zeichen folgt, wieder löschen. Man müsste vielleicht noch darauf achten, dass der Stich ggf. nach einer Absatz- oder Zeilenschaltung stehen bleiben muss.

Sinn der Übung war festzustellen, ob die Suchen-Einfügen Methode bei großen Tabellen schneller funktioniert als eine Schleife durch alle Tabelllen und Zellen.
Zumindest mir ging es nicht um die Lösung selbst, sondern um eine Skizze.

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 16. Mär 2014, 12:02 geändert)

leere Felder füllen

WernerPerplies
Beiträge gesamt: 2762

16. Mär 2014, 11:58
Bewertung:

gelesen: 3149

Beitrag als Lesezeichen
Ko! ;-)
ich habe Ihren Ausdruck nicht weiter untersucht.
Da muss ich wohl noch einen weiteren Blick draufwerfen.
Sorry!

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

leere Felder füllen

WernerPerplies
Beiträge gesamt: 2762

16. Mär 2014, 14:15
Bewertung:

gelesen: 3121

Beitrag als Lesezeichen
Hallo Herr Fischer,

ich habe jetzt eine Version hochgeladen, die bei mir mit CS3 und CS6 funktioniert.

Die Version unter CS3 wird vermutlich langsamer sein.

fillEmptyTableCells.zip

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

16. Mär 2014, 14:53
Bewertung:

gelesen: 3105

Beitrag als Lesezeichen
Es wäre für mich einfacher, Sie würden den Code direkt in der Nachricht posten.
Aber ich kann mir morgen auch die ZIP-Datei runterladen und einen Blick reinwerfen.

Einen angenehmen Sonntag
Martin Fischer

leere Felder füllen

max.wien
Beiträge gesamt: 67

20. Mär 2014, 22:07
Bewertung:

gelesen: 2999

Beitrag als Lesezeichen
Hallo Martin,

entschuldigung für meine späte Antwort, Grippe, aber habe jetzt alles durchgetestet: in CS3 funktioniert dein Script leider nicht, in CS6 funktioniert das Sript perfekt und schnell. (CC noch nicht getestet)

Vielen Dank nochmal

Grüsse aus Wien
Markus
max.wien


CS3-CS6 Mac, iMac, Macbook pro, iPad

leere Felder füllen

Kai Rübsamen
  
Beiträge gesamt: 4684

14. Mai 2014, 18:36
Bewertung:

gelesen: 2799

Beitrag als Lesezeichen
Hallo Martin,

ich hab mal zwei, drei Verständnisfragen:

1. Warum braucht es denn in deiner letzten Version try/catch? Was könnte da passieren?
2. Warum braucht es drei Fragen im if-Statement und es reicht nicht nur die erste?
3. Gibt es bei dir einen Unterschied zwischen \z und \Z ? In der Praxis (also nicht in der Theorie ;-) ) erzeugen beide BEI MIR das gleiche Ergebnis und ich erinnere mich dunkel, dass \z manchmal nicht funktioniert.

Danke.

In CC funktioniert bei mir folgende Variante:

Code
app.findGrepPreferences = null; 
app.findGrepPreferences.findWhat = "^\\s*\\z";

var allFounds = app.activeDocument.findGrep();

app.findGrepPreferences = null;

for ( var i = 0; i < allFounds.length; i++ ) {
var curFound = allFounds[i];
if ( curFound.parent.constructor.name == "Cell" )
curFound.parent.contents = "\u2014";
}


Gruß Kai Rübsamen

leere Felder füllen

Uwe Laubender
Beiträge gesamt: 5319

14. Mai 2014, 18:56
Bewertung:

gelesen: 2794

Beitrag als Lesezeichen
Hallo, Max!
Also bei mir funktioniert Werners Script in CS3 v5.0.4 auf Mac OSX 10.6.8.
Vielleicht gibt's ja bei Dir "Stellen", die vermeintlich leer sind, aber irgendwelche Sonderzeichen enthalten, die so erstmal nicht sichtbar sind?
*****
Mit herzlichem Gruß,
Uwe Laubender

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

15. Mai 2014, 07:30
Bewertung:

gelesen: 2726

Beitrag als Lesezeichen
Hallo Kai,

Antwort auf: 1. Warum braucht es denn in deiner letzten Version try/catch? Was könnte da passieren?

Wenn ich weiß, was unter welchen Umständen passieren kann, versuche ich dies gezielt abzufangen.
Wenn ich mir unsicher bin, ob ich eine mögliche Fehlerquelle übersehen haben könnte, versuche ich mir darüber mit einem vorbereiteten Fehlerprotokoll ein Bild zu verschaffen.
Im obigen Beispiel könnte die try-catch Routine vermutlich entfallen.
Mir fällt immer noch keine Fehlerquelle dafür ein.


Antwort auf: 2. Warum braucht es drei Fragen im if-Statement und es reicht nicht nur die erste?

Über die Suche werden Tabellenzellen gefunden, die keine Zeichen enthalten.
Dabei werden m.W. aber auch Tabellenzellen mit verankerten Objekten (Textrahmen oder Graphiken) oder Tabellen gefunden. Wenn solche in der Zelle vorhanden sind, ist die Zelle nicht leer.
Für (meine angenommene) Definition einer leeren Zelle reicht die Bestimmung einer Tabelle ohne Text nicht aus. Es darf auch nix anderes mehr enthalten sein.


Antwort auf: 3. Gibt es bei dir einen Unterschied zwischen \z und \Z ? In der Praxis (also nicht in der Theorie ;-) ) erzeugen beide BEI MIR das gleiche Ergebnis und ich erinnere mich dunkel, dass \z manchmal nicht funktioniert.

Bin mir nicht ganz sicher.
Möglicherweise verhalten sich innerhalb von Tabellenzellen beide Zeichen gleich.
Aber bei Textabschnitten besteht m.W. ein Unterschied, ob der Textabschnitt mit einer Absatzschaltung (mit nix dahinter) oder einfach mit einem Zeichen abschließt.
Bei \z ist das Textabschnittsende ggf. nach dem letzten Return.
Bei \Z wird das Return nicht mehr mitgerechnet.

Versuch' mal herauszufinden, ob sich der Index der Fundstellen (Einfügepunkt) bei der Suche nach \z und \Z in einem Textabschnitt, der mit RETURN endet, tatsächlich unterscheiden.

Oder zähle die Anzahl der Zeichen/Insertionpoints vom Anfang des Textabschnitts bis zu dessen mit \z bzw. \Z ermittelten Ende.

Findest Du einen Unterschied?

Viele Grüße
Martin



(Dieser Beitrag wurde von Martin Fischer am 15. Mai 2014, 07:32 geändert)

leere Felder füllen

Kai Rübsamen
  
Beiträge gesamt: 4684

15. Mai 2014, 09:59
Bewertung:

gelesen: 2683

Beitrag als Lesezeichen
Hallo Martin,

danke für die Erklärungen. Ob ich da einen Unterschied finde, kann ich leider erst heute Abend testen. Ich nehme an, ich soll es per Skript auslesen? Aus der Erinnerung heraus markiert \z und \Z im UI dieselbe Position.

Gruß Kai Rübsamen

leere Felder füllen

Martin Fischer
  
Beiträge gesamt: 12783

15. Mai 2014, 12:38
Bewertung:

gelesen: 2655

Beitrag als Lesezeichen
Antwort auf: Aus der Erinnerung heraus markiert \z und \Z im UI dieselbe Position.


... prüfe mal \Z in einer Tabellenzelle, in welcher der letzte Absatz mit einer Absatzschaltung endet. ;-)

Viele Grüße
Martin


leere Felder füllen

Uwe Laubender
Beiträge gesamt: 5319

15. Mai 2014, 13:24
Bewertung:

gelesen: 2630

Beitrag als Lesezeichen
Hallo, Martin!

Ja. Das ist schon interessant… Gut zu wissen!
Überspringt Zellen, die mit \r oder \n enden.

Gibt's noch Zeichen, die das auslösen?
*****
Mit herzlichem Gruß,
Uwe Laubender