//UnbenutztesEntfernen_502d.js //© 05.08.14 / Hans Haesler, Ch‰telard 52, CH-1018 Lausanne / hsa@ringier.ch //DESCRIPTION:Objekte, Formate, Farbfelder entfernen // vorbeugenderweise das Anzeigen von Dialogen aktivieren function cleanupDocument() { app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; if (app.documents.length == 0) { alert ("Es ist kein Dokument offen.", "Achtung"); exit(); } // die Programmversion feststellen var appVers = app.version[0]; if (!appVers > 6) { if (appVers == 4) { alert ("FŸr InDesign CS2\nbitte die entsprechende Version des Scripts benutzen.", "Achtung"); } else if (appVers == 5) { alert ("FŸr InDesign CS3\nbitte die entsprechende Version des Scripts benutzen.", "Achtung"); } else if (appVers == 6) { alert ("FŸr InDesign CS4\nbitte die entsprechende Version des Scripts benutzen.", "Achtung"); } else { alert ("Dieses Script nur ab InDesign CS5 benutzen.", "Achtung"); } exit(); } // aktuelles Dokument var curDoc = app.documents[0]; // Objekte ausserhalb der Seiten entfernen //////////////////////////////////////////////////////// // die Ebenen entsperren (falls notwendig) var lockList = new Array(); var layrLock = curDoc.layers.everyItem().locked; for (var i=0; i-1; n--) { // wenn 'parentPage' leer ist ... if (allParents[n] == null) { // das Objekt vorsorglich entsperren curDoc.pageItems[n].locked = false; // und entfernen try { curDoc.pageItems[n].remove(); objCtr++; } catch (e) { } } } // die Ebenen wieder sperren (falls notwendig) for (var i=0; i0) { try { allStyles = allStories[i].paragraphs.everyItem().appliedParagraphStyle; nStyles = allStyles.length; for (var s=0; s-1; p--) { curPName = allParaNames[p]; if (!isInArray(curPName, pGroupLists[i])) { try { if (i==0) { curDoc.paragraphStyles[p].remove(); pCtr++; } else { curDoc.paragraphStyleGroups[i-1].paragraphStyles[p].remove(); pCtr++; } } catch (e) { } } } } // die Liste der Zeichenformate, welche als "Basiert auf" eingetragen sind, erstellen var allCharStyles, nCharStyles; var curCName, cg; for (var i=0; i<(nCSG+1); i++) { allCharStyles = csLists[i]; var nCharStyles = allCharStyles.length; for (var c=0; c0) { try { allCharStyles = allStories[i].textStyleRanges.everyItem().appliedCharacterStyle; nStyles = allCharStyles.length; for (var s=0; s-1; c--) { curName = allCharNames[c]; if (!isInArray(curName, cGroupLists[i])) { try { if (i==0) { curDoc.characterStyles[c].remove(); cCtr++; } else { curDoc.characterStyleGroups[i-1].characterStyles[c].remove(); cCtr++; } } catch (e) { } } } } // leere Absatzformat-Ordner lšschen for (var p=nPSG-1; p>-1; p--) { var nGroups = paraGroups[p].paragraphStyleGroups.length; if (nGroups > 0) { continue; } var nStyles = paraGroups[p].paragraphStyles.length; if (nStyles == 0) { paraGroups[p].remove(); } } // leere Zeichenformat-Ordner lšschen for (var c=nCSG-1; c>-1; c--) { var nGroups = charGroups[c].characterStyleGroups.length; if (nGroups > 0) { continue; } var nStyles = charGroups[c].characterStyles.length; if (nStyles == 0) { charGroups[c].remove(); } } // unbenutzte Farbfelder entfernen //////////////////////////////////////////////////////////////// // die Liste der unbenutzten Farbfelder aufstellen var uuSwatches = curDoc.unusedSwatches; var sCtr = 0; // eine Schleife durch die unbenutzten Farbfelder; // nur lšschen wenn ein Name vorhanden ist for (var s=uuSwatches.length-1; s>-1; s--) { if (uuSwatches[s].name != "") { try { uuSwatches[s].remove(); sCtr++; } catch (e) { } } } // den Benutzer benachrichtigen /////////////////////////////////////////////////////////////////// if (objCtr == 0) { alert ("Keine Objekte entfernt.", "Fertig"); } else if (objCtr == 1) { alert ("Ein einziges Objekt entfernt.", "Fertig"); } else { alert ("Entfernte Objekte: " + objCtr, "Fertig"); } var totCtr = pCtr + cCtr; if (totCtr == 0) { alert ("Keine Formate gelšscht.", "Fertig"); } else { if (totCtr == 1) { if (pCtr == 1) { alert ("Ein Absatzformat gelšscht.", "Fertig"); } else { alert ("Ein Zeichenformat gelšscht.", "Fertig"); } } else { alert ("Gelšschte Formate:\t" + totCtr + "\n\nAbsatzformate:\t\t" + pCtr + "\nZeichenformate:\t" + cCtr, "Fertig"); } } if (sCtr == 0) { alert ("Keine Farbfelder gelšscht.", "Fertig"); } else if (sCtr == 1) { alert ("Ein einziges Farbfeld gelšscht.", "Fertig"); } else { alert ("Gelšschte Farbfelder: " + sCtr, "Fertig"); } /////////////////////////////////////////////////////////////////////////////////////////////////// // die Funktion, welche prŸft, ob sich das aktuelle Element schon in der Liste befindet function isInArray(curName, curArray) { for (var a=0; a