4 Replies Latest reply on Sep 24, 2015 9:31 PM by Laubender

    Zellenbreite in Tabelle anpassen

    klaus-peter-AfS

      Hallo im Forum, bin neu hier und leider auch kein Scripter, aber begeisterter Anwender.

      Ich suche nach einem Script, das alle Spalten einer ausgewählten Tabelle durchläuft.

      Das sollte doch hinreichend schnell gehen, da mir die Aussage, dass Scripte, die alle Zellen durchlaufen, unendlich langsam seien, noch im Ohr klingt.

      Gäbe es da eines, das ich mir ansehen, dabei lernen und anpassen kann?

      JS oder VB wäre egal.

       

      Gruß Klaus

        • 1. Re: Zellenbreite in Tabelle anpassen
          Laubender Adobe Community Professional & MVP

          Hallo Klaus,

           

          was das Scripten von InDesign mit ExtendScript angeht, solltest Du Dir vielleicht Gerald Singelmanns Videogrundkurs reinziehen.

          Ob JS oder VB ? Ich würde mich auf ExtendScript (JavaScript) stürzen, denn das ist auf Macs wie PCs lauffähig.

           

          Nun zu Deinem Problem.

          Ein Script, das die Breiten der Tabellenspalten "anpasst".

          "Anpasst" an welche Werte?

           

          Hier ein ExtendScript-Beispiel, das einer ausgewählten Tabelle für jede Tabellenspalte genau einen Wert zuweist:

           

          app.selection[0].columns.everyItem().width = "20 mm";
          

           

           

          Das kann funktionieren, muss aber nicht.

          Tabellen sind manchmal etwas störrisch.

           

          Was aber sicher funktioniert ist eine Schleife durch alle Tabellenspalten der ausgewählten Tabelle und die Zuweisung eines Wertes für die Breite jeder einzelnen Spalte:

           

          for(var n=0;n<app.selection[0].columns.length;n++)
          {
          
              app.selection[0].columns[n].width = "20 mm";
          
          };
          

           

          Beide Skripte setzen voraus, dass auch wirklich die Tabelle ausgewählt ist.

          Also nicht eine Tabellenzelle.

          Auch nicht der Textrahmen, der die Tabelle enthält oder sonst irgendetwas anderes.

          Ist die Tabelle nicht ausgewählt, wirst Du eine Fehlermeldung ernten.

           

          Falls Du noch nichts über die Syntax von JavaScript weisst, solltest Du Dich parallel zum Pröbeln mit ExtendScript dazu schlau machen.

          Wie ist die Punktnotation zu benutzen? Was sind Schleifen, was Methoden, was Funktionen, was sind Eigenschaften und Werte, was sind Objekte, wie sind verschiedene Arten von Daten zu unterscheiden? Wie ist das in ExtendScript umgesetzt. Was sind da die Eigenheiten? Sammlungen (Collections) vs. Arrays etc.pp.

           

          Uwe

          • 2. Re: Zellenbreite in Tabelle anpassen
            Laubender Adobe Community Professional & MVP

            Und wenn's ein Buch als Grundlage sein soll, dann nimm "InDesign automatisieren" von Gregor Fellenz. Die 2. Auflage des Werks ist erst unlängst erschienen.

            Viel Spaß beim Skripten. Aber Obacht. Das kann "süchtig" machen.

             

            Uwe

            • 3. Re: Zellenbreite in Tabelle anpassen
              klaus-peter-AfS Level 1

              Hallo Uwe, danke sehr für Deine Hilfe.

              Im HDS-Forum ist mir ein Script von G. Singelmann empfohlen worden, das die Spaltenbreite für jede Spalte der Tabelle einstellt.

              Das war genau das, was ich suchte, denn die Einstellung war speicherbar und für die nächste gleichartige Tabelle  wieder aufrufbar.

              Das funktioniert leider nicht für das nächste Dokument, denn der Speicherort ist [Kein Tabellenformat] und das bekomme ich nicht in das nächste Dokument geladen.

              Also wollte ich dafür deine Scriptempfehlung verwenden und scheitere - natürlich - als Laie.

              Ich habe Deine Schleife im ESTK ins Laufen gebracht und wollte jetzt variable Spaltenbreiten über ein Array verwenden:

              var mycol = [ '27 mm', '4,5 mm', '4,5 mm', '9 mm', '7,5 mm', '6 mm', '1,5 mm',  '7,5 mm', '1,5 mm',  '7,5 mm', '1,5 mm',  '7,5 mm', '1,5 mm', '1,5 mm' ]

              for(var n=0;n<app.selection[0].columns.length;n++) 

                  app.selection[0].columns[n].width = mycol [n]; 

              }; 

              Das variable Ersetzen scheitert an der Fehlermeldung, dass das nicht der erforderliche (Daten-)Typ sei.

              Kannst Du mir bitte noch mal auf die Sprünge helfen?

               

              Gruß Klaus

              • 4. Re: Zellenbreite in Tabelle anpassen
                Laubender Adobe Community Professional & MVP

                Hallo Klaus,

                ohne jetzt genauer zu schauen, aber Du solltest Dir wirklich die Grundlagen von JavaScript (ExtendScript) aneignen.

                 

                Werte wie 4,5 werden als 4.5 geschrieben (englische Schreibweise). Die Schreibweise von Kommazahlen wird nicht lokalisiert, auch wenn Du mit einer deutschen Version arbeitest.
                Falls Du Dein InDesign mit der Einstellung "Millimeter" betreibst, kannst Du auch ohne Strings im Array arbeiten. Nur mit reinen Zahlen.

                 

                Meine Zeit ist gerade sehr knapp. Das nur als Hinweis.

                 

                Uwe