[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:
(1202 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:
(1180 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: 180

12. Jun 2018, 11:44
Beitrag # 3 von 3
Beitrag ID: #564317
Bewertung:
(1015 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
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!