[GastForen Programme Print/Bildbearbeitung Adobe InDesign

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

script seiten entfernen

Hans Haesler
Beiträge gesamt: 5826

28. Okt 2018, 20:55
Bewertung:

gelesen: 10706

Beitrag als Lesezeichen
Hallo Leute,

beim privaten Austausch mit Armin wurden meine Vermutungen bestätigt:
– Wenn die erste Seite nicht "XX,XX" enthält, sondern einen Euro-Betrag: Die zweite Seite entfernen.
– Das Dokument besteht aus mehr als zwei Seiten. Wieviel? Deren 600 !!!...

Als hiess es, das Script ergänzen. Eine gebrauchsfertige Datei ist unten angehängt.

Code
//SeitenEntfernen_02d.js 
//© 28.10.2018 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Markierte Seiten entfernen

// vorbeugenderweise das Anzeigen von Dialogen aktivieren
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

// testen, ob ein Dokument geöffnet ist
if (app.documents.length == 0) {
alert ("Es ist kein Dokument offen.", "Achtung");
exit();
}

// aktuelles Dokument
var curDoc = app.documents[0];

// die Suchen/Ersetzen-Vorgaben zurücksetzen
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

// zuerst die "XX,XX" //////////////////////////////////////////////
// das Suchmuster vorbereiten
app.findTextPreferences.findWhat = "XX,XX";

// die Vorkommen finden und zählen
var allFound = curDoc.findText();
var nFound = allFound.length;
var namesArr = [];

// eine Schleife durch die Vorkommen und die Seitennamen auflisten
for (var n=0; n<nFound; n++) {
var curName = allFound[n].parentTextFrames[0].parentPage.name;
var isInArr = checkName(namesArr, curName);
if (!isInArr) {
namesArr.push(curName);
}
}

// den Array sortieren ...
namesArr.sort(numSort);
// ... umkehren ...
namesArr.reverse();
// ... und zählen
var nNames = namesArr.length;

// die Seiten entfernen
for (var p=0; p<nNames; p++) {
try {
curDoc.pages.itemByName(namesArr[p]).remove();
}
catch (e) {
}
}

// und nun die Seiten mit einem Betrag /////////////////////////////
// das Suchmuster vorbereiten
app.findGrepPreferences.findWhat = "[0-9]+,[0-9]{2}";

// die Vorkommen finden und zählen
var allFound = curDoc.findGrep();
var nFound = allFound.length;
var namesArr = [];

// eine Schleife durch die Vorkommen und die Seitennamen auflisten
for (var n=0; n<nFound; n++) {
var curName = allFound[n].parentTextFrames[0].parentPage.name;
var nxtName = ""+((curName*1)+1);
var isInArr = checkName(namesArr, nxtName);
if (!isInArr) {
namesArr.push(nxtName);
}
}

// den Array sortieren ...
namesArr.sort(numSort);
// ... umkehren ...
namesArr.reverse();
// ... und zählen
var nNames = namesArr.length;

// die Seiten entfernen
for (var p=0; p<nNames; p++) {
try {
curDoc.pages.itemByName(namesArr[p]).remove();
}
catch (e) {
}
}

// die Suchen/Ersetzen-Vorgaben zurücksetzen
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findTextPreferences = app.changeTextPreferences = null;

////////////////////////////////////////////////////////////////////
// das Ende der Aktion verkünden
var dlog = new Window("palette");
dlog.size = [320,100];
dlog.add("statictext", [80, 100, 320, 116], "Fertig.");
dlog.show();
// eine kleine Pause
$.sleep(999);
// das Fenster schliessen
dlog.close();

////////////////////////////////////////////////////////////////////
// diese Funktion prüft, ob sich der Name schon im Array befindet
function checkName(namesArr, curName) {
for (var n=0; n<namesArr.length; n++) {
if (namesArr[n] == curName) {
return true;
}
}
return false;
}

////////////////////////////////////////////////////////////////////
// die Funktion, welche Zahlen-Strings sortiert
function numSort(a, b) {
return a - b;
}

Zuerst werden – wie gehabt – die Seiten entfernt, in welchen "XX,XX" enthalten ist.
Dann wird ein Grep-Suchstring definiert (und angewendet), mit welchem Beträge ab 0,01 gefunden werden. Nach oben unbegrenzt. Wieder werden die Seitenzahlen ermittelt. Aber jede wird um eins erhöht, weil die nächste Seite entfernt werden muss.

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 28. Okt 2018, 20:57 geändert)

Anhang:
SeitenEntfernen_02d.zip (1.23 KB)
Änderungsverlauf:
Beitrag geändert von Hans Haesler (Veteran) am 28. Okt 2018, 20:57