[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Ein Objektformat ausschließlich auf alle Textrahmen anwenden

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

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

faxinger
Beiträge gesamt: 246

5. Apr 2017, 15:13
Beitrag # 1 von 12
Bewertung:
(5121 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, da ich vom Skripten keinen Tau habe - ich schnall es einfach nicht, bitte ich euch um eine kleine Gehhilfe:

Ich möchte ein Skript erstellen, das mir auf einem Bogen (Spread, da die Textrahmen noch anfangs auch auf der Montagefläche liegen)alle vorhandenen Textrahmen automatisch ein bestimmtes Objektformat zuweist.

Also:
1) Wähle alle vorhandenen Textrahmen aus (auch die auf der Montagefläche)
2) Weise das Objektformat A zu.


MeinAnsatz:
var myTextframes = app.activedocuments[0].textFrames;
var objStyle = myTextFrames.objectStyles.itemByName("Objektformat A");

Bitte um eure Hilfe.

Danke

(Dieser Beitrag wurde von faxinger am 5. Apr 2017, 15:31 geändert)
X

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

Martin Fischer
  
Beiträge gesamt: 12783

5. Apr 2017, 15:50
Beitrag # 2 von 12
Beitrag ID: #556814
Bewertung:
(5109 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ohne Skript geht das auch über die Suchen/Ersetzen Palette - Reiter Objekt:

Auf dem Druckbogen alles auswählen
Durchsuchen: Auswahl
Art: Textrahmen
Objektformat ersetzen: OF A

Muss es unbedingt per Skript sein?


als Antwort auf: [#556810]
(Dieser Beitrag wurde von Martin Fischer am 5. Apr 2017, 15:50 geändert)

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

Uwe Laubender
Beiträge gesamt: 5316

5. Apr 2017, 15:53
Beitrag # 3 von 12
Beitrag ID: #556816
Bewertung:
(5108 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,

im Prinzip bekommst Du das auch mit "Bordmitteln" hin.
InDesign kommt ja bereits mit vorgefertigten Skripten.

Eines davon:
SelectObjects.jsx

In InDesign das Menü
Fenster > Hilfsprogramme > Skripte aufrufen

Dort dann unter:
Anwendung > Samples > JavaScript
SelectObjects.jsx

Skript mit Doppelklick aufrufen.
Alle Optionen bis auf "Text Frames" abwählen.
OK geben.

Dann das gewünschte Objektformat zuweisen.

Das doofe mit SelectObjects.jsx ist allerdings seine Benutzeroberfläche.

Grundsätzlich sind erstmal alle Häkchen angeschaltet. Besser wäre es, wenn alle Häkchen grundsätzlich ausgeschaltet wären und Du nur einen Klick bräuchtest, um die Option "Text Frames" zu erhalten.

Aber auch das ist prinzipiell kein Problem.
Die Datei SelectObjects.jsx lässt sich editieren:

SelectObjects.jsx auswählen, dann das Kontextmenü aufrufen.
Mit "Skript bearbeiten" öffnet sich die ExtendScript Toolkit app, die mit jedem InDesign ausgeliefert wird und zeigt Dir den Programm-Code der Datei an.

In den Zeilen 37 bis 45 machst Du folgende Änderung:
Vorher:
true

Nachher:
false

Dann sichern und ExtendScript Toolkit schließen.
Die geänderte Fassung steht Dir in InDesign sofort zur Verfügung.


als Antwort auf: [#556810]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

faxinger
Beiträge gesamt: 246

5. Apr 2017, 16:21
Beitrag # 4 von 12
Beitrag ID: #556818
Bewertung:
(5083 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke für den Suchen ersetzen hinweis.

Ich wollte es halt mit einem Tastendruck erledigen, da diese Aufgabe immer wieder erledigt werden muss.

Daher wollte ich es auch über ein Skript lösen.

Mir fehlen leider Javascript-Kenntnisse.

Aber ich denke es müsste sich leicht per Skript umsetzen lassen.

danke


als Antwort auf: [#556810]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

faxinger
Beiträge gesamt: 246

5. Apr 2017, 16:25
Beitrag # 5 von 12
Beitrag ID: #556819
Bewertung:
(5083 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ja das Bordmittelskript kenn ich.

Ich möchte aber OHNE Dialog alles Textframes auswählen und sofort das Objektformat zuweisen.
Das Skript selbst wird mit einem Tastenkürzel belegt und somit ist mit einem Tastendruck allen Textrahmen das Objektformat zugewiesen.

LG
faxn


als Antwort auf: [#556816]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

Kai Rübsamen
Beiträge gesamt: 4684

5. Apr 2017, 19:22
Beitrag # 6 von 12
Beitrag ID: #556820
Bewertung:
(4977 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,

was du möchtest ist ein benutzerdefiniertes Skript. Auch wenn es schnell geschrieben ist, sollte der Skripter dafür eine kleine Vergütung erhalten.


als Antwort auf: [#556819]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

faxinger
Beiträge gesamt: 246

5. Apr 2017, 23:22
Beitrag # 7 von 12
Beitrag ID: #556822
Bewertung:
(4932 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich möchte kein fertiges Skript sondern eine Hilfestellung beim Erstellen.

Bisher habe ich probiert:
Code
var _auswahl = app.activeDocument.textFrames; 
var _OF = app.activeDocument.objectStyles.itemByName ("TEST");
_auswahl.appliedObjectStyle = _OF;


Aber leider bin ich damit auf dem Holzweg...
in der dritten Zeile stoppt das Skript.


als Antwort auf: [#556820]
(Dieser Beitrag wurde von faxinger am 5. Apr 2017, 23:23 geändert)

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

Ralf Hobirk
Beiträge gesamt: 5961

5. Apr 2017, 23:40
Beitrag # 8 von 12
Beitrag ID: #556824
Bewertung:
(4919 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich bin auch kein Scripter, aber vielleicht hilft dir das hier im Ansatz weiter:

Code
app.findGrepPreferences = null;  
app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = 'XXX';
app.findGrepPreferences.appliedParagraphStyle = 'XXX';
app.changeGrepPreferences.changeTo = 'XXX';
app.activeDocument.changeGrep();


Code
app.findTextPreferences = null;  
app.changeTextPreferences = null;
app.findTextPreferences.findWhat = 'XXX';
app.findTextPreferences.appliedParagraphStyle = 'XXX';
app.changeTextPreferences.changeTo = 'XXX';
app.activeDocument.changeText();


Das ist Suchen & Ersetzen in Javascript, allerdings nur für Text und GREP, nicht für "Objekt". Versuche mal, "Text" bzw. "Grep" durch "Object" zu ersetzen, und "appliedParagraphStyle" durch "appliedObjectStyle".

Ich habe leider jetzt keine Zeit, das selbst zu testen ;-)


als Antwort auf: [#556822]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

Uwe Laubender
Beiträge gesamt: 5316

6. Apr 2017, 07:37
Beitrag # 9 von 12
Beitrag ID: #556826
Bewertung:
(4794 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ faxinger ] Hallo,

ich möchte kein fertiges Skript sondern eine Hilfestellung beim Erstellen.

Bisher habe ich probiert:
Code
var _auswahl = app.activeDocument.textFrames; 
var _OF = app.activeDocument.objectStyles.itemByName ("TEST");
_auswahl.appliedObjectStyle = _OF;


Aber leider bin ich damit auf dem Holzweg...
in der dritten Zeile stoppt das Skript.


Nein, Du bist damit nicht auf dem Holzweg.
Dir fehlt nur eine kleine Ergänzung:

Code
var _auswahl = app.activeDocument.textFrames.everyItem(); 


Wenn Du Dich in das Thema everyItem() intensiv einlesen möchtest, empfehle ich Dir:

Marc Autret: On everyItem()
http://www.indiscripts.com/.../on-everyitem-part-1
http://www.indiscripts.com/.../on-everyitem-part-2


als Antwort auf: [#556822]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

faxinger
Beiträge gesamt: 246

6. Apr 2017, 11:06
Beitrag # 10 von 12
Beitrag ID: #556833
Bewertung:
(4710 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

vielen Dank.

Das war genau der Ansatz der mir gefehlt hat.

Mit dem Thema everyitem werde ich mich noch auseinander setzen.

Jetzt funkt es wunderbar.

Danke


als Antwort auf: [#556826]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

Uwe Laubender
Beiträge gesamt: 5316

6. Apr 2017, 12:00
Beitrag # 11 von 12
Beitrag ID: #556836
Bewertung:
(4685 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,
daüberhinaus musst Du Dich auch damit auseinandersetzen wie weitreichend das ist, was Du mit Deiner ersten Zeile adressierst.

Willst Du beispielsweise auch verankerte Textrahmen oder Textrahmen in Gruppen erreichen, nutzt Dir Dein kleines Codefragment erstmal nichts.

document.textFrames.everyItem() funktioniert nur in einer bestimmten Hierarchie-Stufe, nämlich auf der obersten Ebene. Alle Textrahmen, die unverschachtelt herumliegen. Also sich nicht innerhalb anderer Strukturen befinden.


als Antwort auf: [#556833]

Ein Objektformat ausschließlich auf alle Textrahmen anwenden

faxinger
Beiträge gesamt: 246

6. Apr 2017, 13:54
Beitrag # 12 von 12
Beitrag ID: #556840
Bewertung:
(4656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

danke für den Hinweis.

Aber eben genau für die einfache Situation in der ich viele Textrahmen lose auf meiner Montagefläche rumliegen habe brauche ich dieses Skript. Es sind dabei weder verankerte Textrahmen noch Textrahemn in Gruppen vorhanden.

LG
Faxn


als Antwort auf: [#556836]
X