[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Doppelte Lesezeichen löschen per Skript?

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

Doppelte Lesezeichen löschen per Skript?

Ad-Rock
Beiträge gesamt: 8

13. Jun 2018, 08:45
Beitrag # 1 von 10
Bewertung:
(2610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

ich suche nach einer Möglichkeit in einem InDesign-Dokument doppelte Lesezeichen (bzw. Textanker) zu erkennen und den ersten Eintrag stehen zu lassen und die nächsten gleichlautenden Lesezeichen zu löschen.

Hintergrund ist, dass die Lesezeichen aufgrund von Absatzformaten generiert werden und diese oftmals mehrere Seiten dieselbe Überschrift haben.

Gefunden habe ich dieses Skript, das löscht allerdings konsequent alle Lesezeichen:

Code
main(); 

function main () {
var mybookmarks =app.documents[0].bookmarks.everyItem();
var mybookmarkslen =app.documents[0].bookmarks.length;
alert("Deleting " + mybookmarkslen + " bookmarks from document.");
for (var i = 0; i < mybookmarkslen; i++) {
app.documents[0].bookmarks[i].remove();
}

}


Kann man das kleine Skript so modifizieren, dass es die Lesezeichen vergleicht und dann nur die doppelten Einträge löscht?

Danke für euer Feedback!

LG Sebastian
X

Doppelte Lesezeichen löschen per Skript?

Kai Rübsamen
Beiträge gesamt: 4620

13. Jun 2018, 10:46
Beitrag # 2 von 10
Beitrag ID: #564333
Bewertung:
(2590 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sebastian,

stell bitte ein kleines test-idml zur Verfügung.
Gruß Kai Rübsamen


als Antwort auf: [#564331]

Doppelte Lesezeichen löschen per Skript?

Ad-Rock
Beiträge gesamt: 8

13. Jun 2018, 12:16
Beitrag # 3 von 10
Beitrag ID: #564335
Bewertung:
(2574 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

gerne, vielen Dank für die Antwort! Hier die test-idml.

LG Sebastian


als Antwort auf: [#564333]
Anhang:
Überschriften-doppelteLesezeichen.idml (94.6 KB)

Doppelte Lesezeichen löschen per Skript?

Kai Rübsamen
Beiträge gesamt: 4620

13. Jun 2018, 16:54
Beitrag # 4 von 10
Beitrag ID: #564336
Bewertung:
(2553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hm! Es sieht so aus, als ob beim Löschen da einiges durcheinander kommt. Wenn das Lesezeichenpanel geöffnet ist, sieht es gut aus. Die Lesezeichen 4,5,7 gehen jedoch nicht mehr.

Führt man das Skript bei geschlossenem Panel aus, sieht man, dass bei 4,5,7 die Seite fehlt bzw. die Anker verrutscht sind.

Hat noch einer eine Idee?

Code
main();  

function main () {
var curDoc = app.activeDocument;
var allBms = curDoc.bookmarks.everyItem().getElements();
var nBMs = allBms.length;
var list = [];

for (var i = nBMs-1; i >= 1; i--) {
var curBm = allBms[i];
var prevBm = allBms[i-1];
if (curBm.name == prevBm.name) {
list.push(curBm.id);
}
}
for (i = list.length-1; i > 0; i--) {
curDoc.bookmarks.itemByID(list[i-1]).remove();
}
}

Gruß Kai Rübsamen


als Antwort auf: [#564335]

Doppelte Lesezeichen löschen per Skript?

Ad-Rock
Beiträge gesamt: 8

14. Jun 2018, 08:41
Beitrag # 5 von 10
Beitrag ID: #564337
Bewertung:
(2499 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Kai,

danke für deine Hilfe, bei mir verhält sich das Skript genau wie von dir beschrieben, das passt noch nicht ganz... Aber der Ansatz sieht schonmal klasse aus.

LG Sebastian


als Antwort auf: [#564336]

Doppelte Lesezeichen löschen per Skript?

Kai Rübsamen
Beiträge gesamt: 4620

14. Jun 2018, 14:51
Beitrag # 6 von 10
Beitrag ID: #564345
Bewertung:
(2480 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Schau dir noch mal dein Beispiel an. Hier haben schon manche Überschriften keinen Anker bzw. andere dann zwei. Bitte sauber bauen und nochmal schicken.
Gruß Kai Rübsamen


als Antwort auf: [#564337]

Doppelte Lesezeichen löschen per Skript?

Ad-Rock
Beiträge gesamt: 8

15. Jun 2018, 07:34
Beitrag # 7 von 10
Beitrag ID: #564352
Bewertung:
(2435 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Morgen Kai,

sorry, da stimmten wirklich eine Textanker nicht. Ich habe die Datei nochmal überarbeitet und jetzt verlinken alle Anker an die richtigen Stellen. Danke für den Hinweis!

Dein Skript funktioniert mit der "sauberen" Datei fast, nur Textanker "Überschrift3" bleibt doppelt stehen...
Hast du noch eine Idee, woran das liegen könnte?

LG Sebastian


als Antwort auf: [#564345]
Anhang:
Überschriften-doppelteLesezeichen-15062018.idml (93.8 KB)

Doppelte Lesezeichen löschen per Skript?

Uwe Laubender
Beiträge gesamt: 4388

15. Jun 2018, 12:10
Beitrag # 8 von 10
Beitrag ID: #564367
Bewertung:
(2411 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sebastian,
teste mal unten stehendes Skript mit einem leicht anderen Ansatz. Die Skriptaktion kann mit einem Undo rückgängig gemacht werden.

Code
/** 
* @@@BUILDINFO@@@ RemoveBookmarksWithSameName-Uwe-Laubender.jsx !Version! Fri Jun 15 2018 12:02:00 GMT+0200
*/

/*
Keep the first bookmark that is with a distinct name.
Remove all following ones with the same name.
*/

app.doScript
(

main,
ScriptLanguage.JAVASCRIPT,
[],
UndoModes.ENTIRE_SCRIPT,
"Remove bookmarks that follow with the same name | Uwe | SCRIPT"

);


function main(){

if( app.documents.length == 0 ){ return };
if( app.documents[0].bookmarks.length == 0 ){ return };

var doc = app.documents[0];
var bookmarks = doc.bookmarks.everyItem().getElements();
var bookmarksLength = bookmarks.length;

var uniqueNames = [] ;
var toRemoveByID = [] ;

for( var n=0;n<bookmarksLength;n++ )
{
if( uniqueNames[ bookmarks[n].name ] == null )
{
uniqueNames[ bookmarks[n].name ] = bookmarks[n].id;
}
};

for( var n=0;n<bookmarksLength;n++ )
{
var currentValue = uniqueNames[ bookmarks[n].name ];
if( currentValue == bookmarks[n].id ){ continue };

toRemoveByID.push( bookmarks[n].id );
};

for( var n=0;n<toRemoveByID.length;n++ )
{
doc.pageItems.itemByID( toRemoveByID[n] ).remove();
};

};


Gruß,
Uwe
*****
Mit herzlichem Gruß,
Uwe Laubender


als Antwort auf: [#564352]

Doppelte Lesezeichen löschen per Skript?

Ad-Rock
Beiträge gesamt: 8

15. Jun 2018, 14:40
Beitrag # 9 von 10
Beitrag ID: #564372
Bewertung:
(2399 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

die ersten Tests waren erfolgreich, das Skript hat bei 3 zufällig ausgewählten Dateien zuverlässig die doppelten Lesezeichen gelöscht.

Ich werde über das Wochenende noch weitere Tests machen und mich hier am Montag erneut melden.

Bereits jetzt vielen Dank!

LG Sebastian


als Antwort auf: [#564367]

Doppelte Lesezeichen löschen per Skript?

Ad-Rock
Beiträge gesamt: 8

19. Jun 2018, 09:58
Beitrag # 10 von 10
Beitrag ID: #564409
Bewertung:
(2007 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

sorry für die späte Rückmeldung. Das zuletzt gepostete Skript funktioniert wunderbar, vielen Dank für die prompte Hilfe hier!

LG Sebastian


als Antwort auf: [#564372]
X

Aktuell

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
22.05.2019 - 23.05.2019

Effiziente Medienproduktion mit InDesign und Photoshop

München
Mittwoch, 22. Mai 2019, 09.30 Uhr - Donnerstag, 23. Mai 2019, 17.30 Uhr

Schulung, Seminar

Wie arbeiten Sie mit Colormanagement in InDesign? Wie gelangen Sie rascher zu einer flexiblen Dateivorlage? Welche Prozesse im Umgang mit Texten, Bildern oder Tabellen lassen sich eleganter gestalten, welche automatisieren? Wir zeigen Ihnen, wie Sie mit Profiwerkzeugen für Typo und Layout deutlich schneller und effizienter arbeiten können – auch im Team und mit Kunden!

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/zweitaegige-weiterbildung-zum-next-generation-publisher/

Zweitägige Weiterbildung zum Next Generation Publisher
Veranstaltungen
23.05.2019

München
Donnerstag, 23. Mai 2019, 09.30 Uhr

Schulung, Seminar

Die Schulung richtet sich an erfahrene Designer/-innen und PrePress-Profis, die mit InDesign CS6 oder CC arbeiten. Wir zeigen Ihnen, wie Sie mit Profiwerkzeugen für Typo und Layout deutlich schneller und effizienter arbeiten können – auch im Team und mit Kunden! Wertvolle Tipps aus der Praxis runden die Schulung ab, damit Sie auf anspruchsvolle Aufgaben eine Antwort mit InDesign kennen.

Ja

Organisator: Cleverprinting.de

https://www.cleverprinting.de/schulungen/indesign-schulung-next-generation/

InDesign Schulung für Fortgeschrittene
Hier Klicken