Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Script Dokumente vereinen

Script Dokumente vereinen

Sobi
Beiträge gesamt: 3

7. Mai 2019, 15:25
Bewertung:

gelesen: 24413

Beitrag als Lesezeichen
Hallo aus Berlin!

Seit vielen Jahren verwende ich das tolle Script „Dokumente vereinen“ von Hans Haesler. Das hat bisher auf allen Betriebssystemen funktioniert. Nun habe ich auf das aktuellste System „Mojave“ aktualisiert und seitdem „spinnt“ das Script. Normalerweise arbeitet das Script die Daten im Ordner von oben nach unten ab – also erst Seite 1, dann Seite 2, dann Seite 3 usw. Nun fängt es aber wahllos mittendrin an und stellt auch die Seiten in einer nicht nachvollziehbaren Reihenfolge zusammen. So kann ich es nicht mehr verwenden.

Ist das jetzt nur bei meinem Rechner so oder tritt das Problem auch bei anderen hier im Forum auf?
Hat da jemand vielleicht eine Lösung parat?

Gruß
Sobi

Script Dokumente vereinen

Martin Fischer
  
Beiträge gesamt: 12783

7. Mai 2019, 16:08
Bewertung:

gelesen: 24401

Beitrag als Lesezeichen
Hallo Sobi,

das hängt mit dem neuen Filesystem von Mojave zusammen.

Die ermittelten Dateien sollten nun im Skript vor der Verarbeitung alphabetisch sortiert werden.

Mit einem kleinen Anstupser wird Hans das bestimmt gerne ergänzen.
Winke, winke Wink

Viele Grüße
Martin


Script Dokumente vereinen

Sobi
Beiträge gesamt: 3

7. Mai 2019, 16:13
Bewertung:

gelesen: 24395

Beitrag als Lesezeichen
Danke für die schnelle Antwort Martin!
Dann werde ich mal schauen, ob ich Hans Haesler irgendwie kontaktieren kann...

Script Dokumente vereinen

Hans Haesler
  
Beiträge gesamt: 5826

7. Mai 2019, 17:28
Bewertung:

gelesen: 24380

Beitrag als Lesezeichen
Hallo Sobi,

wie schon in meiner privaten Antwort erklärt, verfüge ich nicht über "Mojave" und kann das Problem nicht nachvollziehen.

Aber wenn es mit einer alphabetischen Sortierung der Dokumente gelöst werden kann, dann werde ich das Script entsprechend ergänzen.

Gruss, Hans

Script Dokumente vereinen

Hans Haesler
  
Beiträge gesamt: 5826

7. Mai 2019, 18:11
Bewertung: |||

gelesen: 24354

Beitrag als Lesezeichen
Hallo Sobi,

das ergänzte Script DokumenteVereinen_505d.js ist nun in der JavaScript-Sammlung auf HDS bereitgestellt:
https://www.hilfdirselbst.org/...mp;limit=&page=0

Wie gesagt, kann ich es nicht prüfen. Aber weil die Dateien nun alphabetisch sortiert werden, sollte es klappen.

Gruss, Hans

Script Dokumente vereinen

Sobi
Beiträge gesamt: 3

8. Mai 2019, 09:37
Bewertung:

gelesen: 22733

Beitrag als Lesezeichen
Guten Morgen aus Berlin!

Ich bin restlos begeistert. Soooo schnell ist noch nie ein Anliegen von mir bearbeitet und vor allen Dingen erfüllt worden. Das geänderte Script funktioniert nun wieder bestens.
Vielen Dank dafür.

Script Dokumente vereinen

Hans Haesler
  
Beiträge gesamt: 5826

8. Mai 2019, 09:59
Bewertung:

gelesen: 22695

Beitrag als Lesezeichen
Guten Morgen Sobi,

bitte sehr. Meinerseits besten Dank fürs Bestätigen, dass es dank dem Sortieren wieder wie erwartet klappt.

Nicht selbstverständlich, weil man mit dem 'getFiles()'-Befehl einen Array von Datei-Objekten zurückbekommt, d.h. eine Liste von kompletten Pfaden.
Aber offensichtlich lassen sich auch diese Objekte sortieren.

Gruss, Hans

Script Dokumente vereinen

WernerPerplies
Beiträge gesamt: 2762

8. Mai 2019, 10:51
Bewertung:

gelesen: 22604

Beitrag als Lesezeichen
Guten Morgen Hans,

Antwort auf: Nicht selbstverständlich, weil man mit dem 'getFiles()'-Befehl einen Array von Datei-Objekten zurückbekommt, d.h. eine Liste von kompletten Pfaden.

Na ja, das klappt wohl, weil die File-Objekte automatisch intern in Strings umgewandelt werden und sich die Objekte auf das gleiche Verzeichnis beziehen.Würden tatsächlich Objekte sortiert, wäre die Reihenfolge durch die Speicheradressen bestimmt.Deshalb macht es Sinn, Objekte nach Feldinhalten zu sortieren.Die folgende Routine macht genau das.
Code
// DESCRIPTION sorts an Array for a field content 


Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Script Dokumente vereinen

WernerPerplies
Beiträge gesamt: 2762

8. Mai 2019, 10:53
Bewertung: |||

gelesen: 22600

Beitrag als Lesezeichen
Sorry,

aber da hat der Editor meinen Beitrag etwas verunstaltet.
Noch ein Versuch:
Code
// DESCRIPTION sorts an Array for a field content 
// Dateiname: wpsPrototypesArraySortThis.jsx
// © 2017 - 2019 by Werner Perplies, EDV-Anwendungsberatung,
// https://www.weepee.de, email: werner.perplies@weepee.de
// modified: 201903211232
// modified: 201804221122
// modified: 201804221118
// modified: 201804120907
// modified: 201705060504
// created: Mon May 01 2017 08:19:21 GMT+0200
// [lastFileProps:({time:"1555060480000", size:18414, checkSum:"1e7f9d60", scriptVersion:"2.06", scriptDate:"201904121115", clone:(function() { return wpsClone(this); } // end of includeFile: #include "C:/Users/WernerPerplies/Source/Workspaces/Singles/PrototypesObject/wpsPrototypesObjectClone.jsx"; // start of includeFile: #include "C:/Users/WernerPerplies/Source/Workspaces/Singles/pdfHandling/wpsPdfExportMessages.jsx"; // DESCRIPTION messages for pdfExport // Dateiname: wpsPdfExportMessages.jsx // © 2017 by Werner Perplies, EDV-Anwendungsberatung, // [lastFileProps:({time:"1488208806000", size:14240, checkSum:"1df46c19", scriptVersion:"1.48", scriptDate:"201703201000"})})]
// #include "C:/Users/WernerPerplies/Source/Workspaces/Singles/Array/Prototypes/wpsPrototypesArraySortThis.jsx";
// [end of header]
// #include "C:/Users/WernerPerplies/Source/Workspaces/Singles/PrototypesArray/wpsPrototypesArraySortThis.jsx";
/*array*/Array.prototype.sortThis=function(/*String*/field, /*Boolean*/reverse,
/*Boolean*/numeric, /*Boolean*/localized) // /*Boolean*/localized: for future usage
{
try
{
if (numeric == undefined)
numeric = false;
if (reverse == undefined)
reverse = false;
if (reverse)
if (numeric)
return this.sort(sortthisDownN);
else
return this.sort(sortthisDownS);
else
if (numeric)
return this.sort(sortthisUpN);
else
return this.sort(sortthisUpS);
}
catch (error)
{
throw error;
}
return this;

/*int*/function sortthisUpS(e1, e2)
{
try
{
if (field==null)
{
if (e1<e2) return -1;
if (e1>e2) return 1;
return 0;
}
else
{
if (e1[field]<e2[field]) return -1;
if (e1[field]>e2[field]) return 1;
return 0;
}
}
catch (error)
{
throw error;
}
}
/*int*/function sortthisDownS(e1, e2)
{
try
{
if (field==null)
{
if (e1>e2) return -1;
if (e1<e2) return 1;
return 0;
}
else
{
if (e1[field]>e2[field]) return -1;
if (e1[field]<e2[field]) return 1;
return 0;
}
}
catch (error)
{
throw error;
}
}
/*int*/function sortthisUpN(e1, e2)
{
try
{
if (field==null)
{
return e1 - e2;
}
else
{
return e1[field] - e2[field];
}
}
catch (error)
{
throw error;
}
}
/*int*/function sortthisDownN(e1, e2)
{
try
{
if (field==null)
{
return (e2 - e1);
}
else
{
return (e2[field] - e1[field]);
}
}
catch (error)
{
throw error;
}
}
}


Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Script Dokumente vereinen

Hans Haesler
  
Beiträge gesamt: 5826

8. Mai 2019, 13:09
Bewertung: |||

gelesen: 22470

Beitrag als Lesezeichen
Hallo Werner,

besten Dank für Deinen Beitrag.

Ja, es ist sehr praktisch, dass die Pfade der Objekte automatisch in Strings verwandelt werden.

Gruss, Hans

Script Dokumente vereinen

WernerPerplies
Beiträge gesamt: 2762

8. Mai 2019, 14:24
Bewertung: |||

gelesen: 22273

Beitrag als Lesezeichen
Hallo Hans,

Zitat Ja, es ist sehr praktisch, dass die Pfade der Objekte automatisch in Strings verwandelt werden.


Na ja, dass war eigentlich nicht das, was ich rüberbringen wollte.

Kern der Aussage sollte sein, dass das Sortieren der File-Objekte nur deshalb funktionierte.

Besser funktioniert es mit meiner obigen Routine, z. B.:

files.sortThis("name") -> nach Namen
files.sortThis("created") -> nach Erstellungsdatum
files.sortThis("modified") -> Änderungsdatum
files.sortThis("length") -> Größe

usw.

Funktioniert mit jedem Array, das Objekte enthält.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Script Dokumente vereinen

Hans Haesler
  
Beiträge gesamt: 5826

8. Mai 2019, 14:58
Bewertung:

gelesen: 22238

Beitrag als Lesezeichen
Hallo Werner,

okay ...

Aber für die vorliegende Aufgabe werden nur die Dateinamen berücksichtigt. Also genügt das einfache 'sort()'.

Es sei denn, die Namen beginnen mit Ordnungszahlen, bei welchen unterlassen wurde, führende Nullen einzufügen. Doch bisher hat noch niemand dieses Problem gemeldet.

Gruss, Hans