[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Datenzusammenführung mit individuellen Dateinamen

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

Datenzusammenführung mit individuellen Dateinamen

Morris10201
Beiträge gesamt: 3

23. Sep 2016, 15:32
Beitrag # 1 von 6
Bewertung:
(4693 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hey!

Derzeit arbeite ich in InDesign CS6 (Windows 10) und versuche möglichst alles mittels Datenzusammenführung und Scripts zu beschleunigen.

Traumhaft wäre es, wenn mir jemand helfen könnte bei folgender Aufgabe:

Meine Daten ziehe ich aus einer Excel heraus und füge sie in einer Broschürenvorlage ein (Datenzusammenführung). Anstatt alles in einer langen Datei zu haben, kriege ich es auch hin jede Broschüre mit allen zugehörigen Seiten in einer einzelnen Datei zu öffnen (Maximale Datensatzzahl pro Dokument = 1).
Diese Dateien kann ich auch recht einfach alle mit dem Script "ExportAndSaveOpenDocsAsPDF" aus diesem Beitrag http://www.hilfdirselbst.ch/...i?post=314531#314531 zeitsparend speichern und exportieren.
Jede Broschüre enthält nun personifizierte Kundendaten und soll per Mail versendt werden.
Was noch fehlt ist ein individueller ansprechender Dateiname. Diesen würde ich auch gerne mit aus besagter Excel herausziehen und direkt bei der Datenzusammenführung erhalten.

Übersehe ich hier eine offensichtliche Funktion oder google nach den falschen Schlagworten? Könnt ihr mir zeigen/erklären/anreißen wie ihr soetwas umsetzen würdet?


Viele Grüße
Morris


P.S:
Bisher versuche ich mich daran es mit "Script Labels/Scriptetiketten" zu erreichen, bin allerdings noch nicht auf Erfolgskurs.
X

Datenzusammenführung mit individuellen Dateinamen

Morris10201
Beiträge gesamt: 3

23. Sep 2016, 16:40
Beitrag # 2 von 6
Beitrag ID: #552788
Bewertung:
(4660 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Einen kleinen Schritt zur Lösung konnte ich schaffen. In diesem Beitrag http://www.hilfdirselbst.ch/...FChrung_P513807.html löst das zweite Skript fast komplett meine Aufgabe.

Die Excel exportiere ich nun sowohl als txt- wie auch csv-Datei. Die txt-Datei binde ich direkt ein um das Dokument mit den <<Platzhaltern>> ausstatten zu können. Anschließend führe ich das Skript aus, es ließt aus der ersten Spalte der csv-Datei den gewünschten Dateinamen ein und gibt mir im Zielordner jedes Dokument als indd-Datei korrekt benannt aus.

Mein nächstes Ziel, in das Skript noch den PDF-Export aus dem Skript in meiner ursprünglichen Frage integrieren und alles wäre geritzt.

Viele Grüße
Morris


als Antwort auf: [#552784]

Datenzusammenführung mit individuellen Dateinamen

Morris10201
Beiträge gesamt: 3

23. Sep 2016, 17:49
Beitrag # 3 von 6
Beitrag ID: #552792
Bewertung:
(4633 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Ziel ist erreicht!
Beide Skripte konnte ich zusammenpuzzeln und sie funktionieren auch gemeinsam bei mir.

Ihr braucht nur eure Daten in einer csv-Datei, in der alles mit einem ";" getrennt ist. In der ersten Zeile sollte euer Dateiname vermerkt sein.

Nun bereitet ihr euer Dokument für die Datenverarbeitung vor und führt das Skript aus. Im Zielordner erhaltet ihr dann für jeden Datensatz eine eigene indd- und PDF-Datei.

Meinen Vorstellungen entspricht es und vielleicht kann ja auch der ein oder andere von euch etwas damit anfangen.

Viele Grüße
Morris

P.S:
Der Quellcode entstammt nicht meiner Feder sondern ist aus den oben erwähnten anderen Forenbeiträgen nur von mir neu zusammengestellt worden.

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;
}



als Antwort auf: [#552784]

Datenzusammenführung mit individuellen Dateinamen

Hans Haesler
  
Beiträge gesamt: 5669

24. Sep 2016, 11:27
Beitrag # 4 von 6
Beitrag ID: #552798
Bewertung:
(4248 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Morris,

etwas spät: Herzlich willkommen in der Skriptwerkstatt auf HDS! :-)

Super, wie Du Dir selber geholfen (getreu dem Motto von HDS) und dass Du das Ergebnis allen zur Verfügung gestellt hast.

Gruss, Hans


als Antwort auf: [#552792]

Datenzusammenführung mit individuellen Dateinamen

kruicidal
Beiträge gesamt: 34

22. Aug 2017, 12:53
Beitrag # 5 von 6
Beitrag ID: #559162
Bewertung:
(2899 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Morris,
auch ich hab zu danken, das skript ist genau das was ich gesucht habe.
Ich habe nur ein Problem, und zwar exportiert Indesign bei mir immer nur 3 Dokumente, obwohl ich mehrere Datensätze angelegt habe. Ich kann leider keinen Fehler finden, wenn ich die Datenzusammenführung ohne das Skript laufen lasse, dann erstellt er mir alle Dateien ohne Problem. Hattest du etwas Ähnliches?
Danke schonmal und viele Grüße


als Antwort auf: [#552792]

Datenzusammenführung mit individuellen Dateinamen

kruicidal
Beiträge gesamt: 34

22. Aug 2017, 13:40
Beitrag # 6 von 6
Beitrag ID: #559164
Bewertung:
(2889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So, Problem auch gelöst.
Unter dem Punkt "Zusammengeführtes Dokument erstellen" stand in dem ausgegrauten Teil "Bereich" der Wert 3. Ich hab diesen Bereich angewählt, den Wert der maximalen Datensätze eingefügt, wieder auf "Einzelner Datensatz" (so dass "Bereich" wieder ausgraut) und einen Test-Export gemacht. Danach funktionierte es einwandfrei.
Anscheinend muss man immer darauf achten dass in dem ausgegrauten Bereich kein kleinerer Wert steht, als die maximale Anzahl an Datensätzen.
Grüße


als Antwort auf: [#559162]
X

Farbmanagement

Farbmanagement
din_300

Veranstaltungen

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen. pdf-icon Hier eine kleine Anleitung.

Veranstaltungen
13.12.2018 - 20.12.2018

3400 Burgdorf, BE
Donnerstag, 13. Dez. 2018, 09.00 Uhr - Donnerstag, 20. Dez. 2018, 09.00 Uhr

Workshop

Schritt für Schritt: Planen, konzipieren und Umsetzen einer responsiven Website mit Wordpress: Lokalen Server einrichten; Frontend/Backend; Vorgehen Schritt für Schritt bis zur fertigen Site.

2-Tages-Workshop CHF 990.00

Ja

Organisator: PubliCollege GmbH

Kontaktinformation: Beat Kipfer, E-Mailinfo AT publicollege DOT ch

www.publicollege.ch

Websites erstellen mit Wordpress und Elementor Pro
Veranstaltungen
19.12.2018

Wie installiert und konfiguriert man Mailchimp und verwendet es für sein Business

Internet
Mittwoch, 19. Dez. 2018, 10.00 - 11.30 Uhr

Webinar

In diesem Webinar zeige ich den Teilnehmern, wie sie mit Mailchimp eigene Newsletter verschicken können. Wie sie Mailchimp installieren und konfigurieren müssen und wie sie eine erste Kampagne machen können.

Gratis

Ja

Organisator: Eric Mächler

https://events.genndi.com/register/818182175026318367/4ac0f277c0

Der Start ins E-Mail Marketing mit Mailchimp