[GastForen Programmierung/Entwicklung AppleScript

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Dokumente in Ordner auf Vollständigkeit prüfen

Hans Haesler
  
Beiträge gesamt: 5826

6. Jun 2019, 14:10
Bewertung:

gelesen: 9079

Beitrag als Lesezeichen
Hallo Martin,

machen wir doch mal einen Versuch mit einem JavaScript. Die gebrauchsfertige Script-Datei ("FehlendeDateien_CC_01d.js") ist unten angehängt.

[edit]
Das Script im Ordner "Scripts Panel" von InDesign unterbringen und durch Doppelklick auf seinen Namen im Skript-Bedienfeld starten.
[/edit]

Code
//FehlendeDateien_CC_01d.js 
//© 06.06.2019 / Hans Haesler, Châtelard 52, CH-1018 Lausanne
//DESCRIPTION:Eventuell fehlende Dateien auflisten

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

// das Auswählen eines Ordners
var folderObj = File (Folder.selectDialog("Den Ordner auswählen, welcher die\nzu prüfenden Dokumente enthält."));
var testObj = "" + folderObj;
if (testObj.match("null")) {
exit();
}

// den Inhalt des Ordners auflisten ...
var tmpList = folderObj.getFiles("*.pdf");

// die Nummern auflisten ...
var nFiles = tmpList.length;
if (nFiles == 0) {
alert ("Keine PDF-Datei gefunden.", "");
exit();
}
else if (nFiles == 1) {
alert ("Nur *eine* PDF-Datei vorhanden.", "");
exit();
}
var numbersArr = [];
for (var n=0; n<nFiles; n++) {
numbersArr[n] = tmpList[n].name.slice(0,3);
}
// ... und sortieren
numbersArr.sort();

// die Startnummer
var startNum = numbersArr[0]*1;
// die Endnummer
var stopNum = numbersArr[nFiles-1]*1;

// die Liste der fehlenden Nummern vorbereiten
var missList = [];
// eine Schleife durch die Elemente
for (var n=startNum+1; n<stopNum; n++) {
// ein aktuelles Element zusammensetzen
var curItem = ("00" + n).slice(-3);
// wenn sich das Element nicht in der Nummern-Liste befindet ...
var isListed = checkArr(curItem, numbersArr, nFiles);
if (isListed == false) {
// ... dann wird es an die Liste "Fehlende Nummern" gehängt
missList.push(curItem);
}
}

// die Liste prüfen
var nMiss = missList.length;
if (nMiss > 0) {
// den Report-String zusammensetzen
if (nMiss == 1) {
var missString = missList[0];
var repString = "Fehlende Nummer:\r" + missString;
}
else {
var missString = missList.join("\n");
var repString = "Fehlende Nummern:\r" + missString;
}
// den Nummernstring mit InDesign anzeigen
var curDoc = app.documents.add();
var resFrame = curDoc.textFrames.add({geometricBounds:[10,10,100,100]});
resFrame.parentStory.contents = repString;
}
else {
alert ("Die Dateien sind vollzählig.", "");
}

//////////////////////////////////////////////////////////////////////////
function checkArr(curItem, numbersArr, nFiles) {
for (var m=1; m<nFiles; m++) {
if (curItem == numbersArr[m]) {
return true;
}
}
return false;
}

Hier klappt es. Und bei Dir?

Gruss, Hans

(Dieser Beitrag wurde von Hans Haesler am 6. Jun 2019, 15:24 geändert)

Anhang:
FehlendeDateien_CC_01d.zip (1.63 KB)
Änderungsverlauf:
Beitrag geändert von Hans Haesler (Veteran) am 6. Jun 2019, 15:24