[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt INDesign Script für Datenzusammenführung

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

INDesign Script für Datenzusammenführung

TomWTeam
Beiträge gesamt: 2

2. Mai 2018, 08:33
Beitrag # 1 von 3
Bewertung:
(1100 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Morgen,

bin bei euch in Forum auf ein Script gestossen, dass genau meinen Anforderungen entsprechen würde - nur funktioniert es nicht ganz ...

Ein Script, dass Daten aus einer CSV-Datei auslest und diese dann beim Vergeben des Dateinamen wieder einsetzt.

https://www.hilfdirselbst.ch/foren/Datenzusammenf%FChrung_mit_individuellen_Dateinamen_P552784.html#552784

Das Script läuft, allerdings wird immer nur EIN EINZIGER Datensatz gespeichert und in ein PDF exportiert - liegt das an der neuesten InDesign Version?

Wäre euch für Anregungen, Denkanstöße oder jedwede Hilfe dankbar!

Hier noch der Code von Morris10201
Code
var fileNameColumn = 1;//Bitte hier die Spaltennummer eintragen, in der in der CSV der neue Dateiname hinterlegt ist.  
var csvSeparator = ';'//Bitte hier den Separator der CSV-Datei eintragen

// Dialogboxen für Speicherort und Herkunft der csv-Datei
var destFolderPath = Folder.selectDialog('Zielordner für alle Dateien wählen').absoluteURI + '/' ;
var csvFile = File.openDialog('csv-Datei mit den Daten wählen');

// Vorgabewerte
defaultPdfProfile = 1; // PDF-Vorgabe (Name oder Nummer)
defaultSaveToDesktop = false; // PDF immer auf Schreibtisch exportieren (nur Mac)
defaultCloseAfterExporting = false; // Dokumente nach dem Exportieren schließen
defaultSuffix = ""; // Text, welcher zum Dateinamen hinzugefügt werden soll (### = PDF-Vorgabename)
$.localize = true;

// Sprachstrings
msgCancel = {de:"Abbrechen", en:"Cancel" };
msgOk = {de:"Exportieren", en:"export"};
msgNoOpenDocs = {en:"No open documents!", de: "Es gibt keine offenen Dokumente!"};
msgTitle = {en:"Save and Export all open documents as PDF", de:"Geöffnete Dokumente sichern und als PDF exportieren"};
msgIntro = {en:"PDF export profile:", de:"PDF-Export-Vorgabe:"};
msgNoPreset = {en:"No export preset selected!", de:"Keine PDF-Export-Vorgabe ausgewählt"};
msgSuffix = {en:"filename suffix:", de:"Zum Dateinamen hinzufügen:" } ;
msgSuffixVar = {en:"%PROFILE%", de:"%EXPORTVORGABE%"};
msgSaveToDesktop = {en:"Export to desktop", de:"Auf Schreibtisch exportieren"};
msgCloseDocs = {en:"Close documents after exporting", de:"Dokumente nach dem Exportieren schließen"};
msgFinished = {en:"%1 of %2 documents have been exported successfully.", de:"%1 von %2 Dokumenten wurden erfolgreich exportiert."};
msgFinishedError = {en:"%1 of %2 documents have been exported.\nFollowing documents couldn't be exported:", de:"%1 von %2 Dokumenten wurden exportiert.\nDie folgenden Dokumente konnten nicht exportiert werden:"};
msgExportError = {en:" (export error)", de:" (Fehler beim Exportieren)"};
msgSaveError = {en:" (save error)", de:" (Fehler beim Sichern)"};

// Wenn kein Dokument offen, dann Beenden
if (app.documents.length<1) { alert(msgNoOpenDocs); exit(); }

// Dialogfenster erstellen
var dlg = new Window('dialog', localize(msgTitle) );

dlg.profile = dlg.add('group', undefined, {orientation:'row'});
dlg.profile.add('statictext', undefined, localize(msgIntro) );
dlg.theList = dlg.profile.add('dropdownlist', undefined);
for(var onePreset = 0; onePreset < app.pdfExportPresets.length; onePreset++){
dlg.theList.add('item',app.pdfExportPresets.item(onePreset).name,onePreset);
if (app.pdfExportPresets.item(onePreset).name == defaultPdfProfile) {
dlg.theList.selection = onePreset;
} else if (onePreset == defaultPdfProfile-1) {
dlg.theList.selection = onePreset;
}
}
if (!dlg.theList.selection) { dlg.theList.selection = 0; }

dlg.edit = dlg.add('group', undefined, {orientation:'row'} );
dlg.edit.add('statictext', undefined, localize(msgSuffix) );
dlg.suffix = dlg.edit.add('edittext', undefined, defaultSuffix, {name:'suffix'} );
dlg.suffix.characters = 20;
dlg.options = dlg.add('group', undefined, {orientation:'row'} );
dlg.savetodesktop = dlg.options.add('checkbox', undefined, localize(msgSaveToDesktop));
dlg.savetodesktop.value = defaultSaveToDesktop;
if (!($.os.indexOf("Mac")>-1)) {
dlg.savetodesktop.enabled = false;
dlg.savetodesktop.value = false;
}
dlg.closedocs = dlg.options.add('checkbox', undefined, localize(msgCloseDocs));
dlg.closedocs.value = defaultCloseAfterExporting;
dlg.buttons = dlg.add('group',undefined,{orientation:'row'});
dlg.buttons.add('button', undefined, localize(msgCancel), {name:'cancel'});
dlg.buttons.add('button', undefined, localize(msgOk), {name:'ok'} );

// Welcher Knopf wurde gedrückt
result = dlg.show();

// Wenn nicht auf Exportieren geklickt wurde, Skript beenden
if (result != 1) { exit(); }

suffix = dlg.suffix.text;
myPreset = dlg.theList.selection;

// Keine PDF-Vorgabe ausgewählt
if (!myPreset) { alert(msgNoPreset); exit();}

// Platzhalter ### im Suffix durch PDF-Vorgabe ersetzen
suffix = suffix.replace ("###", myCleanFileName(myPreset));

// Initialisierung
var myDocs = app.documents;
var maxDocs = myDocs.length;
var exportedDocs = 0;
var errors = "";
var myCounter = 0;

// Fenster mit Fortschrittbalken anzeigen
var progress = new Window('palette', localize(msgTitle) );
progress.bar = progress.add('progressbar');
progress.file = progress.add('statictext');
progress.file.size = [500,15];
progress.bar.size = [500,15];
progress.bar.maxvalue = maxDocs*2;
progress.show();

//csv einlesen
var fileNames = new Array();
csvFile.open('r');
while (!csvFile.eof) {
fileNames.push(csvFile.readln().split(csvSeparator)[fileNameColumn-1]);
}
csvFile.close();


var currDoc = app.activeDocument;//vorbereitetes Dokument
currDoc.dataMergeOptions.createNewDocument = true;

var maxRange = currDoc.dataMergeProperties.dataMergePreferences.recordRange.split('-')[1];//Anzahl der Datensätze in der CSV
//schleife durch die Datensätze
for(var i = 0; i < maxRange; i++)
{
with(currDoc.dataMergeProperties.dataMergePreferences)
{
recordSelection = RecordSelection.ONE_RECORD;
recordNumber = i+1;
}

currDoc.dataMergeProperties.mergeRecords();
app.activeDocument.save(File(destFolderPath +fileNames[i+1] + '.indd'));
// Alle offenen Dokumente verarbeiten
for( oneDoc = 0 ; oneDoc < myDocs.length ; oneDoc++ ){
myCounter++;
myFile = myDocs[oneDoc];
progress.file.text = myCounter+"/"+maxDocs+": "+myFile.name;
progress.bar.value= myCounter*2-1;
myFile.save();
progress.bar.value= myCounter*2-0.01;
if (myFile.saved) {
// Entscheiden, ob auf Schreibtisch oder im Dokumentordner exportiert wird
if (dlg.savetodesktop.value) {
var path = '~/Desktop';
} else {
var path = myFile.filePath;
}
// Dateiname setzen
var pdfFile = new File( path +'/' + cutFileName(myFile.name ) + suffix + '.pdf' )
try{
// PDF exportieren
myFile.exportFile(ExportFormat.pdfType, pdfFile, false, myPreset.toString() );
exportedDocs++;
}
catch(e){
errors = errors + "\n" + myFile.name + localize(msgExportError);
};
} else {
errors = errors + "\n" + myFile.name + localize(msgSaveError);
}

if (dlg.closedocs.value) { myFile.close(); oneDoc--;}
}
progress.bar.value= maxDocs*2;
app.activeDocument.close();
}



if (errors == "") {
alert(localize(msgFinished,exportedDocs,maxDocs));
} else {
alert(localize(msgFinishedError,exportedDocs,maxDocs)+errors);
}
exit();

// Funktion zum Abtrennen der Dateiendung
function cutFileName (oneFile) {
return oneFile.toString().substring (0, oneFile.length-5)
}


// Funktion zum Ersetzen von (hinsichtlich des Dateisystems) problematischen
// Zeichen im Namen eines Vorgabesets (Slash, Backslash, Doppelpunkt)
function myCleanFileName(oneFilename) {
var oneFilename = String(oneFilename.toString().split('/').join('_').split('\\').join('_').split(':').join('¯'));
return oneFilename;
}

X

INDesign Script für Datenzusammenführung

TomWTeam
Beiträge gesamt: 2

2. Mai 2018, 11:47
Beitrag # 2 von 3
Beitrag ID: #563693
Bewertung:
(1078 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hat sich erledigt, offenbar wählt Indesign standardmäßig nur einen Datensatz bei der Zusammenführung aus. Durch Einbau des EINGABE-Dialoges von Onkel Andi/Hans Haesler unter
https://www.hilfdirselbst.ch/...fchrung_P513807.html
kann man die Datensätze, die man benötigt angeben, dann funktioniert alles einwandfrei.


als Antwort auf: [#563687]

INDesign Script für Datenzusammenführung

NEU!
Beiträge gesamt: 179

12. Jun 2018, 11:44
Beitrag # 3 von 3
Beitrag ID: #564317
Bewertung:
(913 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

wahrscheinlich bist du schon drüber gestolpert, aber

https://colecandoo.com/2015/09/04/data-merge-from-indesign-to-unique-filenames-now-a-reality/

ist ein tolles Ding! Hier kannst du Data-Merge-Felder als Ausgabenamen definieren. Z.b. hatte ich zuerst so eine Art Artikelnummer, die zum Dateinamen werden sollte. Fehlt nur noch ein "S" davor, kann ich ja per Massrename.
Jaa-ha, aber ich könnte mir auch eine neue Spalte in Exceldokument hängen, un die Anpassung dort vornehmen. Hab also extra eine Spalte für meinen gewünschten Dateinamen erzeugt, klappte super.


als Antwort auf: [#563693]

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/