<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de"> <generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator> <link href="https://www.docugenerate.com/de/feed.xml" rel="self" type="application/atom+xml"/> <link href="https://www.docugenerate.com/de/blog/" rel="alternate" type="text/html" hreflang="de"/> <updated>2026-09-14T08:28:20+00:00</updated> <id>https://www.docugenerate.com/de/feed.xml</id> <title type="html">DocuGenerate</title> <subtitle>Generate PDF documents from Word templates and JSON data. DocuGenerate helps you generate PDF documents like invoices, letters, contracts, agreements, certificates and more with our API and web app. Start Generating for Free. </subtitle> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <entry> <title type="html">Gehaltserhöhungsschreiben mit n8n und DocuGenerate Erstellen</title> <link href="https://www.docugenerate.com/de/blog/gehaltserhoehungsschreiben-mit-n8n-und-docugenerate-erstellen/" rel="alternate" type="text/html" title="Gehaltserhöhungsschreiben mit n8n und DocuGenerate Erstellen"/> <published>2026-08-18T00:00:00+00:00</published> <updated>2026-08-18T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/gehaltserhoehungsschreiben-mit-n8n-und-docugenerate-erstellen</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/gehaltserhoehungsschreiben-mit-n8n-und-docugenerate-erstellen/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Gehaltserhöhungsschreiben gehören zu den Dokumenten, die an alle betroffenen Mitarbeiter gleichzeitig verschickt werden müssen, einheitlich formuliert und frei von Copy-Paste-Fehlern. Wenn ein Überprüfungszyklus Dutzende von Mitarbeitern umfasst, wird das manuelle Verfassen jedes einzelnen Schreibens oder das manuelle Zusammenführen einer Tabelle in ein Word-Dokument schnell zu einem Engpass für HR-Teams. In diesem Tutorial erstellen wir einen automatisierten Workflow mit <a href="https://n8n.io/" target="_blank" rel="nofollow noopener">n8n</a> und <a href="https://www.docugenerate.com/">DocuGenerate</a>, der eine Google-Sheets-Tabelle mit Gehaltsüberprüfungsdaten in personalisierte PDF-Schreiben umwandelt, ganz ohne manuelle Dokumentenerstellung.</p> <p>Der Workflow überwacht einen Google-Drive-Ordner auf eine neue Tabelle. Sobald eine erscheint, liest er jede Zeile aus, und für jeden Mitarbeiter führt er die Daten dieser Zeile mit einer Word-Vorlage zusammen, generiert eine PDF und lädt das fertige Schreiben in einen dedizierten Ausgabeordner in Drive hoch. Die Personalabteilung muss nur die Tabelle mit den Gehaltserhöhungen des Zyklus vorbereiten; die Schreiben werden automatisch generiert und abgelegt. Am Ende dieses Leitfadens verfügen Sie über einen vollständig funktionsfähigen n8n-Workflow, den Sie importieren und an Ihren eigenen Gehaltsüberprüfungsprozess anpassen können.</p> <h2 id="vorlage-einrichten">Die Gehaltserhöhungsschreiben-Vorlage Einrichten</h2> <p>Bevor wir den n8n-Workflow aufbauen, benötigen wir eine Dokumentvorlage in DocuGenerate. Wir verwenden die Word-Vorlage <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter.docx">Salary Increase Letter</a>, ein kurzes Schreiben zur Vergütungsüberprüfung, das einen Mitarbeiter über seine Gehaltserhöhung, das neue Gesamtgehalt und die Kontaktperson bei Fragen informiert.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/docugenerate-template.png" alt="Salary Increase Letter-Vorlage mit Zusammenführungs-Tags"/></p> <p>Sobald Sie die Vorlage in Ihrem DocuGenerate-Konto <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">erstellt haben</a>, werden 13 Zusammenführungs-Tags automatisch erkannt: <code class="language-plaintext highlighter-rouge">Date</code>, <code class="language-plaintext highlighter-rouge">Employee First Name</code>, <code class="language-plaintext highlighter-rouge">Employee Last Name</code>, <code class="language-plaintext highlighter-rouge">Employee Address</code>, <code class="language-plaintext highlighter-rouge">Increase Amount</code>, <code class="language-plaintext highlighter-rouge">Remuneration Type</code>, <code class="language-plaintext highlighter-rouge">Total Sum</code>, <code class="language-plaintext highlighter-rouge">Increase Date</code>, <code class="language-plaintext highlighter-rouge">Contact Name</code>, <code class="language-plaintext highlighter-rouge">Contact Number</code>, <code class="language-plaintext highlighter-rouge">Company Name</code>, <code class="language-plaintext highlighter-rouge">Signatory Name</code>, und <code class="language-plaintext highlighter-rouge">Signatory Position</code>. Diese <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> decken sowohl die mitarbeiterspezifischen Details der Erhöhung als auch die festen Details des Unternehmens und des Unterzeichners ab, die alle aus den Tabellenzeilen stammen.</p> <h2 id="daten-vorbereiten">Die Daten in Google Sheets Vorbereiten</h2> <p>Die Daten für diesen Workflow befinden sich in Google Sheets. Für dieses Tutorial verwenden wir die Beispiel-Excel-Datei <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Data.xlsx">Salary Increase Data</a>, importiert in eine Google-Sheets-Tabelle namens <strong>Salary Increase August 2026</strong>. Jede der 10 Zeilen stellt die Gehaltserhöhung eines Mitarbeiters dar, mit einer Spalte für jedes Zusammenführungs-Tag der Vorlage: Name, Adresse, Erhöhungsbetrag, Vergütungsart, Gesamtsumme und Erhöhungsdatum, zusammen mit den gemeinsamen Kontakt- und Unterzeichnerdaten, die in jeder Zeile wiederholt werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/drive-drive-salary-increase-letter-sheet.png" alt="Salary Increase August 2026-Tabelle in Google Sheets"/></p> <p>Diese Tabelle befindet sich in einem Ordner <strong>Salary Increase Letter</strong> in Google Drive, der auch die Ordner mit den für frühere Überprüfungszyklen generierten Schreiben enthält. Jeder neue Zyklus beginnt auf die gleiche Weise: Eine neue Tabelle mit den Daten dieses Zyklus wird zu diesem Ordner hinzugefügt, genau das Ereignis, auf das unser Workflow wartet.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/drive-salary-increase-letter-folder.png" alt="Salary Increase Letter-Ordner in Google Drive"/></p> <h2 id="workflow-ueberblick">Überblick über den n8n-Workflow</h2> <p>Mit der fertigen Vorlage und Datenquelle sieht der vollständige Workflow in n8n so aus. Sie können die <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter Workflow.json" target="_blank">Workflow-JSON-Datei</a> herunterladen und direkt in Ihre n8n-Instanz importieren, dann die DocuGenerate-Vorlage, Ihre Google-Zugangsdaten und die Drive-Ordner-ID an Ihr eigenes Setup anpassen.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-complete-workflow.png" alt="Der vollständige n8n-Workflow"/></p> <p>Der Workflow beginnt mit einem Trigger, der den Ordner <strong>Salary Increase Letter</strong> auf eine neue Google-Sheets-Datei überwacht. Wenn eine erscheint, erstellt er einen passenden Ausgabeordner, liest jede Zeile aus der Tabelle und durchläuft die Zeilen nacheinander, wobei für jeden Mitarbeiter ein PDF-Schreiben generiert und in den neuen Ordner hochgeladen wird. Gehen wir nun jeden Knoten im Detail durch.</p> <h2 id="trigger-ueberwachen">Neue Tabellen mit dem Google Drive Trigger Überwachen</h2> <p>Der <a href="https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger/" target="_blank" rel="nofollow noopener">Google Drive Trigger</a>-Knoten fragt einen bestimmten Google-Drive-Ordner ab und startet den Workflow, wenn eine passende Änderung auftritt.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-google-drive-trigger.png" alt="Konfiguration des Google Drive Trigger-Knotens"/></p> <p>Der Knoten ist so eingestellt, dass er alle <strong>Every X</strong> <code class="language-plaintext highlighter-rouge">30</code> <strong>Minutes</strong> abfragt, wobei <strong>Trigger On</strong> auf <strong>Changes Involving a Specific Folder</strong> gesetzt ist. Der Parameter <strong>Folder</strong> akzeptiert den Zielordner auf drei Arten: <strong>From list</strong>, <strong>By URL</strong>, oder <strong>By ID</strong>; hier ist er auf <strong>By ID</strong> mit der ID des Ordners <strong>Salary Increase Letter</strong> gesetzt.</p> <p>Sie finden die ID eines Ordners in dessen Google-Drive-URL, es ist die Zeichenfolge nach <code class="language-plaintext highlighter-rouge">/folders/</code>. Zum Beispiel ist die ID für die URL <code class="language-plaintext highlighter-rouge">https://drive.google.com/drive/folders/1dcLLzfZaH38hDd0acfUru2ISOoTsbGPI</code> gleich <code class="language-plaintext highlighter-rouge">1dcLLzfZaH38hDd0acfUru2ISOoTsbGPI</code>.</p> <p>Schließlich ist <strong>Watch For</strong> auf <strong>File Created</strong> gesetzt, und die Option <strong>File Type</strong> unter <strong>Options</strong> ist auf <strong>Google Spreadsheets</strong> beschränkt, sodass der Trigger nur auslöst, wenn dem Ordner eine neue Tabelle hinzugefügt wird.</p> <h2 id="ausgabeordner-erstellen">Einen Ausgabeordner Erstellen</h2> <p>Sobald eine neue Tabelle erkannt wird, benötigt der Workflow einen Ort, an dem die generierten Schreiben abgelegt werden können. Der <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/" target="_blank" rel="nofollow noopener">Google Drive</a>-Knoten übernimmt dies mit der Operation <strong>Create</strong> auf der Ressource <strong>Folder</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-create-folder.png" alt="Konfiguration des Create folder-Knotens"/></p> <p>Der Parameter <strong>Folder Name</strong> verwendet den Ausdruck <code class="language-plaintext highlighter-rouge">{{ $('Google Drive Trigger').item.json.name }}</code>, der zu <code class="language-plaintext highlighter-rouge">Salary Increase August 2026</code> aufgelöst wird, dem Namen der Tabelle, die den Workflow ausgelöst hat. Der <strong>Parent Folder</strong> ist auf dieselbe Ordner-ID gesetzt, die im <a href="#trigger-ueberwachen">Trigger</a> verwendet wird, sodass der neue Ausgabeordner als Geschwisterordner der Quelltabelle innerhalb von <strong>Salary Increase Letter</strong> erstellt wird. Die Benennung des Ordners nach seiner Quelltabelle sorgt dafür, dass die Schreiben jedes Überprüfungszyklus zusammen mit den Daten gruppiert bleiben, aus denen sie erstellt wurden.</p> <h2 id="mitarbeiterdaten-lesen">Die Mitarbeiterdaten Lesen</h2> <p>Nachdem der Zielordner bereit ist, liest der <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/" target="_blank" rel="nofollow noopener">Google Sheets</a>-Knoten mit der Operation <strong>Get Row(s)</strong> auf der Ressource <strong>Sheet Within Document</strong> die Mitarbeiterdaten.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-get-rows-in-sheet.png" alt="Konfiguration des Get row(s) in sheet-Knotens"/></p> <p><strong>Document</strong> ist auf <strong>Salary Increase August 2026</strong> und <strong>Sheet</strong> auf <strong>Salary Increase Data</strong> gesetzt, beide ausgewählt aus den <strong>From list</strong>-Dropdowns. Der Knoten gibt alle 10 Zeilen als separate Elemente zurück, jedes mit dem vollständigen Satz an Feldern, die wir in der <a href="#daten-vorbereiten">Tabelle</a> gesehen haben: Mitarbeiterdetails, Erhöhungswerte und die gemeinsamen Kontakt- und Unterzeichnerinformationen.</p> <h2 id="mitarbeiter-durchlaufen">Jeden Mitarbeiter Durchlaufen</h2> <p>Um pro Mitarbeiter ein Schreiben zu generieren, muss der Workflow die 10 Zeilen nacheinander verarbeiten. Der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/" target="_blank" rel="nofollow noopener">Loop Over Items</a>-Knoten übernimmt dies mit einer Stapelgröße von 1.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-loop-over-items.png" alt="Konfiguration des Loop Over Items-Knotens"/></p> <p>Jeder Durchlauf der Schleife trägt die Zeile eines einzelnen Mitarbeiters, etwa die erste für James Mitchell mit einer Erhöhung von 4 %, die sein Jahresgehalt auf 87.500 $ bringt, in die folgenden Knoten. Die Schleife läuft weiter, bis alle 10 Zeilen verarbeitet wurden, wobei jeweils ein Schreiben generiert und gespeichert wird, bevor mit dem nächsten fortgefahren wird.</p> <h2 id="schreiben-generieren">Das Schreiben Generieren</h2> <p>Der Knoten <strong>Generate document</strong> verwendet die <a href="https://n8n.io/integrations/docugenerate/" target="_blank" rel="noopener">DocuGenerate-Integration</a> für n8n, um die Daten jeder Zeile mit der Word-Vorlage zusammenzuführen. Um diesen Knoten zu verwenden, installieren Sie DocuGenerate in Ihrer n8n-Instanz und <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/#install-docugenerate">konfigurieren Sie ihn</a> mit Ihrem <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-generate-document.png" alt="Konfiguration des Generate document-Knotens"/></p> <p>Der Knoten wird mit folgenden Parametern konfiguriert:</p> <ul> <li><strong>Template Name or ID</strong>: Die im Schritt <a href="#vorlage-einrichten">Vorlage einrichten</a> erstellte Vorlage <strong>Salary Increase Letter</strong>.</li> <li><strong>Name</strong>: Ein Ausdruck, <code class="language-plaintext highlighter-rouge">Letter for {{ $json['Employee First Name'] }} {{ $json['Employee Last Name'] }}</code>, der für die erste Zeile einen Namen wie <code class="language-plaintext highlighter-rouge">Letter for James Mitchell</code> erzeugt.</li> <li><strong>Format</strong>: Auf <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code> gesetzt.</li> <li><strong>Data</strong>: Auf <code class="language-plaintext highlighter-rouge">{{ $json }}</code> gesetzt, wodurch die gesamte aktuelle Zeile mit allen 13 Zusammenführungs-Tag-Werten direkt an die API übergeben wird.</li> </ul> <p>Für die erste Zeile ergibt dies die folgende Antwort:</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"created"</span><span class="p">:</span><span class="w"> </span><span class="mi">1774348731006</span><span class="p">,</span><span class="w">
    </span><span class="nl">"template_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ARnboMDE3zyzMrdTZJ2e"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Letter for James Mitchell"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"format"</span><span class="p">:</span><span class="w"> </span><span class="s2">".pdf"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"data_length"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
    </span><span class="nl">"filename"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Letter for James Mitchell.pdf"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"document_uri"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://firebasestorage.googleapis.com/v0/b/storage.us.docugenerate.com/o/documents%2FA1blGMwZETC4hrP5Zr2C%2FLetter%20for%20James%20Mitchell.pdf?alt=media&amp;token=6383b541-f2b9-4c79-8161-063d287a5887"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"A1blGMwZETC4hrP5Zr2C"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span></code></pre></div></div> <p>Sie können das generierte Dokument unten sehen oder die <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Letter for James Mitchell.pdf">Beispiel-PDF</a> direkt herunterladen.</p> <object data="/assets/posts/036-n8n-salary-increase-letters/Letter for James Mitchell.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="schreiben-herunterladen">Das Generierte Schreiben Herunterladen</h2> <p>DocuGenerate gibt einen <code class="language-plaintext highlighter-rouge">document_uri</code> zurück, der auf die generierte PDF verweist, anstatt der Datei selbst, sodass der Workflow sie zunächst abrufen muss, bevor sie an anderer Stelle hochgeladen werden kann. Der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/" target="_blank" rel="nofollow noopener">HTTP Request</a>-Knoten stellt eine <code class="language-plaintext highlighter-rouge">GET</code>-Anfrage an diese URL.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-http-request.png" alt="Konfiguration des HTTP Request-Knotens"/></p> <p>Der Parameter <strong>URL</strong> ist auf <code class="language-plaintext highlighter-rouge">{{ $json.document_uri }}</code> gesetzt und referenziert die Antwort des Knotens <a href="#schreiben-generieren">Generate document</a>. <strong>Authentication</strong> bleibt auf <code class="language-plaintext highlighter-rouge">None</code>, da die Dokument-URI bereits ein Zugriffstoken enthält. Die Ausgabe des Knotens enthält den binären Inhalt der Datei in einem Feld <code class="language-plaintext highlighter-rouge">data</code>, bereit für den nächsten Schritt.</p> <h2 id="schreiben-speichern">Das Schreiben in Google Drive Speichern</h2> <p>Der letzte Knoten lädt die PDF in den Ausgabeordner hoch, der zu <a href="#ausgabeordner-erstellen">Beginn des Durchlaufs</a> erstellt wurde, mithilfe der Operation <strong>Upload</strong> des Google-Drive-Knotens auf der Ressource <strong>File</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-upload-file.png" alt="Konfiguration des Upload file-Knotens"/></p> <p><strong>Input Data Field Name</strong> ist auf <code class="language-plaintext highlighter-rouge">data</code> gesetzt und entspricht damit dem binären Feld, das vom Knoten <a href="#schreiben-herunterladen">HTTP Request</a> erzeugt wird. Das Feld <strong>File Name</strong> bleibt leer, sodass der Upload den in den Binärdaten mitgeführten ursprünglichen Dateinamen beibehält, für diese Zeile <code class="language-plaintext highlighter-rouge">Letter for James Mitchell.pdf</code>. Der <strong>Parent Folder</strong> verwendet den Ausdruck <code class="language-plaintext highlighter-rouge">{{ $('Create folder').item.json.id }}</code>, sodass jedes Schreiben im für diesen Überprüfungszyklus erstellten Ordner landet und nicht lose in Drive verstreut wird.</p> <h2 id="workflow-ausfuehren">Den Workflow Ausführen</h2> <p>Nachdem alle Knoten konfiguriert sind, genügt es, eine neue Tabelle in den Ordner <strong>Salary Increase Letter</strong> zu legen, um einen vollständigen Stapel von Schreiben zu generieren. Die Animation unten zeigt einen vollständigen Durchlauf: Jeder Knoten wird beim Abschluss grün mit einem Häkchen, und der Abschnitt <a href="#mitarbeiter-durchlaufen">Loop Over Items</a> läuft 10 Mal hintereinander, einmal für jeden Mitarbeiter in der Tabelle.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-workflow-testing.gif" alt="n8n-Workflow läuft von Anfang bis Ende"/></p> <p>Sobald der Durchlauf abgeschlossen ist, befinden sich alle 10 Schreiben im Ausgabeordner in Google Drive, jedes benannt nach seinem Empfänger.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/drive-generated-documents.png" alt="Generierte Schreiben im Ordner Salary Increase August 2026"/></p> <h2 id="fazit">Fazit</h2> <p>In diesem Tutorial haben wir einen n8n-Workflow erstellt, der eine Google-Sheets-Tabelle mit Gehaltsüberprüfungsdaten in einen Ordner mit personalisierten PDF-Schreiben verwandelt, ganz ohne manuelle Dokumentenerstellung. Der Workflow überwacht einen Drive-Ordner auf eine neue Tabelle, erstellt einen passenden Ausgabeordner, durchläuft jede Zeile und generiert und speichert für jeden Mitarbeiter ein Schreiben, ausgelöst allein durch das Hinzufügen einer Tabelle zum richtigen Ordner.</p> <p>Dasselbe Muster gilt für jedes HR-Dokument, das an eine periodische Überprüfung gebunden ist, von Bonusschreiben bis hin zu Verlängerungsmitteilungen. Der Trigger und die Datenquelle könnten ebenso gut ein Webhook aus einem Human Resources Information System (HRIS) oder eine Datenbankabfrage anstelle eines Drive-Ordners sein, während die Schritte zur Dokumentengenerierung und -lieferung gleich bleiben.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die in diesem Tutorial verwendete Word-Vorlage <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter.docx">Salary Increase Letter</a>.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Data.xlsx">Beispiel-Excel-Datei</a> mit den Gehaltserhöhungsdaten der Mitarbeiter.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter Workflow.json" target="_blank">Workflow-JSON-Datei</a>, die Sie in Ihre n8n-Instanz importieren können.</li> <li>Eine <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Letter for James Mitchell.pdf" target="_blank">generierte Beispiel-PDF</a>, die die endgültige Ausgabe zeigt.</li> <li>Der DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/">Integrationsleitfaden</a> für n8n.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Letters"/> <category term="n8n"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erstellen Sie einen n8n-Workflow, der einen Google-Drive-Ordner auf eine neue Tabelle mit Gehaltsüberprüfungen überwacht und automatisch ein personalisiertes PDF-Gehaltserhöhungsschreiben für jeden darin aufgeführten Mitarbeiter generiert. Die fertigen Schreiben werden zurück in Google Drive gespeichert.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Formular-W-9-PDFs mit Power Automate und Smartsheet Generieren</title> <link href="https://www.docugenerate.com/de/blog/formular-w-9-pdfs-mit-power-automate-und-smartsheet-generieren/" rel="alternate" type="text/html" title="Formular-W-9-PDFs mit Power Automate und Smartsheet Generieren"/> <published>2026-07-24T00:00:00+00:00</published> <updated>2026-07-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/formular-w-9-pdfs-mit-power-automate-und-smartsheet-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/formular-w-9-pdfs-mit-power-automate-und-smartsheet-generieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Formular W-9, „Request for Taxpayer Identification Number and Certification”, ist ein IRS-Formular, mit dem Unternehmen in den USA den rechtlichen Namen, die Adresse und die Steueridentifikationsnummer von Lieferanten, Freelancern und selbstständigen Auftragnehmern erfassen, bevor sie diese bezahlen. Die auf einem W-9 angegebenen Informationen werden später zur Erstellung von 1099-Formularen bei der Steuererklärung verwendet, weshalb korrekte und einheitlich formatierte W-9-Datensätze ein wichtiger Bestandteil jedes Onboarding-Prozesses für Lieferanten sind. Unternehmen, die fortlaufend neue Auftragnehmer aufnehmen, verwalten diese Daten häufig in einer Tabellenkalkulation oder einem Tool wie <a href="https://www.smartsheet.com/" target="_blank" rel="nofollow noopener">Smartsheet</a>, was es zu einem natürlichen Kandidaten für die Automatisierung macht.</p> <p>In diesem Tutorial erstellen wir einen <a href="https://www.microsoft.com/en-us/power-platform/products/power-automate" target="_blank" rel="nofollow noopener">Power Automate</a>-Flow, der eine Smartsheet-Tabelle auf neue Zeilen überwacht und automatisch ein ausgefülltes W-9-PDF mit <a href="https://www.docugenerate.com/">DocuGenerate</a> generiert. Immer wenn ein neuer Lieferantendatensatz zur Tabelle hinzugefügt wird, sei es durch ein Teammitglied, das ihn direkt einträgt, oder durch einen Import aus einem anderen System, führt der Flow die Daten dieser Zeile mit einer Word-Vorlage zusammen und speichert das fertige PDF in Azure File Storage. Dasselbe Muster gilt für jedes Dokument, das automatisch aus Tabellenkalkulationsdaten generiert werden muss, aber ein Steuerformular ist ein gutes Beispiel, da es eine Mischung aus privaten und geschäftlichen Antragstellern, bedingten Feldern und einem Layout umfasst, das präzise bleiben muss.</p> <h2 id="vorlage-vorbereiten">Die DocuGenerate-Vorlage Vorbereiten</h2> <p>Der erste Schritt besteht darin, eine Word-Vorlage in DocuGenerate zu erstellen, die das offizielle W-9-Layout nachbildet. Wir sind vom <a href="https://www.irs.gov/forms-pubs/about-form-w-9" target="_blank" rel="nofollow noopener">IRS-Formular W-9</a> ausgegangen und haben jedes ausfüllbare Feld durch ein <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tag</a> ersetzt, das wir dann als neue Vorlage mit dem Namen <strong>Form W-9</strong> <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">hochgeladen</a> haben.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/docugenerate-form-w-9-template.png" alt="Form-W-9-Vorlage mit Zusammenführungs-Tags in DocuGenerate"/></p> <p>Die Vorlage enthält 17 Zusammenführungs-Tags: <code class="language-plaintext highlighter-rouge">firstName</code>, <code class="language-plaintext highlighter-rouge">lastName</code>, <code class="language-plaintext highlighter-rouge">businessName</code>, <code class="language-plaintext highlighter-rouge">taxClassification</code>, <code class="language-plaintext highlighter-rouge">exemptPayeeCode</code>, <code class="language-plaintext highlighter-rouge">fatcaCode</code>, <code class="language-plaintext highlighter-rouge">streetAddress</code>, <code class="language-plaintext highlighter-rouge">requesterName</code>, <code class="language-plaintext highlighter-rouge">requesterAddress</code>, <code class="language-plaintext highlighter-rouge">city</code>, <code class="language-plaintext highlighter-rouge">state</code>, <code class="language-plaintext highlighter-rouge">zipCode</code>, <code class="language-plaintext highlighter-rouge">accountNumber</code>, <code class="language-plaintext highlighter-rouge">ssn</code>, <code class="language-plaintext highlighter-rouge">ein</code>, <code class="language-plaintext highlighter-rouge">signature</code> und <code class="language-plaintext highlighter-rouge">signatureDate</code>. Die meisten davon entsprechen direkt einer beschrifteten Box auf dem Formular. <code class="language-plaintext highlighter-rouge">taxClassification</code> entspricht der Zeile „Other” im Abschnitt zur föderalen Steuerklassifizierung und enthält eine kurze Beschreibung wie „C Corporation” oder „Trust/estate”, während <code class="language-plaintext highlighter-rouge">ssn</code> und <code class="language-plaintext highlighter-rouge">ein</code> die beiden Boxen in Part I befüllen, je nachdem, ob der Antragsteller eine Privatperson oder ein Unternehmen ist. Sie können die in diesem Tutorial verwendete <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9.docx">Word-Vorlage</a> herunterladen und an Ihr eigenes Layout anpassen.</p> <h2 id="smartsheet-datenquelle">Die Datenquelle in Smartsheet Einrichten</h2> <p>Sobald die Vorlage steht, besteht der nächste Schritt darin, die Tabelle vorzubereiten, die als Trigger für unseren Flow dient. Klicken Sie in Smartsheet auf <strong>Create</strong> &gt; <strong>Sheet</strong> &gt; <strong>Table</strong>, um eine neue Tabelle zu erstellen, und benennen Sie sie in <strong>Form W-9</strong> um. Anstatt Beispielzeilen von Hand einzugeben, importieren wir sie aus einer Excel-Datei, indem wir das Tabellenmenü öffnen und <strong>Import</strong> auswählen. Beachten Sie, dass der Import alle vorhandenen Daten in der Tabelle durch die Daten aus der Quelldatei ersetzt.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/smartsheet-import-excel-data.png" alt="Import von Excel-Daten in die Form-W-9-Tabelle in Smartsheet"/></p> <p>Sie können die für diesen Import verwendete <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Data.xlsx">Beispiel-Excel-Datei</a> herunterladen. Sie enthält 10 Zeilen, die den 18 Spalten entsprechen, die den Zusammenführungs-Tags in der Vorlage zugeordnet werden: eine Spalte <code class="language-plaintext highlighter-rouge">Record ID</code> (<code class="language-plaintext highlighter-rouge">REC-001</code> bis <code class="language-plaintext highlighter-rouge">REC-010</code>), gefolgt von jeweils einer Spalte pro Feld des Formulars. Die Daten mischen Privatpersonen und Unternehmen, um die verschiedenen Verzweigungen des Formulars durchzuspielen: sechs Privatpersonen oder Einzelunternehmer mit ausgefüllter SSN und ohne EIN sowie vier Unternehmen (eine LLC, eine C Corp, ein Trust/Nachlass und eine Partnership) mit ausgefüllter EIN und ohne SSN. Eine Zeile hat zudem die Spalten Exempt Payee Code und FATCA Code ausgefüllt, da diese nur in bestimmten Fällen zutreffen.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/smartsheet-table-form-w9-data.png" alt="Form-W-9-Daten importiert in die Smartsheet-Tabelle"/></p> <h2 id="flow-erstellen">Den Power Automate-Flow Erstellen</h2> <p>Sobald Vorlage und Datenquelle bereit sind, können wir den Flow selbst erstellen. Klicken Sie in Power Automate auf <strong>New flow</strong> &gt; <strong>Automated cloud flow</strong>. Geben Sie im Dialogfeld <strong>Build an automated cloud flow</strong> dem Flow einen Namen wie <code class="language-plaintext highlighter-rouge">Form W-9</code>, suchen Sie in der Liste der Trigger nach „Smartsheet” und wählen Sie <strong>When a new row is created</strong> aus.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/when-a-new-row-is-created-trigger.png" alt="Auswahl des Smartsheet-Triggers beim Erstellen eines neuen Flows"/></p> <p>Der Flow, den wir erstellen, besteht aus drei Schritten: einem Smartsheet-Trigger, der auslöst, wenn eine Zeile hinzugefügt wird, einer DocuGenerate-Aktion, die das PDF generiert, und einer Azure File Storage-Aktion, die es speichert. Konfigurieren wir jeden dieser Schritte der Reihe nach.</p> <h3 id="smartsheet-trigger">Den Smartsheet-Trigger Konfigurieren</h3> <p>Der Trigger <strong>When a new row is created</strong> benötigt eine Verbindung zu Ihrem Smartsheet-Konto, zu deren Erstellung Power Automate Sie bei der ersten Verwendung auffordert. Legen Sie nach dem Verbinden den Parameter <strong>Sheet Id</strong> auf die <a href="#smartsheet-datenquelle">zuvor erstellte</a> Tabelle <strong>Form W-9</strong> fest.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/configure-sheet-id-trigger.png" alt="Konfiguration des Sheet-Id-Parameters am Smartsheet-Trigger"/></p> <h3 id="generate-document">Die Generate Document-Aktion Hinzufügen</h3> <p>Klicken Sie als Nächstes auf die Schaltfläche <strong>+</strong> unterhalb des Triggers und suchen Sie nach „DocuGenerate”, um die Liste der verfügbaren Aktionen zu sehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/docugenerate-add-action.png" alt="Suche nach dem DocuGenerate-Connector in Power Automate"/></p> <p>Wählen Sie <strong>Generate Document</strong> aus. Bei der ersten Verwendung einer DocuGenerate-Aktion in Ihrer Umgebung werden Sie aufgefordert, <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-power-apps-automatisieren/#add-the-custom-connector">eine Verbindung herzustellen</a> und dabei Ihren DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a> zu verwenden. Setzen Sie nach dem Verbinden das Feld <strong>Template</strong> auf die <a href="#vorlage-vorbereiten">in DocuGenerate erstellte</a> Vorlage <strong>Form W-9</strong>.</p> <p>Für das Feld <strong>Data</strong> benötigen wir ein JSON-Objekt mit den Werten für alle 17 Zusammenführungs-Tags. Der Smartsheet-Trigger stellt die Zellen der Zeile nicht nach Spaltenname zur Verfügung, sondern nur als Array, sodass jeder Wert über seinen numerischen Index referenziert werden muss. Basierend auf der Reihenfolge der Spalten während des Imports ergibt sich folgende Zuordnung: Spalte 0 ist Record ID, Spalte 1 ist SSN, Spalte 2 ist First Name, Spalte 3 ist Last Name, und so weiter bis Spalte 17, die Signature Date ist. Wir haben das JSON mit den Ausdrücken <code class="language-plaintext highlighter-rouge">concat</code> und <code class="language-plaintext highlighter-rouge">json</code> aufgebaut:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>json(concat(
  '{"firstName": "', triggerBody()?.cells?[2]?.value,
  '", "lastName": "', triggerBody()?.cells?[3]?.value,
  '", "businessName": "', triggerBody()?.cells?[4]?.value,
  '", "taxClassification": "', triggerBody()?.cells?[5]?.value,
  '", "exemptPayeeCode": "', triggerBody()?.cells?[6]?.value,
  '", "fatcaCode": "', triggerBody()?.cells?[7]?.value,
  '", "streetAddress": "', triggerBody()?.cells?[8]?.value,
  '", "requesterName": "', triggerBody()?.cells?[9]?.value,
  '", "requesterAddress": "', triggerBody()?.cells?[10]?.value,
  '", "city": "', triggerBody()?.cells?[11]?.value,
  '", "state": "', triggerBody()?.cells?[12]?.value,
  '", "zipCode": "', triggerBody()?.cells?[13]?.value,
  '", "accountNumber": "', triggerBody()?.cells?[14]?.value,
  '", "ssn": "', triggerBody()?.cells?[1]?.value,
  '", "ein": "', triggerBody()?.cells?[15]?.value,
  '", "signature": "', triggerBody()?.cells?[16]?.value,
  '", "signatureDate": "', triggerBody()?.cells?[17]?.value,
  '"}'
))
</code></pre></div></div> <p>Die <code class="language-plaintext highlighter-rouge">?</code>-Zeichen sind null-bedingte Operatoren: <code class="language-plaintext highlighter-rouge">triggerBody()?.cells?[2]?.value</code> liest die Eigenschaft <code class="language-plaintext highlighter-rouge">value</code> der Zelle an Index 2 und gibt <code class="language-plaintext highlighter-rouge">null</code> zurück, statt einen Fehler auszulösen, sobald <code class="language-plaintext highlighter-rouge">cells</code> oder diese bestimmte Zelle fehlt. Das ist hier wichtig, weil mehrere Spalten, wie <code class="language-plaintext highlighter-rouge">businessName</code> oder <code class="language-plaintext highlighter-rouge">ssn</code>, in vielen Zeilen absichtlich leer bleiben. Die äußere Funktion <code class="language-plaintext highlighter-rouge">concat</code> fügt all diese Werte zu einer einzigen JSON-Zeichenfolge zusammen, und <code class="language-plaintext highlighter-rouge">json()</code> wandelt diese Zeichenfolge in das Objekt um, das das Feld <strong>Data</strong> erwartet.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/generate-document-action-data.png" alt="Konfiguration des Data-Felds an der Generate Document-Aktion"/></p> <p>Für das Feld <strong>Name</strong> haben wir einen Ausdruck verwendet, der prüft, ob die Spalte Business Name (Index 4) ausgefüllt ist, und anhand derselben Indexzuordnung wie oben das passende Namensmuster wählt:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>if(
  empty(triggerBody()?.cells?[4]?.value),
  concat('Form W-9 ', triggerBody()?.cells?[2]?.value, ' ', triggerBody()?.cells?[3]?.value),
  concat('Form W-9 ', triggerBody()?.cells?[4]?.value)
)
</code></pre></div></div> <p>Dies erzeugt einen Namen wie „Form W-9 John Smith” für eine private Antragstellerin oder einen privaten Antragsteller, oder „Form W-9 Bluepeak Software LLC” für einen geschäftlichen Antragsteller. Belassen Sie das Feld <strong>Format</strong> abschließend auf dem Standardwert <strong>.pdf</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/generate-document-action-name.png" alt="Konfiguration des Name-Felds an der Generate Document-Aktion"/></p> <h3 id="azure-file-storage">Das Dokument in Azure File Storage Speichern</h3> <p>Sobald das Dokument generiert ist, gibt es viele Möglichkeiten, es zuzustellen: per E-Mail versenden, zu SharePoint oder OneDrive hinzufügen, in einen S3-Bucket hochladen und so weiter. In diesem Tutorial speichern wir es in <a href="https://learn.microsoft.com/en-us/connectors/azurefile/" target="_blank" rel="nofollow noopener">Azure File Storage</a>. Klicken Sie auf die Schaltfläche <strong>+</strong> unterhalb der Aktion <strong>Generate Document</strong>, suchen Sie nach „Create file” und wählen Sie die Aktion von <strong>Azure File Storage</strong> aus.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/add-create-file-action.png" alt="Hinzufügen der Create-file-Aktion von Azure File Storage"/></p> <p>Erstellen Sie eine Verbindung, indem Sie einen <strong>Connection name</strong>, Ihren <strong>Azure Storage account name or file endpoint</strong> und Ihren <strong>Azure Storage Account Access Key</strong> angeben, die beide in Ihrem Speicherkonto im Azure-Portal verfügbar sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/create-file-config.png" alt="Erstellen einer Verbindung zu Azure File Storage"/></p> <p>Konfigurieren Sie nach dem Herstellen der Verbindung die Aktion <strong>Create file</strong>:</p> <ul> <li><strong>Folder path</strong>: <code class="language-plaintext highlighter-rouge">/form-w-9</code>, der Zielordner im Speicherkonto.</li> <li><strong>File name</strong>: <code class="language-plaintext highlighter-rouge">outputs('Generate_Document')?['body/filename']</code>, der Dateiname des generierten PDFs.</li> <li><strong>File content</strong>: <code class="language-plaintext highlighter-rouge">outputs('Generate_Document')?['body/document_uri']</code>, die URL des generierten PDFs.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/create-file-params.png" alt="Konfiguration der Parameter der Create-file-Aktion"/></p> <h2 id="testen">Den Flow Testen</h2> <p>Um den Flow zu testen, klicken Sie auf der Flow-Seite auf <strong>Test</strong>, wählen Sie <strong>Manually</strong> und klicken Sie anschließend erneut auf <strong>Test</strong>. Power Automate zeigt eine Meldung an, die Sie auffordert, eine Zeile zur ausgewählten Tabelle hinzuzufügen, um den Lauf auszulösen.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/test-flow-manually.png" alt="Manuelles Testen des Flows aus Power Automate"/></p> <p>Fügen Sie der Tabelle <strong>Form W-9</strong> in Smartsheet eine neue Zeile mit einem frischen Satz Lieferantendetails hinzu. Sobald der Flow läuft, erscheint das generierte Dokument im Bereich <strong>Documents</strong> der Vorlage <strong>Form W-9</strong> in DocuGenerate, und das PDF wird im angegebenen Ordner in Azure File Storage gespeichert. Ein Beispiel des <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Jessica Martinez.pdf">generierten PDFs</a> sehen Sie unten.</p> <object data="/assets/posts/035-power-automate-form-w9/Form W-9 Jessica Martinez.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="fazit">Fazit</h2> <p>Dieses Tutorial hat den gesamten Weg von einer Zeile in Smartsheet bis zu einem einreichfertigen W-9-PDF abgedeckt, mithilfe eines Power Automate-Flows ganz ohne benutzerdefinierten Code. Der Trigger erkennt neue Lieferantendatensätze, sobald sie eingetragen werden, die Aktion <strong>Generate Document</strong> befüllt das offizielle Formularlayout mit den Daten dieser Zeile, und die Aktion <strong>Create file</strong> liefert das Ergebnis automatisch an Azure File Storage.</p> <p>Dasselbe dreistufige Muster (Trigger, Generieren, Zustellen) funktioniert für jedes wiederkehrende Dokument, das Ihr Team aus Tabellenkalkulations- oder Tabellendaten erstellt, sei es Onboarding-Papierkram, Rechnungen oder Compliance-Formulare. Da die DocuGenerate-Aktionen in der gesamten Power Platform verfügbar sind, könnten Sie diesen Flow ebenso leicht über ein Power Apps-Formular oder eine SharePoint-Liste statt einer Smartsheet-Zeile auslösen, während Sie dieselbe Konfiguration der Aktion <strong>Generate Document</strong> beibehalten.</p> <h2 id="ressourcen">Ressourcen</h2> <ul> <li>Die in diesem Tutorial verwendete Word-Vorlage <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9.docx">Form W-9</a>.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Data.xlsx">Beispiel-Excel-Datei</a> mit Lieferantendaten zum Import in Smartsheet.</li> <li>Ein <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Jessica Martinez.pdf">Beispiel eines generierten PDFs</a>, das das Endergebnis zeigt.</li> <li>Die <a href="https://learn.microsoft.com/en-us/connectors/smartsheet/" target="_blank" rel="nofollow noopener">Smartsheet-Connector-Referenz</a> für Power Automate.</li> <li>Die <a href="https://learn.microsoft.com/en-us/connectors/azurefile/" target="_blank" rel="nofollow noopener">Azure File Storage-Connector-Referenz</a> für Power Automate.</li> <li>Die <a href="https://learn.microsoft.com/en-us/connectors/docugenerate/" target="_blank" rel="nofollow noopener">DocuGenerate-Connector-Referenz</a> für Power Automate.</li> <li>Das offizielle <a href="https://www.irs.gov/forms-pubs/about-form-w-9" target="_blank" rel="nofollow noopener">IRS-Formular W-9</a> und die zugehörigen Anweisungen.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Tax Forms"/> <category term="Power Platform"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie automatisch Formular-W-9-Dokumente generieren, sobald in Smartsheet eine neue Zeile hinzugefügt wird. Dieses Tutorial erstellt einen Power Automate-Flow, der Lieferanten- und Auftragnehmerdaten mit einer DocuGenerate-Vorlage zusammenführt, um das Formular zu erstellen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Vorlagen in Ordnern für Einfachen Zugriff Organisieren</title> <link href="https://www.docugenerate.com/de/blog/vorlagen-in-ordnern-fuer-einfachen-zugriff-organisieren/" rel="alternate" type="text/html" title="Vorlagen in Ordnern für Einfachen Zugriff Organisieren"/> <published>2026-06-15T00:00:00+00:00</published> <updated>2026-06-15T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/vorlagen-in-ordnern-fuer-einfachen-zugriff-organisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/vorlagen-in-ordnern-fuer-einfachen-zugriff-organisieren/"><![CDATA[<h2 id="was-sind-vorlagenordner">Was sind Vorlagenordner?</h2> <p>Vorlagenordner bringen ein vertrautes Organisationsmodell in DocuGenerate und ermöglichen Ihnen, verwandte Vorlagen in einer hierarchischen Struktur zu gruppieren. Ob Sie eine Handvoll oder Hunderte von Vorlagen verwalten – Ordner bieten eine übersichtliche, intuitive Möglichkeit, das Gesuchte zu finden und Ihre Vorlagenbibliothek organisiert zu halten, während sie wächst.</p> <p>Bisher wurden alle Vorlagen in Ihrem DocuGenerate-Konto in einer einzigen flachen Liste angezeigt, sortiert nach dem Erstellungsdatum. Mit dieser neuen Funktion führen wir ein Ordnersystem ein, das den Konventionen folgt, die Sie bereits aus Dateimanagern und E-Mail-Clients kennen – mit beliebiger Verschachtelungstiefe, intuitiver Umorganisation und vollständiger Unterstützung in der <a href="#vorlagenordner-in-der-web-app">Web-App</a> und der <a href="#api-ordner">API</a>.</p> <h2 id="warum-ordnerorganisation-wichtig-ist">Warum Ordnerorganisation Wichtig ist</h2> <p>Für Unternehmen, die auf eine wachsende Bibliothek von Vorlagen angewiesen sind, kann das Fehlen einer Organisationsstruktur mit der Zeit zu einem echten Produktivitätshemmnis werden. Wenn Ihre Vorlagenbibliothek von einigen Dutzend auf Hunderte von Vorlagen anwächst, wird das Auffinden der richtigen schwieriger, die Einarbeitung neuer Teammitglieder verlangsamt sich, und Vorlagen entfernen sich von jeder logischen Struktur, die einmal in jemandes Kopf existierte.</p> <p><strong>1. Schnelleres Auffinden von Vorlagen</strong><br/> Mit Ordnern müssen Sie nicht mehr durch eine lange Liste scrollen oder sich auf Teilnamensuche verlassen. Eine gut organisierte Ordnerhierarchie spiegelt wider, wie Ihr Team tatsächlich über Vorlagen denkt – nach Abteilung, Kunde, Dokumenttyp oder Projektphase.</p> <p><strong>2. Klareres Mentales Modell für Teams</strong><br/> Wenn Vorlagen in Ordnern organisiert sind, kommuniziert die Struktur selbst die Absicht. Ein neues Teammitglied, das Ihre Vorlagenbibliothek betrachtet, kann schnell verstehen, wie Dokumente in Ihrer Organisation kategorisiert sind, und reduziert so den Bedarf an Erklärungen oder Einarbeitungsdokumentation.</p> <p><strong>3. Filterbare Ansichten</strong><br/> Ordner sind nicht nur visuelle Container. Die Auswahl eines Ordners filtert die Vorlagenansicht auf die darin enthaltenen Vorlagen, sodass Sie einen fokussierten Arbeitsbereich erhalten, wenn Sie innerhalb einer bestimmten Kategorie arbeiten. Der aktuelle Ordner wird in der Seiten-URL widergespiegelt, sodass Sie eine gefilterte Ansicht als Lesezeichen speichern oder teilen können.</p> <h2 id="vorlagenordner-in-der-web-app">So Funktionieren Vorlagenordner in der Web-App</h2> <p>Ordner sind in der gesamten App über das Ordnersymbol in der Navigationsleiste zugänglich. Ein Klick öffnet das Ordnermenü, das Ihren Ordnerbaum anzeigt und es Ihnen ermöglicht, Ordner direkt zu erstellen, zu bearbeiten oder zu löschen. Auf mobilen Geräten ist das Ordnermenü über das Hauptbenutzermenü zugänglich.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/folder-menu-v2.png" alt="Ordnermenü in der Navigationsleiste"/></p> <h3 id="ordner-erstellen">Ordner Erstellen</h3> <p>Um einen <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-einen-ordner/">neuen Ordner zu erstellen</a>, klicken Sie auf das <strong>New Folder</strong>-Symbol neben der Überschrift <strong>Template Folders</strong> im Ordnermenü. Ein Dialogfeld öffnet sich, in dem Sie den Ordnernamen eingeben und optional einen übergeordneten Ordner auswählen können, wenn Sie den Ordner innerhalb eines bestehenden erstellen möchten.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/new-folder-dialog-v2.png" alt="Dialogfeld für neuen Ordner"/></p> <p>Um einen <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-verschachtelte-ordner/">Unterordner zu erstellen</a> direkt aus einem bestehenden Ordner heraus, können Sie auch die <strong>Add</strong>-Aktion im <a href="#ordner-verwalten">Kontextmenü</a> des Ordners verwenden, die die übergeordnete Auswahl bereits vorausfüllt. Ordnernamen unterstützen Buchstaben, Zahlen und Leerzeichen. Jeder Ordner erhält eine eindeutige URL, die aus seinem Namen abgeleitet wird, wie im <a href="#vorlagen-nach-ordner-filtern">Filterabschnitt</a> unten beschrieben.</p> <h3 id="vorlagen-ordnern-zuweisen">Vorlagen Ordnern Zuweisen</h3> <p>Sie können eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-weise-ich-eine-vorlage-einem-ordner-zu/">Vorlage einem Ordner zuweisen</a> entweder beim Erstellen einer neuen Vorlage oder durch Bearbeiten der Einstellungen einer bestehenden Vorlage. Das Ordner-Dropdown in den Vorlageneinstellungen zeigt den vollständigen Baum der verfügbaren Ordner, wobei Einrückungen die Eltern-Kind-Beziehungen widerspiegeln.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/template-settings-folder.png" alt="Ordnerauswahl in den Vorlageneinstellungen"/></p> <p>Jede Vorlage gehört zu einem einzigen Ordner. Um eine Vorlage in einen anderen Ordner zu verschieben, ändern Sie die Ordnerauswahl in den Vorlageneinstellungen und speichern. Um eine Vorlage aus einem Ordner zu entfernen, wählen Sie <strong>None</strong> in der Ordner-Dropdown-Liste.</p> <h3 id="vorlagen-nach-ordner-filtern">Vorlagen nach Ordner Filtern</h3> <p>Die Auswahl eines Ordners im Ordnermenü <a href="https://www.docugenerate.com/de/hilfe/articles/wie-filtere-ich-vorlagen-nach-ordner/">filtert die Vorlagenansicht</a>, um nur die Vorlagen in diesem Ordner anzuzeigen. Die Seiten-URL wird aktualisiert, um den aktuellen Filter widerzuspiegeln. Das bedeutet, Sie können eine Ordneransicht als Lesezeichen speichern, die URL mit einem Teamkollegen teilen oder mehrere Browser-Tabs öffnen, die jeweils auf einen anderen Ordner fokussiert sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/filtered-view.png" alt="Nach Ordner gefilterte Vorlagen"/></p> <p>Der Ordner-Breadcrumb erscheint in der Navigationsleiste und zeigt den vollständigen Pfad des ausgewählten Ordners an. Um zur Standardansicht mit allen Vorlagen zurückzukehren, klicken Sie auf das Symbol <strong>Clear Folder</strong> neben dem Breadcrumb oder wählen Sie <strong>All Templates</strong> im Ordnermenü.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/nested-folders.png" alt="Gefilterte Ansicht mit verschachtelten Ordnern"/></p> <p>Der Ordner, zu dem eine Vorlage gehört, ist sowohl in der <a href="https://www.docugenerate.com/de/hilfe/articles/wie-wechsle-ich-die-ansichtsoptionen/">Grid- als auch in der List-Ansicht</a> der Vorlagenseite sichtbar. In der <strong>Grid</strong>-Ansicht erscheint der Ordnername unter dem Vorlagentitel neben einem kleinen Ordnersymbol. In der <strong>List</strong>-Ansicht zeigt eine eigene <strong>Folder</strong>-Spalte dieselbe Information. Ein Klick auf den Ordnernamen in beiden Ansichten filtert die Vorlagenliste auf diesen Ordner.</p> <h3 id="ordner-verwalten">Ordner Bearbeiten, Verschieben und Löschen</h3> <p>Jeder Ordner im Ordnermenü hat ein Kontextmenü mit drei Aktionen: <strong>Edit</strong> zum <a href="https://www.docugenerate.com/de/hilfe/articles/wie-bearbeite-ich-einen-ordner/">Umbenennen des Ordners</a> oder Ändern des übergeordneten Ordners, <strong>Delete</strong> zum <a href="https://www.docugenerate.com/de/hilfe/articles/wie-loesche-ich-einen-ordner/">Entfernen des Ordners</a> und aller Unterordner, und <strong>Add</strong> zum Erstellen eines neuen Unterordners darin.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/folder-context-menu-v2.png" alt="Ordnerkontextmenü"/></p> <p>Wenn Sie einen Ordner löschen, werden alle zugehörigen Unterordner ebenfalls entfernt. Vorlagen in gelöschten Ordnern werden selbst nicht gelöscht – sie werden lediglich zu verwaisten Vorlagen und kehren in die <strong>All Templates</strong>-Ansicht zurück. Das bedeutet, das Löschen eines Ordners ist aus der Perspektive Ihrer Vorlageninhalte immer eine sichere Operation.</p> <p>Das Verschieben eines Ordners unter einen anderen übergeordneten Ordner wird unterstützt, mit einer Sicherheitsschranke: Ein Ordner kann nicht in sich selbst oder einen seiner eigenen Nachkommen verschoben werden. Das Ordner-Dialogfeld deaktiviert diese Optionen automatisch, wenn Sie einen bestehenden Ordner bearbeiten, sodass die Einschränkung visuell durchgesetzt wird, bevor Sie auch nur versuchen können, eine ungültige Verschiebung vorzunehmen.</p> <h2 id="team-ordner">Ordner für die Teamzusammenarbeit</h2> <p>Für Nutzer mit der <a href="https://www.docugenerate.com/de/hilfe/articles/einfuehrung-in-die-teamzusammenarbeit/">Teamzusammenarbeit</a>-Funktion erweitert sich die Ordnerorganisation natürlich auf geteilte Vorlagen. Teammitglieder sehen die Ordner des Teambesitzers in einem eigenen <strong>Shared</strong>-Abschnitt im Ordnermenü, getrennt von ihren eigenen Ordnern durch eine visuelle Trennlinie.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/shared-folders.png" alt="Ordnermenü mit persönlichen und geteilten Ordnern"/></p> <p>Das Sichtbarkeitsmodell ist beabsichtigt: Teammitglieder können die geteilten Ordner des Teambesitzers durchsuchen und danach filtern, aber keine Ordner in der Hierarchie des Teambesitzers erstellen, umbenennen oder löschen. Dies hält die Ordnerstruktur konsistent im gesamten Team und gibt dem Besitzer klare Verantwortung darüber, wie Vorlagen für alle organisiert sind.</p> <p>Wenn ein Teammitglied hinzugefügt oder entfernt wird, spiegelt die Ordnerstruktur diese Änderung sofort wider, ohne dass ein Handeln seitens des Mitglieds erforderlich ist. Wenn der Besitzer ebenso Änderungen an seiner Ordnerstruktur vornimmt, werden diese Änderungen in der Ansicht jedes Teammitglieds propagiert, sobald sie gespeichert werden.</p> <h2 id="api-ordner">Ordnerunterstützung in der API</h2> <p>Für Nutzer, die Vorlagen über die <a href="https://api.docugenerate.com/" target="_blank">DocuGenerate API</a> verwalten, ist die Ordnerorganisation über dieselben Endpunkte zugänglich, die Sie bereits verwenden. Der Ordner, zu dem eine Vorlage gehört, wird als <code class="language-plaintext highlighter-rouge">folder</code>-Parameter der Vorlage dargestellt – als Array von Ordnernamen, das den Pfad vom Stamm zum zugewiesenen Ordner abbildet. Beispielsweise hat eine Vorlage in einem Unterordner „Contracts” innerhalb eines übergeordneten Ordners „Legal” ihr <code class="language-plaintext highlighter-rouge">folder</code>-Feld auf <code class="language-plaintext highlighter-rouge">["Legal", "Contracts"]</code> gesetzt.</p> <h3 id="api-vorlage-erstellen">Ordner beim Erstellen einer Vorlage Festlegen</h3> <p>Beim <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">Erstellen einer Vorlage</a> über die API können Sie den <code class="language-plaintext highlighter-rouge">folder</code>-Parameter in Ihrer Anfrage angeben, um die Vorlage einem bestimmten Ordner zuzuweisen. Wenn der Ordnerpfad in Ihrem Konto noch nicht existiert, erstellt DocuGenerate ihn automatisch, einschließlich aller Zwischenordner auf dem Weg dorthin.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/api-create-template-v2.png" alt="Folder-Parameter beim Erstellen einer Vorlage"/></p> <p>Dieses Auto-Erstell-Verhalten erleichtert die programmatische Einrichtung Ihrer Ordnerstruktur beim Erstellen von Vorlagen, ohne die Hierarchie vorher manuell über die Web-App konfigurieren zu müssen.</p> <h3 id="api-vorlage-verschieben">Vorlagen zwischen Ordnern Verschieben</h3> <p>Um eine bestehende Vorlage in einen anderen Ordner zu verschieben, können Sie den <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">Update-Vorlage</a>-Endpunkt mit einem neuen Wert für den <code class="language-plaintext highlighter-rouge">folder</code>-Parameter verwenden. Das Setzen auf ein leeres Array (<code class="language-plaintext highlighter-rouge">[]</code>) entfernt die Vorlage aus jedem Ordner und versetzt sie in den verwaisten Zustand.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/api-update-template.png" alt="Folder-Parameter beim Aktualisieren einer Vorlage"/></p> <p>Wie beim Erstellen von Vorlagen erstellt DocuGenerate die fehlenden Ordner automatisch, wenn der neue Ordnerpfad noch nicht existiert (vorausgesetzt, Sie sind der Vorlagenbesitzer). Teammitglieder mit Schreibberechtigung auf einer geteilten Vorlage können die Inhalte und Einstellungen der Vorlage aktualisieren, aber keine neuen Ordner in der Hierarchie des Vorlagenbesitzers erstellen – entsprechend dem <a href="#team-ordner">Web-App-Verhalten</a>.</p> <h3 id="api-vorlagen-filtern">Vorlagen nach Ordner Filtern</h3> <p>Der <a href="https://api.docugenerate.com/#/Template/getTemplates" target="_blank">Vorlagenlisten</a>-Endpunkt akzeptiert einen <code class="language-plaintext highlighter-rouge">folder</code>-Abfrageparameter, der die Antwort auf einen bestimmten Ordner filtert. Der Parameter hat dieselbe Form wie beim <a href="#api-vorlage-erstellen">Erstellen</a> oder <a href="#api-vorlage-verschieben">Aktualisieren</a> einer Vorlage – als Array von Ordnernamen, das den Pfad vom Stamm zum zugewiesenen Ordner abbildet.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/api-query-template.png" alt="Folder-Parameter beim Abfragen von Vorlagen"/></p> <p>Dieser Filter folgt derselben Logik wie das <a href="#vorlagen-nach-ordner-filtern">Filtern in der Web-App</a>: Die Auswahl eines Ordners gibt nur die direkt diesem Ordner zugewiesenen Vorlagen zurück, nicht die Vorlagen aus Unterordnern. Um Vorlagen aus einem Ordner und all seinen Unterordnern zu sammeln, müssten Sie separate Anfragen für jeden Unterordner stellen.</p> <h2 id="anwendungsszenarien">Anwendungsszenarien</h2> <p>Lassen Sie uns einige reale Szenarien erkunden, in denen Vorlagenordner erheblichen Mehrwert bieten können.</p> <h3 id="szenario-abteilungen">Szenario 1: Abteilungsbasierte Organisation</h3> <p>Ein <strong>mittelständisches Unternehmen</strong> nutzt DocuGenerate, um Vorlagen über mehrere Abteilungen hinweg zu verwalten: HR, Rechtliches, Vertrieb und Finanzen. Mit Dutzenden von Vorlagen in jeder Abteilung war das Auffinden der richtigen zeitaufwändig geworden, und neue Mitarbeiter hatten Schwierigkeiten, die für ihre Rolle relevanten Vorlagen zu finden.</p> <p>Nach der Organisation der Vorlagen in übergeordneten Ordnern nach Abteilung, mit Unterordnern für spezifische Dokumenttypen (Angebote, Verträge, Vorschläge, Rechnungen), können Teammitglieder direkt zu ihrem Abteilungsordner navigieren und nur die für sie relevanten Vorlagen sehen. Teilbare Ordner-URLs werden zur Einarbeitungsdokumentation jedes Teams hinzugefügt und geben neuen Mitarbeitern vom ersten Tag an einen direkten Link zu den Vorlagen, die sie verwenden werden.</p> <h3 id="szenario-kunden">Szenario 2: Kundenbasierte Organisation für eine Agentur</h3> <p>Eine <strong>Marketing-Agentur</strong> erstellt personalisierte Verträge, Vorschläge und Berichte für Dutzende von Kunden, jeder mit eigenen Branding- und Vertragsbedingungen. Vor der Einführung von Ordnern verließ sich das Agenturteam auf eine Namenskonvention wie <code class="language-plaintext highlighter-rouge">[Kundenname]_[Dokumenttyp]</code>, um Vorlagen zu finden, aber dies führte zu langen, schlecht scannbaren Vorlagennamen und erschwerte das Onboarding neuer Kundenbetreuer.</p> <p>Durch die Erstellung eines übergeordneten Ordners pro Kunde und die Organisation von Dokumenttypen als Unterordner können die Kundenbetreuer der Agentur nun eine übersichtliche, hierarchische Ansicht aller Materialien für jeden beliebigen Kunden durchsuchen. Beim Onboarding eines neuen Kunden erstellt der Kundenbetreuer einen neuen Kundenordner und repliziert die Standard-Unterordnerstruktur darin.</p> <h3 id="szenario-api">Szenario 3: Programmatische Ordnereinrichtung über API</h3> <p>Ein <strong>Dokumentautomatisierungs-Team</strong> integriert DocuGenerate in sein internes Tooling und erstellt Vorlagen programmatisch aus einer Datenbank von Dokumentmustern. Ihr internes System organisiert Muster nach Region und Dokumentkategorie, und sie möchten, dass ihr DocuGenerate-Konto diese Struktur exakt widerspiegelt.</p> <p>Über die API sendet ihre Integration den entsprechenden <code class="language-plaintext highlighter-rouge">folder</code>-Parameter beim Erstellen jeder Vorlage und baut automatisch eine Ordnerhierarchie auf, die ihrer internen Taxonomie entspricht. Dadurch bleibt ihr DocuGenerate-Konto mit ihrer Quelle der Wahrheit synchronisiert, ohne manuelles Ordnermanagement in der Web-App – selbst wenn sich ihr Musterkatalog weiterentwickelt.</p> <h2 id="best-practices">Best Practices für die Ordnerorganisation</h2> <p>Um das Beste aus Vorlagenordnern herauszuholen, während Ihre Bibliothek wächst, sollten Sie diese Praktiken in Betracht ziehen, die Ihre Struktur im Laufe der Zeit nützlich und wartbar halten:</p> <ol> <li> <p><strong>Beginnen Sie mit breiten Kategorien und verfeinern Sie nach Bedarf.</strong> Widerstehen Sie der Versuchung, vom ersten Tag an tiefe Ordnerhierarchien zu erstellen. Beginnen Sie mit einigen übergeordneten Ordnern, die den übergeordnetsten Unterschieden in Ihrem Workflow entsprechen, und fügen Sie Unterordner nur dann hinzu, wenn eine Kategorie genügend Vorlagen angesammelt hat, um eine Unterteilung zu rechtfertigen.</p> </li> <li> <p><strong>Passen Sie Ordner daran an, wie Ihr Team denkt, nicht wie Ihre Daten strukturiert sind.</strong> Eine Ordnerstruktur funktioniert am besten, wenn sie das mentale Modell widerspiegelt, das Ihr Team bereits verwendet. Wenn alle von „Q1-Verträgen” sprechen statt von „Januar-bis-März-Verträgen”, lassen Sie den Ordnernamen das gesprochene Vokabular widerspiegeln – auch wenn es von Ihren internen Benennungsstandards abweicht.</p> </li> <li> <p><strong>Verwenden Sie teilbare Ordner-URLs für das Onboarding.</strong> Wenn neue Teammitglieder eingestellt werden, teilen Sie direkte Links zu den Ordnern, mit denen sie am häufigsten arbeiten werden. Dies verkürzt die Einarbeitungszeit erheblich und stellt sicher, dass alle von Anfang an über die relevanten Vorlagen informiert sind.</p> </li> <li> <p><strong>Evaluieren Sie regelmäßig neu.</strong> Ordnerstrukturen, die vor einem Jahr sinnvoll waren, entsprechen möglicherweise nicht mehr der heutigen Arbeitsweise Ihres Teams. Planen Sie eine regelmäßige Überprüfung (vierteljährlich oder halbjährlich), um wenig genutzte Ordner zu konsolidieren, zu groß gewordene Ordner aufzuteilen oder vollständig umzustrukturieren, wenn sich Ihr Workflow wesentlich verändert hat.</p> </li> </ol> <h2 id="fazit">Fazit</h2> <p>Vorlagenordner sind eine der am häufigsten gewünschten Ergänzungen zu DocuGenerate, und wir freuen uns, endlich ein Organisationsmodell bereitzustellen, das mit Ihrer Vorlagenbibliothek skaliert. Ob Sie eine kleine Handvoll Vorlagen oder Hunderte über mehrere Abteilungen und Kunden verwalten – Ordner geben Ihnen die Struktur und Flexibilität, das Gesuchte zu finden und es mit Ihrem Team zu teilen.</p> <p>Wie immer freuen wir uns über Ihr Feedback, wenn Sie beginnen, Ihre Vorlagen mit dieser neuen Funktion zu organisieren. Wir sind besonders daran interessiert, von Workflows zu hören, bei denen Ordner Ihrem Team sinnvolle Zeit sparen, sowie von Problemen, auf die Sie in der realen Nutzung stoßen und die wir für zukünftige Verbesserungen berücksichtigen sollten.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-einen-ordner/">Wie erstelle ich einen Ordner?</a></li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-weise-ich-eine-vorlage-einem-ordner-zu/">Wie weise ich eine Vorlage einem Ordner zu?</a></li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-filtere-ich-vorlagen-nach-ordner/">Wie filtere ich Vorlagen nach Ordner?</a></li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-verschachtelte-ordner/">Wie erstelle ich verschachtelte Ordner?</a></li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-bearbeite-ich-einen-ordner/">Wie bearbeite ich einen Ordner?</a></li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-loesche-ich-einen-ordner/">Wie lösche ich einen Ordner?</a></li> <li><a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">Vorlage erstellen</a> API-Dokumentation.</li> <li><a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">Vorlage aktualisieren</a> API-Dokumentation.</li> <li><a href="https://api.docugenerate.com/#/Template/getTemplates" target="_blank">Vorlagen auflisten</a> API-Dokumentation.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Product Update"/> <category term="Web App"/> <category term="Templates"/> <summary type="html"><![CDATA[Ordner bringen ein vertrautes, hierarchisches Organisationsmodell für Ihre DocuGenerate-Vorlagen und erleichtern das Gruppieren verwandter Vorlagen, wenn Ihre Bibliothek wächst. Erfahren Sie, wie Sie Ordner erstellen und verwalten, um Ihren Arbeitsbereich organisiert zu halten.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/034-template-folders/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/034-template-folders/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Datumsformatierung in Vorlagen mit Datenfiltern und Automatischen Feldern</title> <link href="https://www.docugenerate.com/de/blog/datumsformatierung-in-vorlagen-mit-datenfiltern-und-automatischen-feldern/" rel="alternate" type="text/html" title="Datumsformatierung in Vorlagen mit Datenfiltern und Automatischen Feldern"/> <published>2026-05-31T00:00:00+00:00</published> <updated>2026-05-31T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/datumsformatierung-in-vorlagen-mit-datenfiltern-und-automatischen-feldern</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/datumsformatierung-in-vorlagen-mit-datenfiltern-und-automatischen-feldern/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Datumsangaben erscheinen in fast jedem Geschäftsdokument. Verträge geben Wirksamkeitsdaten an, Rechnungen tragen Fälligkeitsdaten, Zertifikate haben Ausstellungsdaten und Empfehlungsschreiben werden mit einem Datum versehen, um ihre Relevanz zu belegen. Die Darstellung dieser Daten ist wichtig, da die Datumsformat-Konventionen je nach Land und Region erheblich variieren. In den USA ist das Standardformat <code class="language-plaintext highlighter-rouge">MM/TT/JJJJ</code>, während der größte Teil Europas und vieler anderer Länder <code class="language-plaintext highlighter-rouge">TT/MM/JJJJ</code> verwendet. Ohne Kontrolle über die Datumsformatierung könnte ein Datum wie der 4. Dezember 2026 für einen US-Leser als <code class="language-plaintext highlighter-rouge">12/04/2026</code> oder für einen europäischen Leser als <code class="language-plaintext highlighter-rouge">04/12/2026</code> erscheinen – wobei jeder es nur nach seiner eigenen Konvention korrekt interpretiert.</p> <p>DocuGenerate bietet zwei unterschiedliche Möglichkeiten zur Steuerung der Datumsanzeige in generierten Dokumenten, jede geeignet für einen anderen Anwendungsfall. Die erste ist der <code class="language-plaintext highlighter-rouge">date</code>-Filter, der einen Datumswert aus Ihrem Datensatz formatiert und im gewünschten Ausgabeformat rendert. Die zweite ist das direkte Einfügen des aktuellen Datums in die Dokumentvorlage mit Word oder LibreOffice, sodass das Feld beim Generieren automatisch mit dem heutigen Datum befüllt wird.</p> <p>Dieser Artikel beschreibt beide Ansätze anhand der Vorlage <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter.docx">Empfehlungsschreiben</a> aus unserer <a href="https://www.docugenerate.com/de/vorlagen/#briefe">Vorlagenbibliothek</a>. Für jeden Ansatz zeigen wir, wie Sie sowohl US-amerikanische als auch europäische Datumsformate erzeugen, damit Sie eine konkrete Referenz haben – unabhängig davon, welche Konvention Ihre Dokumente erfordern.</p> <h2 id="datumsfilter">Datumsformatierung aus Ihrem Datensatz</h2> <p>Wenn Ihr Datensatz Datumswerte enthält, gibt Ihnen DocuGenerates <a href="https://www.docugenerate.com/de/hilfe/articles/wie-formatiere-ich-daten-mit-filtern/">Datumsfilter</a> vollständige Kontrolle über die Darstellung im generierten Dokument. Dies ist der richtige Ansatz, wenn das Datum ein bedeutsames Datenelement ist, das mit einem bestimmten Ereignis verknüpft ist – beispielsweise das Unterzeichnungsdatum eines Vertrags oder das formale Datum eines Schreibens.</p> <p>Dieser Filter ist Teil des Funktionssatzes der <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/">erweiterten Syntax</a>, daher müssen Sie diese zunächst <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktiviere-ich-die-erweiterte-syntax/">aktivieren</a>, bevor er wirksam wird. Öffnen Sie dazu die Vorlage, gehen Sie zu <strong>Settings</strong>, aktivieren Sie das Kontrollkästchen <strong>Enable enhanced syntax</strong> und klicken Sie auf <strong>Save</strong>.</p> <h3 id="daten-vorbereiten">Daten Vorbereiten</h3> <p>Der <code class="language-plaintext highlighter-rouge">date</code>-Filter erwartet den Eingabewert im <a href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank" rel="nofollow noopener">ISO 8601</a>-Format, speziell <code class="language-plaintext highlighter-rouge">yyyy-MM-dd</code>. Dies ist ein international anerkannter Standard zur Datumsdarstellung, der die Mehrdeutigkeit regionaler Konventionen vermeidet. Wenn Ihre Daten derzeit in einem anderen Format gespeichert sind, müssen Sie sie vor der Übergabe an DocuGenerate in das ISO-Format konvertieren. Bei nicht-ISO-formatierten Datumswerten wird der Filter ignoriert und der Eingabewert im generierten Dokument unverändert angezeigt.</p> <h3 id="vorlage-aktualisieren">Vorlage Aktualisieren</h3> <p>Die <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter.docx">Originalvorlage</a> verwendet die Standard-DocuGenerate- Syntax mit eckigen Klammern. Bei aktivierter erweiterter Syntax ist der Tag-Parser strenger und toleriert keinen zusätzlichen Leerraum innerhalb von Zusammenführungs-Tags, sodass Tags wie <code class="language-plaintext highlighter-rouge">[Job Title]</code> zu <code class="language-plaintext highlighter-rouge">[Job_Title]</code> werden müssen. Die <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Date Filter.docx">aktualisierte Vorlage</a> wurde bereits mit leerzeichenfreien Tags bearbeitet und kann sofort mit der erweiterten Syntax verwendet werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/recommendation-letter-date-filter-template.png" alt="Empfehlungsschreiben-Vorlage mit Datumsfilter-Zusammenführungs-Tag"/></p> <h3 id="datumsfilter-anwenden">Datumsfilter Anwenden</h3> <p>Mit aktivierter erweiterter Syntax können Sie das Datum direkt im Zusammenführungs-Tag mit folgender Syntax formatieren:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Date | date:'date_format']
</code></pre></div></div> <p>Der <code class="language-plaintext highlighter-rouge">date_format</code>-String verwendet Symbole des <a href="https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table" target="_blank" rel="nofollow noopener">Unicode Technical Standard</a> für Datums- und Zeitmuster. Die zwei am häufigsten benötigten Formate für US-amerikanische und europäische Konventionen sind:</p> <table class="table table-bordered"> <thead> <tr> <th>Zusammenführungs-Tag</th> <th>Ergebnis</th> <th>Format</th> </tr> </thead> <tbody> <tr> <td><code>[Date &#124; date:'MM/dd/yyyy']</code></td> <td>12/04/2026</td> <td>US (Monat/Tag/Jahr)</td> </tr> <tr> <td><code>[Date &#124; date:'dd/MM/yyyy']</code></td> <td>04/12/2026</td> <td>Europäisch (Tag/Monat/Jahr)</td> </tr> <tr> <td><code>[Date &#124; date:'MMMM d, yyyy']</code></td> <td>December 4, 2026</td> <td>Ausgeschriebener Monatsname</td> </tr> <tr> <td><code>[Date &#124; date:'dd-MM-yyyy']</code></td> <td>04-12-2026</td> <td>Europäisch mit Bindestrichen</td> </tr> </tbody> </table> <p>Der Filter unterstützt auch ausdrucksstärkere Formate, wenn Sie den vollständigen Monatsnamen anzeigen, den Wochentag einschließen oder Zeitkomponenten hinzufügen möchten. Eine vollständige Liste der Formatierungsoptionen und Beispiele finden Sie im Hilfecenter-Artikel <a href="https://www.docugenerate.com/de/hilfe/articles/wie-formatiere-ich-daten-mit-filtern/">Wie formatiere ich Daten mit Filtern?</a>.</p> <h2 id="heutiges-datum">Heutiges Datum in die Vorlage Einfügen</h2> <p>Für Dokumente, bei denen das Datum immer das aktuelle Datum zum Generierungszeitpunkt widerspiegeln soll, ist es nicht notwendig, ein Datum über den Datensatz zu übergeben. Ein Empfehlungsschreiben, ein täglicher Statusbericht oder ein spontanes Zertifikat benötigt einfach das heutige Datum – es wäre redundant, dieses in jede API-Anfrage oder Tabellenkalkulationszeile aufzunehmen. Für diese Fälle können Sie ein Datumsfeld direkt in die Word-Vorlage einfügen. Wenn DocuGenerate das Dokument verarbeitet, wird das Feld ausgewertet und gibt automatisch das aktuelle Datum aus – ohne einen Datumswert in den Daten.</p> <h3 id="word-datum">Heutiges Datum in Microsoft Word Einfügen</h3> <p>Microsoft Word ermöglicht das Einfügen des aktuellen Datums über das <a href="https://support.microsoft.com/en-US/Word/insert-today-s-date-in-a-word-document" target="_blank" rel="nofollow noopener">Date &amp; Time</a>-Feld. Dieses öffnet ein Dialogfeld mit einer Liste von Datums- und Uhrzeitformaten sowie einem Kontrollkästchen <strong>Update automatically</strong>. Durch Aktivieren dieser Option wird das statische Datum in ein Live-Feld umgewandelt, das bei jedem Öffnen oder Verarbeiten des Dokuments aktualisiert wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/word-insert-date-time-dialog.png" alt="Heutiges Datum und Uhrzeit in Microsoft Word einfügen"/></p> <p>Die verfügbaren Formate in Word sind vorgegeben und an die regionalen Einstellungen des Systems gebunden. Sie können die Sprache über das Dropdown-Menü ändern, und die verfügbare Formatliste wird entsprechend der gewählten Sprache aktualisiert.</p> <p>Wenn Sie mehr Kontrolle über das Datumsformat benötigen, können Sie stattdessen <strong>Insert a Field</strong> wählen und die Kategorie <strong>Date and Time</strong> sowie den Feldnamen <strong>Date</strong> auswählen. Klicken Sie auf <strong>Options</strong>, um aus einer Liste vordefinierter Datumsformate auszuwählen, oder geben Sie das gewünschte Format direkt in das Textfeld <strong>Field code</strong> ein. Um das gleiche Ergebnis zu erhalten und das Datum für die Sprache <strong>French</strong> zu formatieren, müssen Sie den Wert <code class="language-plaintext highlighter-rouge">DATE \@ "dd/MM/yyyy"</code> im Feldcode verwenden. Dies erfordert jedoch Vertrautheit mit Words Feldsyntax und ist für die meisten Anwender nicht praktikabel.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/word-insert-field-dialog.png" alt="Heutiges Datum als Feld in Microsoft Word einfügen"/></p> <p>Eine Vorlage, die nach diesem Ansatz erstellt wurde, finden Sie unter <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in Word.docx">Word-spezifische Vorlage</a>, in der das <code class="language-plaintext highlighter-rouge">[Date]</code>-Zusammenführungs-Tag durch Words automatisches Datumsfeld im europäischen Format ersetzt wurde.</p> <h3 id="libreoffice-datum">Heutiges Datum in LibreOffice Einfügen</h3> <p>LibreOffice Writer bietet eine flexiblere Möglichkeit, das heutige Datum einzufügen, mit gebietsschemaabhängiger Formatierung, die eine Vielzahl regionaler Datumskonventionen abdeckt. Um ein Datumsfeld einzufügen, gehen Sie zu <strong>Insert</strong> &gt; <strong>Field</strong> &gt; <strong>Date (variable)</strong>, wodurch ein Datumsfeld in Ihr Dokument mit einem Standardformat eingefügt wird. Klicken Sie mit der rechten Maustaste auf das neu eingefügte Datum und wählen Sie <strong>Edit Fields</strong>, um das Felder-Dialogfeld zu öffnen.</p> <p>In diesem Dialogfeld zeigt die Spalte <strong>Format</strong> auf der rechten Seite eine Liste vordefinierter Formate für die Standard-Systemsprache an. Diese Standardwerte decken gängige Muster ab, aber um Formate für verschiedene Gebietsschemata aufzurufen, klicken Sie auf die Option <strong>Additional formats</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/libreoffice-fields-dialog.png" alt="Datumsfeld in LibreOffice über das Felder-Dialogfeld einfügen"/></p> <p>Dadurch öffnet sich ein neues Dialogfeld, in dem LibreOffices Datumsformatierungsfunktion besonders nützlich wird. Ein <strong>Language</strong>-Dropdown auf der rechten Seite des Dialogfelds ermöglicht die Auswahl aus Hunderten von Sprach- und Gebietsschema-Kombinationen. Sobald Sie eine Sprache auswählen, wird die <strong>Format</strong>-Liste aktualisiert und zeigt Datumsmuster an, die für dieses Gebietsschema typisch sind.</p> <p>Wenn Sie beispielsweise <strong>French (France)</strong> auswählen, werden Muster wie <code class="language-plaintext highlighter-rouge">JJ/MM/AAAA</code> verfügbar, was die französische Schreibweise für <code class="language-plaintext highlighter-rouge">TT/MM/JJJJ</code> ist. Sie können auch einen benutzerdefinierten Formatcode direkt in das Feld <strong>Format Code</strong> eingeben, wenn keine der aufgeführten Optionen Ihren Anforderungen entspricht.</p> <p>Eine Vorlage, die nach diesem Ansatz erstellt wurde, finden Sie unter <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in LibreOffice.docx">LibreOffice-spezifische Vorlage</a>. Dieser Ansatz ist besonders praktisch, wenn Sie mehrere Varianten derselben Vorlage für verschiedene Regionen pflegen. Jede Version kann denselben Inhalt verwenden, aber das Datumsfeld für das Zielgebietsschema konfiguriert haben, sodass die Ausgabe den lokalen Erwartungen entspricht, ohne die Daten oder den Generierungs-Workflow zu ändern.</p> <h2 id="ansatz-waehlen">Den Richtigen Ansatz Wählen</h2> <p>Beide Ansätze decken unterschiedliche Szenarien ab und können in derselben Organisation je nach Dokumenttyp beide Anwendung finden. Der <a href="#datumsfilter">Datumsfilter</a> ist die richtige Wahl, wenn das Datum ein bedeutsames Datenfeld ist, das mit einem bestimmten Ereignis verknüpft ist. Das Unterzeichnungsdatum eines Vertrags, das Fälligkeitsdatum einer Rechnung oder das Bezugsdatum eines Schreibens gehören alle in die Daten, und der Filter ermöglicht die Darstellung in jeder regionalen Konvention, die der Empfänger erwartet. Da er einen einzelnen ISO-8601-Eingabewert entgegennimmt und diesen bei der Ausgabe formatiert, können Sie US-amerikanische und europäische Zielgruppen mit denselben Daten bedienen, indem Sie einfach den Formatstring in der Vorlage ändern.</p> <p>Das direkte Einfügen des <a href="#heutiges-datum">heutigen Datums</a> in die Vorlage ist die richtige Wahl, wenn kein Datumswert in den Daten vorhanden ist und das Dokument einfach mit dem aktuellen Datum gestempelt werden soll. Dies hält den Datensatz sauber und die Generierungsanfrage einfach. Teams, die Dokumente für mehrere Regionen generieren, pflegen oft eine Reihe gebietsschemaspezifischer Vorlagen, in denen das Datumsfeld jeweils für die Zielgruppe vorkonfiguriert ist, und verweisen jeden regionalen Workflow auf die entsprechende Vorlage.</p> <h2 id="fazit">Fazit</h2> <p>Die korrekte Datumsanzeige in generierten Dokumenten hängt davon ab, wo der Datumswert herkommt. Stammt er aus Ihrem Datensatz, verwenden Sie DocuGenerates Filter mit einem Formatstring, der Ihrer Zielkonvention entspricht. Soll das Dokument immer das heutige Datum widerspiegeln, fügen Sie ein Datumsfeld mit Word oder LibreOffice in die Vorlage ein – für eine erweiterte Gebietsschemakontrolle. Beide Ansätze funktionieren mit demselben Vorlagenformat und fügen sich nahtlos in DocuGenerates Generierungs-Workflow ein, ohne Änderungen daran zu erfordern, wie Dokumente generiert oder bereitgestellt werden.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Date Filter.docx">Empfehlungsschreiben</a>-Vorlage, konfiguriert für den Datumsfilter.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in Word.docx">Empfehlungsschreiben</a>-Vorlage mit Words automatischem Datumsfeld.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in LibreOffice.docx">Empfehlungsschreiben</a>-Vorlage mit LibreOffices Datumsfeld.</li> <li>DocuGenerates Hilfecenter-Artikel zu <a href="https://www.docugenerate.com/de/hilfe/articles/wie-formatiere-ich-daten-mit-filtern/">Wie formatiere ich Daten mit Filtern?</a>.</li> <li>Microsofts Dokumentation zum <a href="https://support.microsoft.com/en-US/Word/insert-today-s-date-in-a-word-document" target="_blank" rel="nofollow noopener">Einfügen des heutigen Datums in ein Word-Dokument</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Letters"/> <category term="Microsoft Word"/> <category term="Expressions"/> <summary type="html"><![CDATA[Die Steuerung der Datumsanzeige in generierten Dokumenten ist eine der häufigsten Formatierungsheraus- forderungen, insbesondere bei der Erstellung von Dokumenten für verschiedene Regionen. Dieser Artikel behandelt zwei verschiedene Ansätze mit Beispielen für US-amerikanische und europäische Datumsformate.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/033-date-formatting/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/033-date-formatting/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Seriendruck mit DocuGenerate im Vergleich zu Microsoft Word</title> <link href="https://www.docugenerate.com/de/blog/seriendruck-mit-docugenerate-im-vergleich-zu-microsoft-word/" rel="alternate" type="text/html" title="Seriendruck mit DocuGenerate im Vergleich zu Microsoft Word"/> <published>2026-04-22T00:00:00+00:00</published> <updated>2026-04-22T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/seriendruck-mit-docugenerate-im-vergleich-zu-microsoft-word</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/seriendruck-mit-docugenerate-im-vergleich-zu-microsoft-word/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Seriendruck ist der Prozess, bei dem eine Dokumentvorlage mit einer Datenquelle kombiniert wird, um in einem einzigen Vorgang mehrere personalisierte Dokumente zu erstellen. Er wird häufig für Verträge, Angebotsschreiben, Rechnungen, Zertifikate und andere Dokumente verwendet, bei denen die Gesamtstruktur gleich bleibt, aber bestimmte Felder sich je nach Empfänger oder Datensatz ändern. <a href="https://www.microsoft.com/de-de/microsoft-365/word" target="_blank" rel="nofollow noopener">Microsoft Word</a> verfügt seit Jahrzehnten über eine integrierte Seriendruckfunktion, was es zu einem vertrauten Ausgangspunkt für viele Teams macht, die bereits im Microsoft-365-Ökosystem arbeiten. Dedizierte Dokumentengenerierungsplattformen wie <a href="https://www.docugenerate.com/">DocuGenerate</a> gehen dasselbe Problem anders an: cloudbasierte Verarbeitung, eine REST-API und eine Reihe von Vorlagenfunktionen, die weit über das hinausgehen, was Word nativ unterstützt.</p> <p>In diesem Artikel bewerten wir beide Ansätze anhand derselben Vorlage und Datendatei, sodass die Ergebnisse direkt vergleichbar sind. Wir gehen jeden Workflow von Anfang bis Ende durch und untersuchen dann, wie die beiden Tools bestimmte Funktionen handhaben, darunter Ausgabeformate, Massengenerierung, dynamische Dateinamen, bedingte Inhalte, Bilder und QR-Codes. Das Ziel ist nicht, einen universellen Gewinner zu küren, sondern Ihnen ein klares Bild davon zu geben, wo jedes Tool passt, damit Sie das richtige für Ihren Workflow wählen können.</p> <h2 id="beispieldateien">Die Beispieldateien</h2> <p>Um den Vergleich greifbar zu halten, verwenden beide Workflows in diesem Artikel dieselben zwei Dateien. Die Vorlage ist das Word-Dokument <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.docx">Employment Contract.docx</a> aus unserer <a href="https://www.docugenerate.com/de/vorlagen/#verträge">Vorlagenbibliothek</a>. Es enthält Zusammenführungs-Tags für Mitarbeiterdetails, Vertragsdaten, Vergütung und andere standardmäßige Vertragskonditionen.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/employment-contract-template.png" alt="Arbeitsvertragsvorlage mit Zusammenführungs-Tags"/></p> <p>Die Datenquelle ist die passende Tabellenkalkulation <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.xlsx">Employment Contract.xlsx</a>, bei der jede Zeile einen Mitarbeiter darstellt und die Spaltenüberschriften genau den Zusammenführungs-Tag-Namen in der Vorlage entsprechen.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/employment-contract-data.png" alt="Datentabelle des Arbeitsvertrags"/></p> <p>Zu beachten ist, dass die Spaltennamen in der Tabellenkalkulation genau mit den Zusammenführungs-Tag-Namen in der Vorlage übereinstimmen müssen, damit beide Tools korrekt funktionieren. Dies ist eine Anforderung, die sich Word und DocuGenerate teilen, und sie gilt unabhängig davon, welches Trennzeichenformat verwendet wird.</p> <h2 id="word-seriendruck">Seriendruck in Microsoft Word</h2> <p>Words Seriendruck ist über die <a href="https://support.microsoft.com/de-de/office/verwenden-von-seriendruck-fuer-massen-e-mails-briefe-etiketten-und-umschlaege-f488ed5b-b849-4c11-9cff-932c49474705" target="_blank" rel="nofollow noopener">Mailings-Registerkarte</a> zugänglich, die einen strukturierten Workflow für die Verbindung einer Vorlage mit einer Datenquelle, das Einfügen von Feldern, die Vorschau der Ausgabe und das Abschließen des Seriendrucks bietet. All dies geschieht lokal innerhalb der Word-Anwendung.</p> <h3 id="word-datenquelle">Die Excel-Datenquelle Verbinden</h3> <p>Um einen Seriendruck zu beginnen, öffnen Sie die Arbeitsvertragsvorlage in Word und navigieren Sie zu <strong>Mailings</strong> &gt; <strong>Select Recipients</strong> &gt; <strong>Use an Existing List</strong>. Word fordert Sie auf, eine Datei auszuwählen. Nach der Auswahl von <code class="language-plaintext highlighter-rouge">Employment Contract.xlsx</code> erscheint ein Dialogfeld, in dem Sie <a href="https://support.microsoft.com/de-de/office/seriendruck-mithilfe-einer-excel-tabelle-858c7d7f-5cc0-4ba1-9a7b-0a948fa3d7d3" target="_blank" rel="nofollow noopener">auswählen können, welches Tabellenblatt</a> als Datenquelle verwendet werden soll – nützlich, wenn Ihre Arbeitsmappe mehrere Registerkarten enthält.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-select-recipients.png" alt="Auswahl der Excel-Datenquelle in Word"/></p> <p>Mit der verbundenen Datenquelle liest Word die Spaltenüberschriften ein und macht sie als Seriendruckfelder für die gesamte Sitzung verfügbar. Sie können auch <strong>Edit Recipient List</strong> öffnen, um Datensätze zu filtern, zu sortieren oder bestimmte Zeilen auszuschließen, bevor Sie den Seriendruck ausführen.</p> <p>Beachten Sie: Wenn Sie die Word-Vorlage nach dem Verbinden mit einer Excel-Datei speichern, wird der Pfad zu dieser Datei im Dokument gespeichert. Wenn die Excel-Datei später verschoben, umbenannt oder gelöscht wird, führt das erneute Öffnen der Vorlage zu einem Fehler: <em>“Word cannot find its data source”</em>. Word fordert Sie dann auf, die Datei neu zu verknüpfen oder die Datenquellenverbindung vollständig zu entfernen. Dieses Verknüpfungsverhalten bedeutet, dass Vorlage und Datendatei synchron bleiben müssen, was zu einem Wartungsaufwand führen kann, wenn Vorlagen im Team geteilt werden.</p> <h3 id="word-seriendruckfelder">Die Seriendruckfelder Einfügen</h3> <p>Sobald die Datenquelle verbunden ist, können Sie Seriendruckfelder über <strong>Mailings</strong> &gt; <strong>Insert Merge Field</strong> an beliebiger Stelle in der Vorlage platzieren. Word umschließt jedes Feld mit dem festen Trennzeichenformat <code class="language-plaintext highlighter-rouge">«Feldname»</code> unter Verwendung von Guillemet-Zeichen, die über die Benutzeroberfläche eingefügt und nicht direkt getippt werden. Dieses Trennzeichenformat ist nicht konfigurierbar: alle Word-Seriendruckfelder verwenden <code class="language-plaintext highlighter-rouge">«»</code> und können nicht in ein anderes Zeichenpaar geändert werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-insert-merge-fields.gif" alt="Seriendruckfelder in die Word-Vorlage einfügen"/></p> <p>Beachten Sie, dass Word beim Erstellen der Feldnamen für den Seriendruck Leerzeichen in den Spaltennamen durch Unterstriche ersetzt. Die Spalte mit dem Namen <code class="language-plaintext highlighter-rouge">Contract Date</code> in der Tabellenkalkulation wird also zu <code class="language-plaintext highlighter-rouge">«Contract_Date»</code> in der Seriendruckfeldliste. In Word funktioniert das einwandfrei, aber es ist nützlich, das im Hinterkopf zu behalten, wenn Sie dieselbe Vorlage beispielsweise in DocuGenerate verwenden möchten, da die Spaltennamen in Excel dann nicht mehr exakt mit den Zusammenführungs-Tags übereinstimmen.</p> <h3 id="ergebnisse-vorschau">Die Ergebnisse in der Vorschau Anzeigen</h3> <p>Die Schaltfläche <strong>Preview Results</strong> auf der Registerkarte <strong>Mailings</strong> ersetzt jedes Seriendruckfeld durch den entsprechenden Wert aus der ersten Datenzeile. Mit Navigationspfeilen können Sie durch die verbleibenden Datensätze blättern, um die Ausgabe vor dem endgültigen Seriendruck zu überprüfen. Diese sofortige Vorschau ist eine der nützlichsten Funktionen von Word für die Vorlagenentwicklung.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-preview-results.gif" alt="Vorschau der Seriendruck-Ergebnisse in Word"/></p> <h3 id="seriendruck-abschliessen">Den Seriendruck Abschließen</h3> <p>Mit der verifizierten Vorlage bietet <strong>Finish &amp; Merge</strong> drei Optionen: die zusammengeführten Dokumente in einer neuen Word-Datei bearbeiten, direkt an einen Drucker senden oder als einzelne E-Mail-Nachrichten über Outlook versenden. Die Auswahl von <strong>Edit Individual Documents</strong> erzeugt eine einzelne Word-Datei, in der jeder zusammengeführte Datensatz durch einen Seitenumbruch getrennt ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-finish-merge.png" alt="Den Seriendruck in Word abschließen"/></p> <p>Sie können eine Kopie des <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract Merged.docx">zusammengeführten Dokuments</a> herunterladen, um zu sehen, wie die Ausgabe aussieht. Um eine PDF zu erhalten, müssen Sie diese Datei nach der Generierung manuell speichern oder exportieren.</p> <p>Word generiert keine einzelnen Dateien pro Datensatz als Teil des Seriendruck-Prozesses. Der gesamte Workflow läuft ausschließlich auf dem Desktop ab: Es gibt keine API, keine Cloud-Verarbeitung und keine Möglichkeit, einen Seriendruck programmgesteuert aus einer anderen Anwendung heraus auszulösen.</p> <h2 id="docugenerate">Seriendruck in DocuGenerate</h2> <p>DocuGenerate ist eine cloudbasierte Dokumentengenerierungsplattform, die über eine Web-App und eine <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-die-api-referenz/">REST-API</a> funktioniert. Die Vorlage bleibt eine Standard-DOCX-Datei, sodass Sie sie wie gewohnt in Word entwerfen und bearbeiten können. Der Generierungsschritt findet in der Cloud statt und erzeugt das endgültige Dokument, ohne dass lokale Software außer einem Browser oder einem HTTP-Client erforderlich ist.</p> <h3 id="docugenerate-vorlage">Die Vorlage Einrichten</h3> <p>Laden Sie zunächst die Arbeitsvertragsvorlage über die Seite <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">Neue Vorlage</a> in der Web-App hoch. DocuGenerate liest die <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> aus dem Dokument aus und verwendet sie als die bei der Generierung zu befüllenden Felder.</p> <p>Die Zusammenführungs-Tags können eckige Klammern <code class="language-plaintext highlighter-rouge">[]</code> als <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-tag-begrenzer/">Trennzeichen</a> verwenden, aber es ist auch möglich, die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">Trennzeichen anzupassen</a> auf ein beliebiges Zeichenpaar Ihrer Wahl, einschließlich der Word-typischen <code class="language-plaintext highlighter-rouge">«»</code>-Guillemets, wenn Sie eine vorhandene Word-Seriendruckvorlage wiederverwenden möchten, ohne sie zu ändern.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/docugenerate-employment-contract-v2.png" alt="Arbeitsvertragsvorlage in DocuGenerate"/></p> <h3 id="docugenerate-excel">Aus Excel Generieren</h3> <p>Um <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-einer-excel-oder-csv-datei-generieren/">Dokumente aus Excel zu generieren</a>, klicken Sie auf <strong>New Document</strong> in der Vorlage, wählen Sie die Option <strong>Excel or CSV file</strong> und laden Sie <code class="language-plaintext highlighter-rouge">Employment Contract.xlsx</code> hoch. DocuGenerate erkennt die Tabellenblätter in der Arbeitsmappe und lässt Sie auswählen, welches verwendet werden soll. Wie bei Word müssen die Spaltennamen in der Tabellenkalkulation genau mit den Zusammenführungs-Tag-Namen in der Vorlage übereinstimmen, damit die Generierung erfolgreich ist.</p> <p>Im Abschnitt <strong>Data Items</strong> können Sie durch Anklicken auswählen, welche Datensätze für den Seriendruck verwendet werden sollen. Standardmäßig werden alle Datensätze in der Tabellenkalkulation zur Generierung der Dokumente verwendet.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/docugenerate-generate-from-excel.gif" alt="Arbeitsverträge in DocuGenerate in einem Batch generieren"/></p> <p>Das <a href="https://www.docugenerate.com/de/hilfe/articles/zusammenfuehrungsformat-auswaehlen/">Seriendruck-Exportformat</a> kann ein Word-Dokument sein, was der nativen Ausgabe von Word entspricht, oder eine direkt in der Cloud generierte PDF. Für mehrere Datensätze können Sie entweder <a href="https://www.docugenerate.com/de/hilfe/articles/generierte-dokumente-in-einer-einzelnen-datei-zusammenfuehren/">alle Dokumente in einer einzigen Datei zusammenführen</a> (ein Beispiel finden Sie unter <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contracts.docx">Employment Contracts.docx</a>) oder sie als <a href="https://www.docugenerate.com/de/hilfe/articles/separate-dokumente-fuer-jedes-datenelement-generieren/">separate Dateien</a> in einem ZIP-Archiv herunterladen (ein Beispiel finden Sie unter <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contracts.zip">Employment Contracts.zip</a>).</p> <h3 id="docugenerate-api">Über die API Generieren</h3> <p>DocuGenerate stellt auch eine API bereit, über die Sie die Dokumentengenerierung aus einem beliebigen externen System heraus auslösen können. Beim Generieren aus einer Excel-Datei <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">über die API</a> übergeben Sie <code class="language-plaintext highlighter-rouge">file</code> als Parameter und optional den Parameter <code class="language-plaintext highlighter-rouge">sheet</code>, um anzugeben, welche Registerkarte verwendet werden soll. Während die Web-App eine Zeilenbereichsauswahl unterstützt, verarbeitet die API standardmäßig alle Zeilen im ausgewählten Tabellenblatt. Dadurch ist es möglich, die Dokumentengenerierung in Automatisierungs-Workflows und Backend-Anwendungen zu integrieren, die Dokumente automatisch erstellen müssen.</p> <h2 id="vergleich">Funktionsvergleich</h2> <p>Nachdem beide Workflows beschrieben wurden, folgt nun ein genauerer Blick darauf, wie Word und DocuGenerate bestimmte Funktionen handhaben, die bei Dokumentengenerierungs-Workflows am wichtigsten sind. Sie können auf jede Funktion in der Tabelle unten klicken, um direkt zu den Details zu springen.</p> <table class="table table-bordered"> <thead> <tr> <th>Funktion</th> <th>Word</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><a href="#vergleich-trennzeichen">Trennzeichen</a></td> <td>❌ Fest</td> <td>✅ Anpassbar</td> </tr> <tr> <td><a href="#vergleich-vorschau">Vorschau</a></td> <td>✅ Sofortige Vorschau in der App</td> <td>❌ Erfordert Dokumentgenerierung</td> </tr> <tr> <td><a href="#vergleich-ausgabe">PDF-Export</a></td> <td>❌ Nur über manuelles Speichern</td> <td>✅ Ja</td> </tr> <tr> <td><a href="#vergleich-massengenerierung">Massengenerierung</a></td> <td>✅ Einzelne zusammengeführte Word-Datei</td> <td>✅ Einzelne kombinierte Datei oder einzelne Dateien in einem ZIP</td> </tr> <tr> <td><a href="#vergleich-dateinamen">Dynamische Dateinamen</a></td> <td>❌ Nein</td> <td>✅ Ja, mit Zusammenführungs-Tags</td> </tr> <tr> <td><a href="#vergleich-api">API-Zugang</a></td> <td>❌ Nein</td> <td>✅ Ja</td> </tr> <tr> <td><a href="#vergleich-e-mail">E-Mail-Versand</a></td> <td>✅ Ja, über Outlook</td> <td>❌ Nein, möglich über Automatisierungstools</td> </tr> <tr> <td><a href="#vergleich-bedingungen">Bedingungen</a></td> <td>✅ Ja, via Rules</td> <td>✅ Ja, inkl. erweiterter Ausdrücke</td> </tr> <tr> <td><a href="#vergleich-bilder">Bilder</a></td> <td>✅ Nur lokale Dateien</td> <td>✅ Per URL oder Base64, mit Größensteuerung</td> </tr> <tr> <td><a href="#vergleich-qr">QR-Codes und Barcodes</a></td> <td>✅ Ja, über Feldcodes</td> <td>✅ Ja, mit Darstellungsoptionen</td> </tr> <tr> <td><a href="#vergleich-pdf-anhaengen">PDF anhängen</a></td> <td>❌ Nein</td> <td>✅ Ja</td> </tr> </tbody> </table> <h3 id="vergleich-trennzeichen">Trennzeichen</h3> <p>Word erfordert die <code class="language-plaintext highlighter-rouge">«»</code>-Guillemet-Zeichen als Seriendruckfeld-Trennzeichen. Diese werden über die Word-Benutzeroberfläche eingefügt und können nicht getippt oder in ein anderes Format geändert werden. DocuGenerate ermöglicht es, <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">beliebige Trennzeichen</a> in den Vorlageneinstellungen festzulegen, was die Migration einer bestehenden Word-Vorlage oder die Verwendung eines von Ihrem Team bereits genutzten Formats vereinfacht.</p> <h3 id="vergleich-vorschau">Vorschau</h3> <p>Die Schaltfläche <strong>Preview Results</strong> in Word zeigt das ausgefüllte Dokument sofort an, was das Iterieren an der Vorlage während der Entwicklung erleichtert, ohne jedes Mal eine Datei generieren zu müssen. DocuGenerate verfügt nicht über eine entsprechende In-App-Vorschau. Um die Ausgabe zu sehen, müssen Sie ein Dokument generieren. Für Vorlagen in aktiver Entwicklung fügt dies eine kleine Rückkopplungsschleife im Vergleich zu Word hinzu, obwohl die generierte Datei in der Regel in wenigen Sekunden verfügbar ist.</p> <h3 id="vergleich-ausgabe">PDF-Export</h3> <p>Words Seriendruck produziert ein Word-Dokument als primäre Ausgabe. Die Konvertierung in PDF erfordert das separate Speichern oder Exportieren der Datei, und der Prozess erstellt nicht automatisch einzelne PDF-Dateien pro Datensatz. DocuGenerate kann <a href="https://www.docugenerate.com/de/hilfe/articles/zusammenfuehrungsformat-auswaehlen/">sowohl DOCX als auch PDF</a> direkt ausgeben.</p> <h3 id="vergleich-massengenerierung">Massengenerierung</h3> <p>Beide Tools unterstützen die Generierung mehrerer Dokumente aus einer Tabellenkalkulation in einem Durchgang. Word fasst alle zusammengeführten Datensätze in einer einzelnen Word-Datei mit Seitenumbrüchen zwischen den Datensätzen zusammen. DocuGenerate gibt Ihnen mehr Kontrolle: Sie können <a href="https://www.docugenerate.com/de/hilfe/articles/generierte-dokumente-in-einer-einzelnen-datei-zusammenfuehren/">alle Dokumente in einer einzigen Ausgabedatei zusammenführen</a> oder einzelne Dateien in einem ZIP-Archiv erstellen.</p> <h3 id="vergleich-dateinamen">Dynamische Dateinamen</h3> <p>Word unterstützt keine dynamischen Dateinamen für die zusammengeführte Ausgabe. DocuGenerate ermöglicht die Verwendung von Zusammenführungs-Tags im <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentname-und-dateiname-festlegen/">Dokumentnamen</a>, sodass jede generierte Datei mit Werten aus der Datenzeile benannt werden kann, beispielsweise dem vollständigen Namen des Mitarbeiters oder dem Vertragsstartdatum. Dies hält die Ausgabe sofort organisiert, ohne dass nach dem Seriendruck manuell umbenannt werden muss.</p> <h3 id="vergleich-api">API-Zugang</h3> <p>Word-Seriendruck hat keine API und kann nicht von außerhalb der Word-Anwendung ausgelöst werden. DocuGenerate stellt eine REST-API bereit, die sich mit externen Systemen integriert und es ermöglicht, Dokumente programmgesteuert als Teil einer Backend-Anwendung oder einer Automatisierungsplattform zu generieren.</p> <h3 id="vergleich-e-mail">E-Mail-Versand</h3> <p>Word unterstützt das Versenden zusammengeführter Dokumente als einzelne E-Mail-Nachrichten direkt über Outlook, was für Massenbenachrichtigungen oder interne Kommunikation nützlich ist. DocuGenerate verfügt nicht über eine integrierte E-Mail-Zustellung, kann jedoch mit E-Mail-Tools über Automatisierungsplattformen wie <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/">Zapier</a>, <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-make-automatisieren/">Make</a>, <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/">n8n</a> oder <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-power-apps-automatisieren/">Power Automate</a> kombiniert werden, um dasselbe Ergebnis als Teil eines größeren Workflows zu erzielen.</p> <h3 id="vergleich-bedingungen">Bedingungen</h3> <p>Beide Tools unterstützen bedingten Inhalt in Vorlagen. Word bietet <a href="https://support.microsoft.com/de-de/office/festlegen-von-regeln-fuer-einen-seriendruck-d546ee7e-ab7a-4d6d-b488-41f9e4bd1409" target="_blank" rel="nofollow noopener">Rules</a> wie <code class="language-plaintext highlighter-rouge">IF...THEN...ELSE</code>, verfügbar unter <strong>Mailings</strong> &gt; <strong>Rules</strong>, mit denen Sie Inhalte basierend auf Feldwerten ein- oder ausblenden können. DocuGenerate verwendet eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bedingungen-zu-einer-vorlage-hinzu/">Bedingungstag-Syntax</a>, die direkt im Vorlagenkörper geschrieben wird. Mit aktivierter <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/">erweiterter Syntax</a> unterstützt DocuGenerate außerdem logische Ausdrücke, Vergleiche und Arithmetik in Bedingungen, was über den in Word verfügbaren Regelsatz hinausgeht.</p> <h3 id="vergleich-bilder">Bilder</h3> <p>Word erlaubt dynamische Bilder im Seriendruck, aber die Bilder müssen lokal auf dem die Zusammenführung ausführenden Rechner gespeichert und über Feldcodes konfiguriert werden, was die Einrichtung schwer reproduzierbar oder automatisierbar macht. DocuGenerate unterstützt Bilder, die per <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bilder-zu-einer-vorlage-hinzu/">URL oder Base64</a> referenziert werden, was in cloudbasierten Workflows, bei denen Bilder extern gehostet werden, zuverlässig funktioniert. Sie können die Bildabmessungen auch direkt im Zusammenführungs-Tag über den <code class="language-plaintext highlighter-rouge">size</code>-Filter steuern, was die Layout-Kontrolle ohne Änderung der Dokumentstruktur vereinfacht.</p> <h3 id="vergleich-qr">QR-Codes und Barcodes</h3> <p>Word unterstützt <a href="https://support.microsoft.com/de-de/office/feldfunktionen-seriendruckbarcode-812fc43f-cb53-4782-8f9f-290ed08d34f3" target="_blank" rel="nofollow noopener">Barcodes und QR-Codes</a> über die Feldcodes <code class="language-plaintext highlighter-rouge">MergeBarCode</code> und <code class="language-plaintext highlighter-rouge">DisplayBarcode</code>, wobei die Syntax nicht einfach ist und die visuellen Anpassungsmöglichkeiten begrenzt sind. DocuGenerate verfügt über eine dedizierte <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-qr-codes-und-barcodes-hinzu/">QR-Code- und Barcode-Syntax</a>, die jeden Feldwert in einen QR-Code oder Barcode mit konfigurierbaren Abmessungen, Farben und Formatierungen direkt aus dem Zusammenführungs-Tag konvertiert.</p> <h3 id="vergleich-pdf-anhaengen">PDF Anhängen</h3> <p>Word unterstützt nativ nicht das Anhängen von zusätzlichem PDF-Inhalt an eine zusammengeführte Ausgabedatei. DocuGenerate ermöglicht das <a href="https://www.docugenerate.com/de/hilfe/articles/ein-pdf-am-ende-generierter-dokumente-anhaengen/">Anhängen einer statischen PDF-Datei</a> am Ende jedes generierten Dokuments, was nützlich ist für Verträge, die standardmäßige Allgemeine Geschäftsbedingungen, rechtliche Hinweise oder feste Anhänge als Teil jeder Ausgabe enthalten müssen.</p> <h2 id="fazit">Fazit</h2> <p>Für Teams, die vollständig in der Microsoft-365-Desktop-Umgebung arbeiten und zusammengeführte Dokumente ohne externe Systeme erstellen müssen, deckt Words integrierter Seriendruck die Grundlagen gut ab. Er handhabt Feldsubstitution, Bedingungsregeln und direkte E-Mail-Zustellung über Outlook, alles ohne ein separates Tool.</p> <p>DocuGenerate ist besser geeignet, wenn die Dokumentengenerierung an einem größeren Workflow teilnehmen muss. Seine API macht es aus Automatisierungsplattformen, Backend-Systemen und No-Code-Tools nutzbar, und Funktionen wie PDF-Ausgabe, dynamische Dateinamen und PDF-Anhängen decken Szenarien ab, die Word-Seriendruck nativ nicht bewältigen kann. Für Teams, die Word bereits zur Vorlagengestaltung verwenden, ist der Übergang minimal, da die Vorlagen dasselbe Format haben.</p> <p>Die Wahl zwischen beiden hängt davon ab, wo der Generierungsschritt in Ihrem Prozess liegt. Wenn es sich um eine einmalige Aufgabe handelt, die auf einem Desktop ausgeführt wird, ist Word bereits verfügbar und ausreichend. Wenn es ein wiederkehrender, automatisierter Schritt in einem Geschäfts-Workflow ist, bietet ein dediziertes Tool wie DocuGenerate die Flexibilität, die Dokumentengenerierung mit Ihren bestehenden Systemen zu verbinden.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die Word-Vorlage <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.docx">Employment Contract.docx</a>, die in diesem Artikel verwendet wird.</li> <li>Die Beispieldatendatei <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.xlsx">Employment Contract.xlsx</a>.</li> <li>Das <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract Merged.docx">Employment Contract Merged.docx</a> — die aus Word zusammengeführte Ausgabe.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contracts.zip">Employment Contracts.zip</a> mit dynamischen Dateinamen aus DocuGenerate.</li> <li>Microsofts Dokumentation zum <a href="https://support.microsoft.com/de-de/office/verwenden-von-seriendruck-fuer-massen-e-mails-briefe-etiketten-und-umschlaege-f488ed5b-b849-4c11-9cff-932c49474705" target="_blank" rel="nofollow noopener">Seriendruck für Briefe und Massendokumente</a>.</li> <li>Microsofts Leitfaden zur <a href="https://support.microsoft.com/de-de/office/seriendruck-mithilfe-einer-excel-tabelle-858c7d7f-5cc0-4ba1-9a7b-0a948fa3d7d3" target="_blank" rel="nofollow noopener">Verwendung einer Excel-Tabelle</a> als Seriendruck-Datenquelle.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Contracts"/> <category term="Microsoft Word"/> <category term="Mail Merge"/> <summary type="html"><![CDATA[Seriendruck ist seit Jahrzehnten ein verbreitetes Verfahren, und Microsoft Word bietet es als integrierte Funktion an. Aber wie schneidet es im Vergleich zu einer dedizierten Dokumentengenerierungsplattform wie DocuGenerate ab? Finden Sie es in dieser Side-by-Side-Analyse beider Lösungen heraus.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/032-word-mail-merge/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/032-word-mail-merge/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Immobilienanzeigen mit n8n und DocuGenerate Generieren</title> <link href="https://www.docugenerate.com/de/blog/immobilienanzeigen-mit-n8n-und-docugenerate-generieren/" rel="alternate" type="text/html" title="Immobilienanzeigen mit n8n und DocuGenerate Generieren"/> <published>2026-03-13T00:00:00+00:00</published> <updated>2026-03-13T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/immobilienanzeigen-mit-n8n-und-docugenerate-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/immobilienanzeigen-mit-n8n-und-docugenerate-generieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Immobilienmakler und Hausverwaltungen erstellen regelmäßig Anzeigendokumente für neue Objekte – sei es für Druckmedien, E-Mail-Kampagnen oder Kundenportale. Die manuelle Zusammenstellung dieser Dokumente – von der Sammlung von Maklerdaten und dem Verfassen von Beschreibungen bis hin zur Quellensuche für Fotos und der konsistenten Formatierung – nimmt Zeit in Anspruch, die anderweitig besser genutzt werden könnte. In diesem Tutorial erstellen wir einen automatisierten Workflow mit <a href="https://n8n.io/" target="_blank" rel="nofollow noopener">n8n</a>, <a href="https://www.anthropic.com/claude" target="_blank" rel="nofollow noopener">Claude</a> und <a href="https://www.docugenerate.com/">DocuGenerate</a>, der in Sekundenschnelle eine professionelle, versandfähige Immobilienanzeigen-PDF erstellt.</p> <p>Der Workflow verwendet den Anthropic-Knoten in n8n, der Claude aufruft, um auf Abruf realistische Anzeigendaten zu generieren, und diese über DocuGenerate in eine professionell gestaltete Word-Vorlage einzufügen. Die fertige PDF wird dann heruntergeladen und direkt in einem Dropbox-Ordner gespeichert. Obwohl dieses Tutorial Claude zur Simulation von Dateneingaben verwendet, kann derselbe Workflow mit jeder echten Datenquelle verbunden werden: einem Webformular, einem CRM, einer Immobiliendatenbank oder einer Tabellenkalkulation. Die Schritte zur Dokumentengenerierung und -lieferung bleiben unabhängig davon, woher die Daten stammen, identisch, was dieses Tutorial zu einer soliden Grundlage für die Automatisierung in der Praxis macht. Am Ende dieses Leitfadens verfügen Sie über einen vollständig funktionsfähigen n8n-Workflow, den Sie importieren und an Ihren eigenen Anwendungsfall anpassen können.</p> <h2 id="vorlage-einrichten">Die Immobilienanzeigen-Vorlage Einrichten</h2> <p>Bevor wir den n8n-Workflow aufbauen, benötigen wir eine Dokumentvorlage in DocuGenerate. Für dieses Tutorial verwenden wir die Word-Vorlage <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing.docx">Property Listing</a>, die ein sauberes Immobilien-Layout mit einem großen Headerbild oben, einer Reihe von drei Innenraumfotos, wichtigen Objektdetails, einem QR-Code, der auf die Anzeigenseite verweist, und einer Maklerkarte am Ende enthält.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/property-listing-template.png" alt="Immobilienanzeigen-Vorlage mit Zusammenführungs-Tags"/></p> <p>Die Vorlage verwendet folgende <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a>:</p> <ul> <li><code class="language-plaintext highlighter-rouge">agent_photo</code>, <code class="language-plaintext highlighter-rouge">agent_name</code>, <code class="language-plaintext highlighter-rouge">agent_email</code>, <code class="language-plaintext highlighter-rouge">agent_phone</code>, <code class="language-plaintext highlighter-rouge">agent_address</code>: Maklerkontaktdaten in der Fußzeile.</li> <li><code class="language-plaintext highlighter-rouge">price</code>: Prominent neben der Überschrift angezeigt.</li> <li><code class="language-plaintext highlighter-rouge">surface</code>, <code class="language-plaintext highlighter-rouge">bedrooms</code>, <code class="language-plaintext highlighter-rouge">bathrooms</code>, <code class="language-plaintext highlighter-rouge">kitchens</code>: Wichtige Objektdaten in der Detailzeile.</li> <li><code class="language-plaintext highlighter-rouge">description</code>: Ein kurzer Absatz zur Beschreibung des Objekts, unterhalb des Kopfzeilenabschnitts angezeigt.</li> <li><code class="language-plaintext highlighter-rouge">main_image</code>, <code class="language-plaintext highlighter-rouge">image1</code>, <code class="language-plaintext highlighter-rouge">image2</code>, <code class="language-plaintext highlighter-rouge">image3</code>: In das Layout eingebettete Objektfotos.</li> <li><code class="language-plaintext highlighter-rouge">url</code>: Wird in einen in der oberen rechten Ecke des Dokuments angezeigten QR-Code umgewandelt.</li> </ul> <p>Einige Besonderheiten dieser Vorlage sind es wert, genauer erläutert zu werden:</p> <ul> <li> <p><strong>Bildgrößen.</strong> Das Headerbild verwendet die <code class="language-plaintext highlighter-rouge">[%main_image | size:'auto':600]</code> -<a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bilder-zu-einer-vorlage-hinzu/#bilder-verkleinern-oder-vergroessern">Syntax</a>, um seine Höhe auf 600 Pixel zu begrenzen und dabei das Seitenverhältnis zu bewahren. Die drei Innenraumfotos verwenden <code class="language-plaintext highlighter-rouge">[%image1 | size:240:'auto']</code>, um ihre Breite auf 240 Pixel festzulegen, was alle drei Bilder gleich groß und in einer Reihe ausgerichtet hält. Bilder können entweder als öffentliche URL oder als base64-kodierter Daten-URI übergeben werden.</p> </li> <li> <p><strong>QR-Code.</strong> Das Feld <code class="language-plaintext highlighter-rouge">url</code> wird nicht als Klartext angezeigt. Stattdessen verwendet die Vorlage die Syntax <code class="language-plaintext highlighter-rouge">[%url | qrcode:60:60 | set:'barcolor':'#2f7498']</code>, um den Wert als <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-qr-codes-und-barcodes-hinzu/#qr-codes-hinzufuegen">QR-Code</a> mit benutzerdefinierten Abmessungen und einer zur Vorlage passenden Markenfarbe darzustellen. Das Scannen des Codes in der generierten PDF führt den Leser direkt zur Objektanzeigenseite online.</p> </li> <li> <p><strong>Pluralisierung.</strong> Die Statistikzeile verwendet die <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/#logische-und-mathematische-ausdruecke">Bedingungssyntax</a>, um die Pluralisierung automatisch zu handhaben. Die Schlafzimmeranzahl wird beispielsweise als <code class="language-plaintext highlighter-rouge">[bedrooms] Bedroom[#bedrooms &gt; 1]s[/]</code> in der Vorlage geschrieben, was je nach Wert des Feldes <code class="language-plaintext highlighter-rouge">bedrooms</code> “1 Bedroom” oder “3 Bedrooms” ausgibt. Dasselbe Muster gilt für <code class="language-plaintext highlighter-rouge">bathrooms</code> und <code class="language-plaintext highlighter-rouge">kitchens</code>.</p> </li> </ul> <p>Alle drei Funktionen erfordern die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktiviere-ich-die-erweiterte-syntax/">erweiterte Syntax</a> von DocuGenerate, die für die Vorlage aktiviert werden muss, bevor Dokumente generiert werden. Sie können sie in den Vorlageneinstellungen in der Web-App aktivieren.</p> <h2 id="workflow-ueberblick">Überblick über den n8n-Workflow</h2> <p>In diesem Workflow verwenden wir Claude, um Dummy-Anzeigendaten zu generieren, damit der Prozess End-to-End ohne Live-Datenbank oder externes System demonstriert werden kann. In einer realen Bereitstellung würden der manuelle Trigger und der <strong>Message a model</strong>-Knoten durch einen Trigger und eine <a href="#reale-datenquellen">Datenquelle</a> ersetzt, die Ihren tatsächlichen Prozess widerspiegeln.</p> <p>Der vollständige Workflow besteht aus mehreren linear verbundenen Knoten:</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/complete-workflow-v2.png" alt="Der vollständige n8n-Workflow"/></p> <p>Sie können die <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing Workflow.json" target="_blank">Workflow-JSON-Datei</a> herunterladen und direkt in Ihre n8n-Instanz importieren. Sie müssen die DocuGenerate-Vorlagen-ID, Ihre API-Zugangsdaten und den Dropbox-Zielpfad an Ihr eigenes Setup anpassen. Gehen wir nun jeden Knoten im Detail durch.</p> <h2 id="claude-knoten">Anzeigendaten mit Claude Generieren</h2> <p>Der erste funktionale Knoten ist der <strong>Message a model</strong>-Knoten aus der Anthropic-Integration, konfiguriert zur Verwendung des Modells <code class="language-plaintext highlighter-rouge">claude-sonnet-4-6</code>. Seine Rolle in diesem Workflow besteht darin, einen realistischen Satz von Immobilienanzeigen-Werten zu erzeugen, die an DocuGenerate übergeben werden können. Um diesen Knoten zu verwenden, benötigen Sie ein Anthropic-Konto und einen API-Schlüssel, der in der <a href="https://console.anthropic.com/" target="_blank" rel="nofollow noopener">Anthropic Console</a> generiert wird, den Sie in n8n als Zugangsdaten beim erstmaligen Einrichten des Knotens hinzufügen.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/anthropic-api-key.png" alt="API-Schlüssel-Konfiguration für den Anthropic-Knoten" class="desktop-width-75"/></p> <p>Der Prompt enthält die vollständige JSON-Struktur, die die Vorlage erwartet, wobei die meisten Felder leer für Claude zum Befüllen belassen werden. Das Feld <code class="language-plaintext highlighter-rouge">agent_photo</code> ist mit einem URL-Muster von <a href="https://randomuser.me/" target="_blank" rel="nofollow noopener">randomuser.me</a> vorbelegt, einem kostenlosen Dienst, der für eine gegebene numerische ID ein realistisches Porträtfoto zurückgibt. Claude wird angewiesen, <code class="language-plaintext highlighter-rouge">&lt;AGENT_ID&gt;</code> durch eine zufällige ganze Zahl zwischen 1 und 50 zu ersetzen, was bei jedem Durchlauf ein anderes Makler-Foto erzeugt.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/message-a-model-node.png" alt="Konfiguration des Message a model-Knotens"/></p> <p>Hier ist der vollständige Prompt, der im Knoten verwendet wird:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Can you generate dummy values for the following JSON? The &lt;AGENT_ID&gt; needs to be an integer from 1 to 50.
The description needs to be around 400 characters. The output needs to be just the updated JSON.

{
  "agent_photo": "https://randomuser.me/api/portraits/women/&lt;AGENT_ID&gt;.jpg",
  "agent_address": "",
  "agent_phone": "",
  "agent_email": "",
  "agent_name": "",
  "description": "",
  "kitchens": "",
  "bathrooms": "",
  "bedrooms": "",
  "surface": "",
  "price": "",
  "url": "https://www.docugenerate.com/blog/generate-property-listings-with-n8n-and-docugenerate/",
  "main_image": "https://images.pexels.com/photos/1571459/pexels-photo-1571459.jpeg",
  "image1": "https://images.pexels.com/photos/2062431/pexels-photo-2062431.jpeg?w=400",
  "image2": "https://images.pexels.com/photos/2089698/pexels-photo-2089698.jpeg?w=400",
  "image3": "https://images.pexels.com/photos/164595/pexels-photo-164595.jpeg?w=400"
}
</code></pre></div></div> <p>Die vier Bildfelder werden der Einfachheit halber als statische <a href="https://www.pexels.com/" target="_blank" rel="nofollow noopener">Pexels</a>-URLs belassen. In einem realen Szenario würden dies tatsächliche Fotos des Objekts sein, die aus einer Medienbibliothek, einem CRM-Anhang oder einem Cloud-Speicher-Bucket abgerufen werden. Das Feld <code class="language-plaintext highlighter-rouge">url</code> verweist auf diesen Blogbeitrag und wird als QR-Code im endgültigen Dokument dargestellt.</p> <p>Claude gibt das ausgefüllte JSON zurück, eingebettet in einen Markdown-Codeblock. Die Antwort vom <strong>Message a model</strong>-Knoten hat folgende Struktur:</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"content"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
      </span><span class="p">{</span><span class="w">
        </span><span class="nl">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"text"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"```json</span><span class="se">\n</span><span class="s2">{</span><span class="se">\n</span><span class="s2">  </span><span class="se">\"</span><span class="s2">agent_name</span><span class="se">\"</span><span class="s2">: </span><span class="se">\"</span><span class="s2">Sarah Mitchell</span><span class="se">\"</span><span class="s2">,</span><span class="se">\n</span><span class="s2">  </span><span class="se">\"</span><span class="s2">price</span><span class="se">\"</span><span class="s2">: </span><span class="se">\"</span><span class="s2">$485,000</span><span class="se">\"</span><span class="s2">,</span><span class="se">\n</span><span class="s2">  ...</span><span class="se">\n</span><span class="s2">}</span><span class="se">\n</span><span class="s2">```"</span><span class="w">
      </span><span class="p">}</span><span class="w">
    </span><span class="p">]</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span></code></pre></div></div> <p>Die tatsächlichen Anzeigendaten sind in <code class="language-plaintext highlighter-rouge">content[0].text</code> verschachtelt und von Markdown-Begrenzungszeichen umgeben, was bedeutet, dass sie vom nächsten Knoten nicht direkt verwendet werden können. Darum kümmert sich der Code-Knoten im <a href="#code-knoten">folgenden Schritt</a>.</p> <h2 id="code-knoten">Die Claude-Antwort Parsen</h2> <p>Der <strong>Code in JavaScript</strong>-Knoten extrahiert das JSON-Objekt aus Claudes Antwort und stellt es als saubere, strukturierte Daten für den Rest des Workflows bereit. Dieser Schritt ist aus zwei Gründen notwendig: Der <strong>Message a model</strong>-Knoten gibt das vollständige API-Antwortobjekt und nicht nur den Textinhalt zurück, und Claude neigt dazu, seine JSON-Ausgabe in Markdown-Codeblöcken zu verpacken, auch wenn es angewiesen wurde, dies nicht zu tun. Anstatt sich auf Prompt Engineering zu verlassen, um diese Inkonsistenz zu beheben, erledigt der Code-Knoten dies bei jeder Ausführung zuverlässig.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/code-node.png" alt="Konfiguration des Code in JavaScript-Knotens"/></p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">text</span> <span class="o">=</span> <span class="nx">$input</span><span class="p">.</span><span class="nf">first</span><span class="p">().</span><span class="nx">json</span><span class="p">.</span><span class="nx">content</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">text</span><span class="p">;</span>
<span class="kd">const</span> <span class="nx">json</span> <span class="o">=</span> <span class="nx">text</span><span class="p">.</span><span class="nf">replace</span><span class="p">(</span><span class="sr">/```json</span><span class="se">\n?</span><span class="sr">/</span><span class="p">,</span> <span class="dl">''</span><span class="p">).</span><span class="nf">replace</span><span class="p">(</span><span class="sr">/</span><span class="se">\n?</span><span class="sr">```/</span><span class="p">,</span> <span class="dl">''</span><span class="p">).</span><span class="nf">trim</span><span class="p">();</span>
<span class="k">return</span> <span class="p">{</span> <span class="na">json</span><span class="p">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">json</span><span class="p">)</span> <span class="p">};</span>
</code></pre></div></div> <p>Die erste Zeile liest den Textwert aus Claudes Antwort. Die zweite Zeile entfernt die Markdown-Begrenzungszeichen mit zwei regulären Ausdrücken. Die dritte Zeile parst die bereinigte Zeichenkette in ein JavaScript-Objekt und gibt es als Knotenausgabe zurück. Nach diesem Schritt sind alle Anzeigenfelder (<code class="language-plaintext highlighter-rouge">agent_name</code>, <code class="language-plaintext highlighter-rouge">price</code>, <code class="language-plaintext highlighter-rouge">bedrooms</code> usw.) als oberste Schlüssel im JSON des Elements verfügbar und können direkt an DocuGenerate übergeben werden.</p> <h2 id="dokument-generieren">Das Dokument Generieren</h2> <p>Der <strong>Generate document</strong>-Knoten verwendet die <a href="https://n8n.io/integrations/docugenerate/" target="_blank" rel="noopener">DocuGenerate-Integration</a> für n8n, um die Anzeigendaten mit der Word-Vorlage zusammenzuführen und eine PDF zu erstellen. Um diesen Knoten zu verwenden, installieren Sie DocuGenerate in Ihrer n8n-Instanz und <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/#install-docugenerate">konfigurieren Sie ihn</a> mit Ihrem <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/generate-document-node.png" alt="Konfiguration des Generate document-Knotens"/></p> <p>Der Knoten wird mit folgenden Parametern konfiguriert:</p> <ul> <li><strong>Template Name or ID</strong>: Die im Schritt <a href="#vorlage-einrichten">Vorlage einrichten</a> hochgeladene Vorlage <strong>Property Listing</strong>.</li> <li><strong>Name</strong>: Ein n8n-Ausdruck, der einen dynamischen Dokumentnamen generiert: <code class="language-plaintext highlighter-rouge">Property Listing for {{ $json.price }} ({{ $json.surface }})</code>. Dies erzeugt einen Dateinamen wie <code class="language-plaintext highlighter-rouge">Property Listing for $485,000 (1,850 sq ft)</code>, der jedes Dokument leicht identifizierbar macht.</li> <li><strong>Format</strong>: Auf <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code> gesetzt.</li> <li><strong>Data</strong>: Auf <code class="language-plaintext highlighter-rouge">{{ $json }}</code> gesetzt, was die gesamte Ausgabe des Code-Knotens als Daten-Payload übergibt. Da der Code-Knoten bereits ein flaches JSON-Objekt mit allen Vorlagenfeldern auf oberster Ebene produziert, ist keine zusätzliche Zuordnung erforderlich.</li> </ul> <p>Wenn der Knoten erfolgreich ausgeführt wird, enthält die Antwort unter anderem ein Feld <code class="language-plaintext highlighter-rouge">document_uri</code> mit einer URL, die auf die generierte PDF verweist, sowie ein Feld <code class="language-plaintext highlighter-rouge">filename</code> mit dem Dateinamen des Dokuments.</p> <h2 id="http-anfrage">Die Generierte PDF Herunterladen</h2> <p>DocuGenerate gibt eine URL zum generierten Dokument zurück, nicht den binären Dateiinhalt direkt. Um die PDF im nächsten Schritt in Dropbox hochzuladen, müssen wir die Datei zunächst von dieser URL abrufen. Der <strong>HTTP Request</strong>-Knoten erledigt dies durch eine GET-Anfrage an die <code class="language-plaintext highlighter-rouge">document_uri</code>, die vom Knoten <a href="#dokument-generieren">Generate document</a> zurückgegeben wurde.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/http-request-node.png" alt="Konfiguration des HTTP Request-Knotens"/></p> <p>Der Parameter <strong>URL</strong> ist auf <code class="language-plaintext highlighter-rouge">{{ $json.document_uri }}</code> gesetzt und referenziert die Dokument-URL aus dem vorherigen Schritt. Die binären Dateidaten sind anschließend für den Dropbox-Knoten zum Hochladen verfügbar.</p> <h2 id="dropbox-upload">Die PDF in Dropbox Speichern</h2> <p>Der letzte Knoten lädt die generierte PDF in einen dedizierten Dropbox-Ordner hoch, indem er den <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.dropbox/" target="_blank" rel="nofollow noopener">Dropbox-Knoten</a> in n8n verwendet, und gibt dem Team sofortigen Zugriff auf das neue Anzeigendokument.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/dropbox-node.png" alt="Konfiguration des Upload a file-Knotens"/></p> <p>Der Knoten verwendet OAuth2-Authentifizierung, die mit Ihrem Dropbox-Konto verbunden ist. Der Parameter <strong>File Path</strong> ist auf <code class="language-plaintext highlighter-rouge">/n8n/Property Listings/{{ $json.filename }}</code> gesetzt, wodurch jedes Dokument im Ordner <code class="language-plaintext highlighter-rouge">/n8n/Property Listings/</code> unter Verwendung des von DocuGenerate zurückgegebenen Dateinamens gespeichert wird. Die Option <strong>Binary File</strong> ist aktiviert, damit der Knoten den Dateiinhalt aus der Ausgabe des HTTP Request-Knotens liest und nicht von einem statischen Pfad.</p> <p>Sobald der Workflow abgeschlossen ist, ist die generierte PDF in Dropbox verfügbar und sieht so aus. Sie können auch eine <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing for $875,000 (2,450 sq ft).pdf" target="_blank">Beispiel-PDF</a> herunterladen, um das Endergebnis zu sehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/sample-property-listing.png" alt="Beispiel der generierten Immobilienanzeigen-PDF"/></p> <h2 id="reale-datenquellen">Reale Datenquellen</h2> <p>Der aktuelle Workflow verwendet Claude als praktischen Ersatz für eine echte Datenquelle, aber in der Praxis kommen Immobilienanzeigendaten selten von einem KI-Modell. Sie liegen typischerweise in einer Formulareinreichung, einem CRM-Datensatz, einer Datenbankzeile oder einer Tabellenkalkulation vor. Da die Schritte zur Dokumentengenerierung und -lieferung unabhängig vom Ursprung der Daten gleich bleiben, ist das Ersetzen des Anthropic-Knotens durch einen anderen Trigger und eine andere Datenquelle alles, was nötig ist, um diesen Tutorial-Workflow in eine produktionsreife Automatisierung zu verwandeln. Nachfolgend sind einige häufige Szenarien aufgeführt, für die sich dieser Workflow gut eignet.</p> <h3 id="datenquelle-formulare">Webformulare</h3> <p>Viele Agenturen verwenden Online-Formulare, um Objektdetails von Maklern vor der Erstellung von Marketingmaterialien zu erfassen. Ein Formular-Tool wie Jotform, Typeform oder Tally kann Felder wie Adresse, Preis, Zimmeranzahl, Fläche und eine Beschreibung direkt vom Makler erfassen. Wenn eine neue Einreichung eingeht, kann die Formularplattform den n8n-Workflow über einen Webhook auslösen und alle erfassten Daten direkt in den Dokumentengenerierungsschritt einspeisen. Dadurch wird die Erstellung von Immobilienanzeigen zu einer natürlichen Fortsetzung des Aufnahmeprozesses, ohne manuelle Datenübertragung.</p> <h3 id="datenquelle-crm">CRM-Systeme</h3> <p>Immobilienunternehmen, die ihren Bestand in einem CRM wie Salesforce, HubSpot oder Pipedrive verwalten, können die Dokumentengenerierung auslösen, wenn ein Objektdatensatz eine bestimmte Pipeline-Phase erreicht – zum Beispiel wenn er als “Veröffentlichungsbereit” oder “Neues Angebot” markiert wird. Der Workflow würde die relevanten Felder aus dem CRM-Datensatz abrufen, sie in die Vorlage einfügen und die PDF entweder zurück im Datensatz speichern oder dem zuständigen Makler per E-Mail zustellen. So bleibt das Anzeigendokument mit den CRM-Daten synchron und doppelte Dateneingabe wird eliminiert.</p> <h3 id="datenquelle-datenbanken">Datenbanken und Tabellenkalkulationen</h3> <p>Teams, die ihren Objektbestand in einer Datenbank wie PostgreSQL, Airtable oder Notion oder in einer Tabellenkalkulation wie Google Sheets oder Excel verwalten, können neue oder aktualisierte Datensätze planmäßig oder bei Hinzufügen einer Zeile abfragen. n8n verfügt über native Knoten für all diese Plattformen, was es einfach macht, eine Zeile zu lesen, die Spalten den Vorlagenfeldern zuzuordnen und für jedes Objekt eine PDF zu generieren. Dieser Ansatz eignet sich besonders gut für Agenturen, die mehrere Anzeigen auf einmal hinzufügen und alle Dokumente in einem einzigen automatisierten Durchlauf generieren möchten.</p> <h2 id="fazit">Fazit</h2> <p>In diesem Tutorial haben wir einen n8n-Workflow erstellt, der automatisch eine Immobilienanzeigen-PDF generiert. Der Workflow verwendet Claude, um realistische Dateneingaben zu simulieren, parst die Antwort in strukturiertes JSON, fügt die Daten in eine professionell gestaltete Word-Vorlage ein und speichert die resultierende PDF in Dropbox. Die Vorlage demonstriert mehrere erweiterte DocuGenerate-Funktionen, darunter Bildgrößenanpassung mit Filtern, QR-Code-Generierung und automatische Pluralisierung über Bedingungssyntax.</p> <p>In einer realen Bereitstellung würde der Anthropic-Knoten durch eine Verbindung zu Ihrer tatsächlichen Datenquelle ersetzt – sei es ein Webformular, ein CRM, eine Datenbank oder eine Tabellenkalkulation. Die Schritte zur Dokumentengenerierung und -lieferung bleiben dabei gleich, was diesen Workflow einfach an nahezu jede Immobilienverwaltungsumgebung anpassbar macht.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die Word-Vorlage <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing.docx">Property Listing</a>.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing Workflow.json" target="_blank">Workflow-JSON-Datei</a>, die Sie in Ihre n8n-Instanz importieren können.</li> <li>Eine <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing for $875,000 (2,450 sq ft).pdf" target="_blank">generierte Beispiel-PDF</a>, die die endgültige Ausgabe zeigt.</li> <li>Der DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/">Integrationsleitfaden</a> für n8n.</li> <li>Fotos bereitgestellt von <a href="https://www.pexels.com/" target="_blank" rel="nofollow noopener">Pexels</a> für die Objektbilder.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Property Listings"/> <category term="n8n"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie mit n8n, Claude und DocuGenerate einen automatisierten Immobilienanzeigen-Workflow aufbauen. Nutzen Sie Claude, um realistische Anzeigendaten auf Abruf zu generieren, diese in eine professionell gestaltete Word-Vorlage einzufügen und das resultierende PDF direkt in Dropbox zu speichern.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Geschäftsbriefe in Coda mit DocuGenerate Generieren</title> <link href="https://www.docugenerate.com/de/blog/geschaeftsbriefe-in-coda-mit-docugenerate-generieren/" rel="alternate" type="text/html" title="Geschäftsbriefe in Coda mit DocuGenerate Generieren"/> <published>2026-02-25T00:00:00+00:00</published> <updated>2026-02-25T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/geschaeftsbriefe-in-coda-mit-docugenerate-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/geschaeftsbriefe-in-coda-mit-docugenerate-generieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Geschäftsbriefe sind ein wesentliches Element professioneller Kommunikation, egal ob Sie Kundenprojektvor- schläge, formale Benachrichtigungen oder Outreach-Kampagnen versenden. Jeden Brief einzeln zu schreiben ist repetitiv und fehleranfällig, und das Problem wächst schnell, wenn Sie eine lange Liste von Empfängern haben. In diesem Tutorial zeigen wir, wie Sie <a href="https://coda.io/" target="_blank" rel="nofollow noopener">Coda</a> und <a href="https://www.docugenerate.com/">DocuGenerate</a> gemeinsam verwenden, um personalisierte PDF-Geschäftsbriefe direkt aus einer Tabelle zu generieren – mit einem einzigen Schaltflächenklick pro Zeile.</p> <p>Coda ist ein flexibler Arbeitsbereich, der Dokumente und Tabellen in einer einzigen Plattform kombiniert und es einfach macht, interaktive Tools mit Tabellen, Schaltflächen und benutzerdefinierten Formeln zu erstellen. Das <a href="https://www.docugenerate.com/de/integrationen/coda/#pack">DocuGenerate-Pack</a> erweitert Coda um Dokumentgenerierungsfähigkeiten und ermöglicht es Ihnen, professionelle PDFs aus Word-Vorlagen zu erstellen, ohne Code schreiben zu müssen. Jede Zeile in einer Coda-Tabelle wird zu einem personalisierten Dokument, das mit den Werten aus den Spalten dieser Zeile befüllt ist.</p> <p>Am Ende dieser Anleitung verfügen Sie über ein Coda-Dokument mit einer Empfängertabelle und einer <strong>Generate</strong>-Schaltfläche, die für jede Person einen personalisierten PDF-Geschäftsbrief erstellt. Die generierten Dateien werden direkt in einer <strong>PDF</strong>-Spalte in der Tabelle gespeichert, bereit zum Herunterladen oder Teilen.</p> <h2 id="vorlage-einrichten">Vorlage Einrichten</h2> <p>Bevor wir in Coda arbeiten, benötigen wir eine Dokumentvorlage in DocuGenerate. Wir verwenden die <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.docx">Business Letter</a>-Word-Datei aus unserer <a href="https://www.docugenerate.com/de/vorlagen/">Vorlagenbibliothek</a>, ein professionell formatierter Brief, der sofort einsatzbereit ist.</p> <p>Die Vorlage enthält <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> für <code class="language-plaintext highlighter-rouge">Date</code>, <code class="language-plaintext highlighter-rouge">Name</code>, <code class="language-plaintext highlighter-rouge">Job Title</code>, <code class="language-plaintext highlighter-rouge">Company Name</code>, <code class="language-plaintext highlighter-rouge">Street Address</code>, <code class="language-plaintext highlighter-rouge">City</code>, <code class="language-plaintext highlighter-rouge">State</code>, <code class="language-plaintext highlighter-rouge">Zip Code</code>, <code class="language-plaintext highlighter-rouge">Email</code> und <code class="language-plaintext highlighter-rouge">Phone</code>. Diese Tags fungieren als Platzhalter, die durch tatsächliche Daten ersetzt werden, wenn ein Dokument generiert wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/business-letter-template.png" alt="Business-Letter-Vorlage mit Zusammenführungs-Tags"/></p> <p>Nachdem Sie die Word-Datei heruntergeladen haben, <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">laden Sie sie</a> in Ihr DocuGenerate-Konto hoch, um eine neue Vorlage zu erstellen. Die Zusammenführungs-Tags werden automatisch erkannt, und Sie können das Ergebnis auf der Vorlagenseite in der Vorschau anzeigen, bevor Sie fortfahren.</p> <h2 id="daten-importieren">Daten Importieren</h2> <p>Die Business-Letter-Vorlage in der Vorlagenbibliothek kommt mit einem passenden <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.xlsx">Excel-Datensatz</a>, der Beispielempfängerdaten enthält, die auf alle Zusammenführungs-Tags der Vorlage abgestimmt sind. Jede Zeile stellt einen Empfänger dar, und jede Spalte ist direkt einem der Zusammenführungs-Tags im Brief zugeordnet.</p> <p>Um diese Daten in Coda zu übertragen, öffnen Sie die <code class="language-plaintext highlighter-rouge">Business Letter.xlsx</code>-Datei in Excel oder einer anderen Tabellenkalkulationsanwendung, wählen Sie die gesamte Tabelle einschließlich der Kopfzeile aus und kopieren Sie sie. Öffnen Sie dann Ihr Coda-Dokument, klicken Sie in einen leeren Bereich der Seite und fügen Sie ein. Coda erkennt die tabellarische Struktur automatisch und erstellt eine neue Tabelle aus den Zwischenablagedaten, wobei alle Spaltennamen und Werte beibehalten werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/business-letter-table-import.png" alt="Den Business-Letter-Datensatz in eine Coda-Tabelle einfügen"/></p> <h2 id="spalten-hinzufuegen">Spalten Hinzufügen</h2> <p>Mit den vorhandenen Daten müssen wir zwei Spalten zur Tabelle hinzufügen: eine für die Generierungsschaltfläche und eine zum Speichern der Ausgabedatei. Klicken Sie auf das <strong>+</strong>-Symbol am Ende der Tabellenkopfzeile, um die erste neue Spalte hinzuzufügen.</p> <p>Wählen Sie <strong>Button</strong> als Spaltentyp und dann <strong>New</strong>, um eine leere Schaltflächenkonfiguration zu erstellen. Sobald die Spalte erscheint, benennen Sie sie in <strong>Generate</strong> um.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/new-column-generate-button-v2.png" alt="Eine Button-Spalte zur Tabelle hinzufügen"/></p> <p>Wiederholen Sie denselben Vorgang, um eine zweite Spalte hinzuzufügen. Wählen Sie dieses Mal <strong>File</strong> als Spaltentyp und benennen Sie die Spalte in <strong>PDF</strong> um. Diese Spalte enthält die generierte PDF-Datei für jede Zeile, nachdem die Schaltfläche geklickt wurde.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/new-column-pdf-file-v2.png" alt="Eine File-Spalte zur Tabelle hinzufügen"/></p> <p>Die Tabelle sollte nun alle ursprünglichen Datenspalten zusammen mit den beiden neuen am Ende anzeigen.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/business-letter-table-new-columns-v2.png" alt="Business-Letter-Tabelle mit den hinzugefügten Generate- und PDF-Spalten"/></p> <h2 id="pack-installieren">Pack Installieren</h2> <p>Um die Tabelle mit DocuGenerate zu verbinden, müssen wir das <a href="https://coda.io/packs/docugenerate-47041" target="_blank" rel="noopener">DocuGenerate-Pack</a> zum Coda-Dokument hinzufügen. Klicken Sie auf <strong>Insert</strong> in der oberen rechten Ecke des Coda-Editors und suchen Sie im Pack-Suchfeld nach <strong>DocuGenerate</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/install-docugenerate-pack.png" alt="Nach dem DocuGenerate-Pack im Insert-Panel suchen"/></p> <p>Wählen Sie <strong>DocuGenerate</strong> aus den Ergebnissen und klicken Sie auf <strong>Add to doc for free</strong>, um das Pack zu installieren.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/add-to-doc-for-free-button.png" alt="Das DocuGenerate-Pack zum Coda-Dokument hinzufügen"/></p> <p>Nach der Installation werden die Bausteine des Packs in Ihrem Dokument verfügbar: die <strong>Templates</strong>-Tabelle, die <strong>Documents</strong>-Tabelle, die <strong>Generate Document</strong>-Schaltflächenaktion und die <strong>DataStructure</strong>-Formel.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/docugenerate-pack-installed.png" alt="Verfügbare Bausteine des DocuGenerate-Packs in Coda"/></p> <p>Um die Einrichtung abzuschließen, öffnen Sie die Registerkarte <strong>Settings</strong> neben <strong>Building blocks</strong>, klicken Sie auf <strong>Select an account</strong> und dann auf <strong>Add a new account</strong>. Geben Sie Ihren <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a> aus Ihrem DocuGenerate-Konto in das Feld <strong>API token</strong> ein und klicken Sie auf <strong>Continue</strong>. Ihr DocuGenerate-Konto ist nun verbunden und das Pack ist einsatzbereit.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/docugenerate-select-account.png" alt="Ein DocuGenerate-Konto in den Coda-Pack-Einstellungen verbinden"/></p> <h2 id="schaltflaeche-konfigurieren">Schaltfläche Konfigurieren</h2> <p>Mit dem installierten Pack können wir die <strong>Generate</strong>-Spalte so konfigurieren, dass sie DocuGenerate aufruft, wenn darauf geklickt wird. Klicken Sie auf das Spaltenheader-Menü der <strong>Generate</strong>-Spalte und wählen Sie <strong>Edit column</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/edit-column-generate-v2.png" alt="Das Edit-column-Panel für die Generate-Spalte öffnen"/></p> <p>Scrollen Sie im Abschnitt <strong>On click</strong>-Aktion nach unten zur Kategorie <strong>Packs</strong> am Ende der Aktionsliste, suchen Sie <strong>DocuGenerate</strong> und wählen Sie die <strong>Generate Document</strong>-Aktion.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/add-generate-document-action-v2.png" alt="Die Generate Document-Aktion aus dem DocuGenerate-Pack auswählen"/></p> <p>Klicken Sie auf <strong>+ Connect an account</strong> und wählen Sie das DocuGenerate-Konto aus, das Sie im <a href="#pack-installieren">vorherigen Abschnitt</a> konfiguriert haben. Mit dem verbundenen Konto können Sie nun die Aktionsparameter ausfüllen.</p> <h3 id="vorlage-auswaehlen">Vorlage Auswählen</h3> <p>Wählen Sie aus dem <strong>Template</strong>-Dropdown die <strong>Business Letter</strong>-Vorlage aus, die Sie in DocuGenerate im <a href="#vorlage-einrichten">Schritt zur Vorlageneinrichtung</a> hochgeladen haben.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/select-business-letter-template-v2.png" alt="Die Business-Letter-Vorlage in der Generate-Document-Aktion auswählen"/></p> <h3 id="dokumentname-und-format">Dokumentname und Format</h3> <p>Für das Feld <strong>Name</strong> können Sie es leer lassen, um einen Standardnamen zu verwenden, oder einen dynamischen Wert festlegen, um die Identifizierung jeder Datei zu erleichtern. Codas <a href="https://coda.io/formulas#Format" target="_blank" rel="nofollow noopener">Format-Formel</a> eignet sich gut dafür. Zum Beispiel benennt <code class="language-plaintext highlighter-rouge">=Format("Letter for {1}", thisRow.Name)</code> jedes Dokument nach dem Empfänger.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/generate-button-name-formula.gif" alt="Die Format-Formel verwenden, um einen dynamischen Dokumentnamen festzulegen"/></p> <p>Lassen Sie <strong>Format</strong> auf <code class="language-plaintext highlighter-rouge">.pdf</code> gesetzt, um PDF-Dateien zu erzeugen, das am häufigsten verwendete Format für die gemeinsame Nutzung von Dokumenten.</p> <h3 id="dynamische-datenwerte">Dynamische Datenwerte</h3> <p>Für das Feld <strong>Data</strong> müssen wir ein JSON-Objekt bereitstellen, das die Zusammenführungs-Tag-Namen in der Vorlage den entsprechenden Spaltenwerten in der aktuellen Zeile zuordnet. Codas <a href="https://coda.io/resources/guides/intro-to-codas-formula-syntax" target="_blank" rel="nofollow noopener">Object-Formel</a> ist die direkteste Möglichkeit, diese Zuordnung zu erstellen:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Object(
  "Name", thisRow.Name,
  "Job Title", thisRow.[Job Title],
  "Company Name", thisRow.[Company Name],
  "Street Address", thisRow.[Street Address],
  "City", thisRow.City,
  "State", thisRow.State,
  "Zip Code", thisRow.[Zip Code],
  "Email", thisRow.Email,
  "Phone", thisRow.Phone,
  "Date", thisRow.Date
)
</code></pre></div></div> <p>Jeder Schlüssel im <code class="language-plaintext highlighter-rouge">Object</code>-Aufruf ist ein Zusammenführungs-Tag-Name aus der Vorlage, und jeder Wert referenziert die passende Spalte in der aktuellen Zeile mit <code class="language-plaintext highlighter-rouge">thisRow</code>. Spaltennamen, die Leerzeichen enthalten, müssen in eckige Klammern eingeschlossen werden, wie bei <code class="language-plaintext highlighter-rouge">thisRow.[Job Title]</code> und <code class="language-plaintext highlighter-rouge">thisRow.[Company Name]</code> gezeigt.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/data-object-formula.png" alt="Den Data-Parameter mit der Object-Formel konfigurieren"/></p> <p>Für Vorlagen mit komplexeren oder verschachtelten Daten ist die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-coda-automatisieren/">DataStructure-Formel</a> des DocuGenerate-Packs eine nützliche Alternative. Sie generiert automatisch die erwartete JSON-Struktur für jede Vorlage mit nummerierten Platzhaltern, die Sie mit der <code class="language-plaintext highlighter-rouge">Format</code>-Formel ausfüllen können.</p> <h3 id="pdf-ergebnis-spalte">PDF-Ergebnis-Spalte</h3> <p>Setzen Sie abschließend die <strong>Results column</strong> auf die zuvor hinzugefügte <strong>PDF</strong>-Spalte. Dies weist Coda an, die generierte Datei nach dem Klicken der Schaltfläche in dieser Spalte zu speichern. Sie können auch das Erscheinungsbild der Schaltfläche im Abschnitt <strong>Style</strong> anpassen, indem Sie eine Beschriftung wählen, eine Farbe auswählen und ein Symbol bestimmen.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/configure-visual-ui-button.gif" alt="Schaltflächenbeschriftung, Farbe und Symbol anpassen"/></p> <h2 id="dokumente-generieren">Dokumente Generieren</h2> <p>Nach Abschluss der Konfiguration klicken Sie auf die <strong>Generate</strong>-Schaltfläche in einer beliebigen Zeile, um die Dokumentgenerierung für diesen Empfänger auszulösen. DocuGenerate verwendet die Daten der Zeile, um die Zusammenführungs-Tags in der Vorlage auszufüllen, und gibt eine PDF-Datei zurück. Coda importiert die Datei dann in seinen Speicher und zeigt sie in der <strong>PDF</strong>-Spalte für diese Zeile an. Der gesamte Prozess dauert einige Sekunden, erwarten Sie also eine kurze Verzögerung, bevor die Datei erscheint.</p> <p>Sie können für mehrere Zeilen schnell hintereinander auf <strong>Generate</strong> klicken, ohne auf den Abschluss jedes Dokuments zu warten. DocuGenerate verarbeitet die Anfragen gleichzeitig, sodass alle Dokumente parallel generiert werden. Die Anzahl der Dokumente, die Sie gleichzeitig verarbeiten können, hängt von dem für Ihren Plan geltenden <a href="https://www.docugenerate.com/de/hilfe/articles/gibt-es-ein-limit-fuer-gleichzeitige-dokumente/">Limit für gleichzeitige Dokumente</a> ab.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/generate-multiple-documents-v3.gif" alt="Mehrere Geschäftsbriefe aus der Coda-Tabelle generieren"/></p> <h2 id="fazit">Fazit</h2> <p>In diesem Tutorial haben wir ein Coda-Dokument erstellt, das personalisierte PDF-Geschäftsbriefe aus einer Tabelle mit Empfängerdaten unter Verwendung des DocuGenerate-Packs generiert. Der Workflow umfasst das Hochladen einer Word-Vorlage in DocuGenerate, den Import der Empfängerdaten in Coda, das Hinzufügen der <strong>Generate</strong>-Schaltfläche und der <strong>PDF</strong>-Spalten sowie die Konfiguration der <strong>Generate Document</strong>-Aktion, um Daten aus jeder Zeile den Zusammenführungs-Tags der Vorlage zuzuordnen. Sobald die Einrichtung abgeschlossen ist, erfordert das Generieren eines Briefes für jeden Empfänger nur einen einzigen Schaltflächenklick.</p> <p>Dasselbe Muster gilt für jeden Dokumenttyp, den Sie aus tabellarischen Coda-Daten erzeugen möchten. Rechnungen, Verträge, Anschreiben und Zertifikate folgen alle derselben Struktur: eine Word-Vorlage mit Zusammenführungs-Tags, eine Tabelle mit den entsprechenden Daten und eine Schaltfläche, um den Prozess auszulösen. Sie können dies weiter ausbauen, indem Sie es mit anderen Coda-Automatisierungen kombinieren, z.B. durch automatisches Generieren von Dokumenten, wenn eine neue Zeile hinzugefügt wird, oder durch das Versenden der generierten Dateien per E-Mail an Empfänger.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.docx">Business Letter</a>-Word-Vorlage und der <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.xlsx">Excel-Datensatz</a> aus diesem Tutorial.</li> <li>Das <a href="https://coda.io/packs/docugenerate-47041" target="_blank" rel="nofollow noopener">DocuGenerate-Pack in Coda</a> für das Hinzufügen von Dokumentgenerierung zu Ihren Coda-Dokumenten.</li> <li>Der <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-coda-automatisieren/">Coda-Integrationsleitfaden</a> im Help Center, einschließlich Einrichtungsanweisungen und Formelreferenzen.</li> <li>Offizielle <a href="https://coda.io/formulas" target="_blank" rel="nofollow noopener">Coda-Formelreferenz</a> für die in diesem Tutorial verwendeten Formeln.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Letters"/> <category term="Coda"/> <category term="No-Code"/> <summary type="html"><![CDATA[Generieren Sie personalisierte PDF-Geschäftsbriefe direkt aus einer Coda-Tabelle mit dem DocuGenerate-Pack. Dieses Tutorial führt Sie durch den Import von Tabellendaten, die Einrichtung einer Schaltfläche zum Erstellen von Dokumenten und das Speichern generierter Dateien in einer Spalte mit einem einzigen Klick pro Zeile.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/030-coda-business-letters/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/030-coda-business-letters/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">PDF-Zertifikatsgenerierung mit FlowRunner Automatisieren</title> <link href="https://www.docugenerate.com/de/blog/pdf-zertifikatsgenerierung-mit-flowrunner-automatisieren/" rel="alternate" type="text/html" title="PDF-Zertifikatsgenerierung mit FlowRunner Automatisieren"/> <published>2026-01-21T00:00:00+00:00</published> <updated>2026-01-21T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/pdf-zertifikatsgenerierung-mit-flowrunner-automatisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/pdf-zertifikatsgenerierung-mit-flowrunner-automatisieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Zertifikate sind ein häufiges Ergebnis vieler Geschäftsprozesse, von Schulungsabschlussnachweisen bis zu Auszeichnungen und Teilnahmebestätigungen. Die manuelle Erstellung einzelner Zertifikate für jeden Empfänger ist mühsam und fehleranfällig, insbesondere wenn es sich um Dutzende oder Hunderte von Datensätzen handelt. In diesem Tutorial erstellen wir einen automatisierten Workflow mit <a href="https://flowrunner.ai/" target="_blank" rel="nofollow noopener">FlowRunner</a> und <a href="https://www.docugenerate.com/">DocuGenerate</a>, der jedes Mal PDF-Zertifikate generiert, wenn ein neuer Datensatz zu einer Datenbanktabelle hinzugefügt wird.</p> <p><a href="https://docs.flowrunner.ai/" target="_blank" rel="nofollow noopener">FlowRunner</a> ist Teil der <a href="https://backendless.com/" target="_blank" rel="nofollow noopener">Backendless</a>-Plattform und ermöglicht die einfache Erstellung intelligenter Workflows mit nur wenigen Klicks. Es orchestriert automatisierte Workflows, die KI-Agenten, menschliche Entscheidungsfindung und Systemintegrationen kombinieren. Sowohl technische als auch nicht-technische Benutzer können Workflows erstellen. Nicht-technische Benutzer arbeiten über die visuelle Oberfläche, während technische Benutzer benutzerdefinierten Code und erweiterte Integrationen nutzen können.</p> <p>Der von uns erstellte Workflow überwacht neue Datensätze in einer Backendless-Datenbanktabelle, generiert ein personalisiertes PDF-Zertifikat mit DocuGenerate, speichert die generierte Datei im Backendless File Service und aktualisiert den ursprünglichen Datenbankdatensatz mit einem Link zur PDF-Datei. Am Ende dieses Leitfadens verfügen Sie über eine vollständig funktionsfähige Zertifikatautomatisierungs-Pipeline, die Sie für jeden Dokumenttyp anpassen können.</p> <h2 id="zertifikatsvorlage">Die Zertifikatsvorlage Einrichten</h2> <p>Bevor wir den FlowRunner-Workflow aufbauen, müssen wir die Zertifikatsvorlage in DocuGenerate vorbereiten. Der Einfachheit halber verwenden wir das fertige <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement.doc">Leistungszertifikat</a> aus unserer <a href="https://www.docugenerate.com/de/vorlagen/">Vorlagenbibliothek</a>. Dies ist ein standardmäßiges Zertifikatslayout mit Zusammenführungs-Tags für <code class="language-plaintext highlighter-rouge">Company Name</code>, <code class="language-plaintext highlighter-rouge">Name</code>, <code class="language-plaintext highlighter-rouge">Course Name</code>, <code class="language-plaintext highlighter-rouge">Diploma Title</code> und <code class="language-plaintext highlighter-rouge">Certificate Date</code>. Sie können die Vorlage anpassen, indem Sie das Design ändern, das Layout anpassen oder weitere <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> hinzufügen, um das Branding und die Anforderungen Ihrer Organisation zu erfüllen.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/certificate-template.png" alt="Leistungszertifikat-Vorlage mit Zusammenführungs-Tags"/></p> <p>Nachdem Sie die Vorlagendatei heruntergeladen haben, <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">laden Sie sie</a> in Ihr DocuGenerate-Konto hoch. Notieren Sie sich nach dem Hochladen die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erhalte-ich-die-vorlagen-id/">Vorlagen-ID</a>, die auf der Vorlagenseite angezeigt wird, da Sie sie beim Konfigurieren des Dokumentengenerierungsschritts im Workflow benötigen.</p> <h2 id="tabelle-erstellen">Die Participants-Tabelle Erstellen</h2> <p>Als Nächstes benötigen wir eine Datenbanktabelle in Backendless, um die für die Zertifikatsgenerierung verwendeten Daten zu speichern. Navigieren Sie zum Abschnitt <strong>Database</strong> Ihrer Backendless-App und erstellen Sie eine neue Tabelle namens <code class="language-plaintext highlighter-rouge">Participants</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/create-table-participants.png" alt="Erstellen der Participants-Tabelle in Backendless" class="desktop-width-75"/></p> <p>Fügen Sie der Tabelle folgende Spalten hinzu:</p> <ul> <li><code class="language-plaintext highlighter-rouge">Certificate Date</code> (DATETIME): Das auf dem Zertifikat aufzudruckende Datum.</li> <li><code class="language-plaintext highlighter-rouge">Certificate URL</code> (STRING): Speichert die URL der generierten Zertifikatsdatei. Diese Spalte wird vom Workflow automatisch befüllt.</li> <li><code class="language-plaintext highlighter-rouge">Company Name</code> (STRING): Der Name des Unternehmens oder der Organisation, die das Zertifikat ausstellt.</li> <li><code class="language-plaintext highlighter-rouge">Course Name</code> (STRING): Der Name des Kurses oder Programms, das der Teilnehmer absolviert hat.</li> <li><code class="language-plaintext highlighter-rouge">Diploma Title</code> (STRING): Der Titel des Diploms oder der zu vergebenden Auszeichnung.</li> <li><code class="language-plaintext highlighter-rouge">Name</code> (STRING): Der vollständige Name des Teilnehmers.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/database-table-schema-v2.png" alt="Datenbankschema der Participants-Tabelle"/></p> <p>Die Spalte <code class="language-plaintext highlighter-rouge">Certificate URL</code> beginnt bei jedem neuen Datensatz leer. Der Workflow füllt sie automatisch mit der URL der generierten PDF aus, nachdem der gesamte Flow abgeschlossen ist, und stellt so einen direkten Link vom Datenbankdatensatz zum Zertifikat bereit.</p> <h2 id="datenbankausloeser">Den Datenbankauslöser Konfigurieren</h2> <p>Mit der vorhandenen Tabelle wechseln Sie zur Seite <strong>FlowRunner Designer</strong> und erstellen Sie einen neuen Flow namens “Certificate of Achievement Flow”. Das erste Element, das wir benötigen, ist ein Trigger, der den Flow startet, sobald ein neuer Teilnehmerdatensatz erstellt wird. Wählen Sie im <strong>Triggers</strong>-Panel den Trigger <strong>Record Created in Database</strong> aus der Kategorie <strong>Data Service</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/record-created-in-database.png" alt="Hinzufügen des Record Created in Database-Triggers"/></p> <p>Die Trigger-Konfiguration ist unkompliziert. Wählen Sie die Tabelle <code class="language-plaintext highlighter-rouge">Participants</code> im Dropdown <strong>Table or View</strong> und setzen Sie <strong>Reference Trigger Data As</strong> auf <code class="language-plaintext highlighter-rouge">Participant</code>. Alle anderen Felder können auf ihren Standardwerten belassen werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/configure-record-created.png" alt="Konfiguration des Record Created in Database-Triggers"/></p> <p>Das bedeutet: Jedes Mal, wenn eine neue Zeile in die Tabelle <code class="language-plaintext highlighter-rouge">Participants</code> eingefügt wird, wird der Flow ausgeführt, und die Datensatzdaten sind als <code class="language-plaintext highlighter-rouge">Participant</code>-Objekt in den verbleibenden Schritten zugänglich.</p> <h2 id="dokument-generieren">Das Dokument Generieren</h2> <p>Mit dem vorhandenen Trigger können wir den Dokumentengenerierungsschritt hinzufügen. Suchen Sie die <a href="https://flowrunner.ai/integrations/docugenerate" target="_blank" rel="nofollow noopener">DocuGenerate-Erweiterung</a> und wählen Sie die <strong>Generate Document</strong>-Aktion. Diese Aktion wird jedes Mal ausgeführt, wenn der Trigger auslöst, und generiert ein neues Zertifikat basierend auf den Daten des Teilnehmers.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/generate-document-action.png" alt="Hinzufügen der Generate Document-Aktion von DocuGenerate"/></p> <p>Konfigurieren Sie die Aktion mit folgenden Parametern:</p> <ul> <li><strong>Template ID</strong>: Die ID der Vorlage, die Sie im <a href="#zertifikatsvorlage">früheren Schritt</a> in DocuGenerate hochgeladen haben.</li> <li><strong>Name</strong>: Verwenden Sie die Expression-Eingabe, um einen dynamischen Namen zu erstellen, indem Sie den Text <code class="language-plaintext highlighter-rouge">Certificate for </code> mit dem Wert <code class="language-plaintext highlighter-rouge">Participant -&gt; Name</code> verketten.</li> <li><strong>Output Name</strong>: Leer lassen; die generierte Datei verwendet den Dokumentnamen.</li> <li><strong>Output Format</strong>: Setzen Sie auf <code class="language-plaintext highlighter-rouge">.pdf</code>, um eine PDF-Datei zu erzeugen.</li> <li><strong>Data</strong>: Verwenden Sie die Expression-Eingabe, um das JSON-Datenobjekt zu erstellen (nachfolgend erklärt).</li> </ul> <p>Setzen Sie abschließend <strong>Reference Result Data As</strong> auf <code class="language-plaintext highlighter-rouge">Document</code> und lassen Sie die übrigen Parameter unverändert.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/generate-document-config.png" alt="Konfiguration der Generate Document-Aktion"/></p> <p>Der <strong>Data</strong>-Parameter erfordert ein JSON-Array, das jedes Zusammenführungs-Tag in der Vorlage dem entsprechenden Wert aus dem <code class="language-plaintext highlighter-rouge">Participant</code>-Datensatz zuordnet. Die Expression-Eingabe von FlowRunner ermöglicht es, statischen Text mit dynamischen Block-Ergebnissen zu kombinieren, um dieses JSON zur Laufzeit zu erstellen. Sie wechseln zwischen Text-Eingaben (für die JSON-Struktur und Schlüsselnamen) und Block-Ergebnissen (um die Eigenschaften des <code class="language-plaintext highlighter-rouge">Participant</code>-Objekts zu referenzieren). Der resultierende Ausdruck erzeugt einen Wert, der folgendem entspricht:</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[{</span><span class="w">
  </span><span class="nl">"Company Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Participant -&gt; Company Name"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Participant -&gt; Name"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Course Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Participant -&gt; Course Name"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Diploma Title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Participant -&gt; Diploma Title"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Certificate Date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Participant -&gt; Certificate Date"</span><span class="w">
</span><span class="p">}]</span><span class="w">
</span></code></pre></div></div> <p>Der nachfolgende Screenshot zeigt die Expression-Eingabe mit allen assemblierten Text- und Referenzblöcken. Jeder Schlüssel im JSON-Objekt entspricht einem Zusammenführungs-Tag in der Zertifikatsvorlage, und jeder Wert wird dynamisch aus dem Datenbankdatensatz des Teilnehmers abgerufen.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/data-expression-input.png" alt="Expression-Eingabe zur Erstellung des Data-Parameters"/></p> <h2 id="datei-speichern">Die Datei in Backendless Speichern</h2> <p>Da der Dokumentengenerierungsschritt nun konfiguriert ist, können wir den Workflow weiter aufbauen, indem wir das generierte PDF-Zertifikat im Backendless File Service speichern. Wechseln Sie im <strong>Extensions</strong>-Panel zu <strong>Backendless File Services</strong> und wählen Sie die <strong>Add To File</strong>-Aktion. Diese Aktion fügt Inhalt an eine vorhandene Datei an und kann auch eine neue Datei aus einer Remote-URL erstellen, indem das Feld <strong>Content From URL</strong> verwendet wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/add-to-file-action.png" alt="Hinzufügen der Add To File-Aktion"/></p> <p>Konfigurieren Sie die Aktion mit folgenden Body-Parametern:</p> <ul> <li><strong>Directory Path</strong>: Setzen Sie auf <code class="language-plaintext highlighter-rouge">certificates</code>, um alle generierten Dateien in einem dedizierten Ordner zu speichern.</li> <li><strong>File Name</strong>: Verwenden Sie den Ausdruck <code class="language-plaintext highlighter-rouge">Document -&gt; filename</code>, um die Datei nach dem im <a href="#dokument-generieren">vorherigen Schritt</a> generierten Dokument zu benennen.</li> <li><strong>Content From URL</strong>: Verwenden Sie <code class="language-plaintext highlighter-rouge">Document -&gt; document_uri</code>, um die generierte PDF von DocuGenerate herunterzuladen.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/add-to-file-config-v2.png" alt="Konfiguration der Add To File-Aktion"/></p> <p>Vergessen Sie nicht, <strong>Reference Result Data As</strong> auf <code class="language-plaintext highlighter-rouge">File</code> zu setzen. Das <code class="language-plaintext highlighter-rouge">File</code>-Objekt enthält eine <code class="language-plaintext highlighter-rouge">fileURL</code>-Eigenschaft, die wir im nächsten Schritt verwenden, um den Speicherort der Datei zurück in der Datenbank zu hinterlegen.</p> <h2 id="datensatz-aktualisieren">Den Datenbankdatensatz Aktualisieren</h2> <p>Für den letzten Schritt des Workflows müssen wir den ursprünglichen <code class="language-plaintext highlighter-rouge">Participants</code>-Datensatz mit der URL des gespeicherten Zertifikats aktualisieren. Dies erstellt eine direkte Verbindung zwischen dem Datenbankdatensatz jedes Teilnehmers und seinem generierten Zertifikat, was es einfach macht, die Datei später abzurufen oder anzuzeigen – sei es aus einer Webanwendung, einem Bericht oder direkt aus der Datenbanktabelle.</p> <p>Wechseln Sie im <strong>Actions</strong>-Panel zu <strong>Data Service</strong> und wählen Sie die Aktion <a href="https://docs.flowrunner.ai/reference/save-record-action.html" target="_blank" rel="nofollow noopener">Save Record In Database</a>. Diese Aktion speichert oder aktualisiert Daten in Ihrer Backendless-Datenbank und kann an jedem Punkt im Workflow platziert werden, um zeitnahe Datenaktualisierungen als Reaktion auf bestimmte Ereignisse oder Aktionen sicherzustellen.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/save-record-in-database-action.png" alt="Hinzufügen der Save Record In Database-Aktion"/></p> <p>Um die Aktion zu konfigurieren, wählen Sie die Option <strong>Update record from flow</strong> und wählen Sie <strong>Use data from</strong> dem <code class="language-plaintext highlighter-rouge">Participant</code>-Objekt. Im Abschnitt <strong>Perform Changes</strong> wählen Sie die Eigenschaft <code class="language-plaintext highlighter-rouge">Certificate URL</code> und geben den Wert <code class="language-plaintext highlighter-rouge">File -&gt; fileURL</code> ein. Dies schreibt die URL der im <a href="#datei-speichern">vorherigen Schritt</a> gespeicherten Datei zurück in den Datensatz des Teilnehmers. Optional können Sie <strong>Reference Result Data As</strong> auf <code class="language-plaintext highlighter-rouge">Record</code> setzen.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/save-record-in-database-config-v2.png" alt="Konfiguration der Save Record In Database-Aktion"/></p> <h2 id="testen">Den Workflow Testen</h2> <p>Da alle vier Schritte vorhanden sind, ist der Workflow vollständig und bereit für einen End-to-End-Test. Der Flow folgt einer klaren Sequenz: Ein neuer Datenbankdatensatz löst die Dokumentengenerierung aus, die generierte PDF wird im Backendless File Service gespeichert, und der Datensatz wird mit der Datei-URL aktualisiert.</p> <p>Um <a href="https://docs.flowrunner.ai/flow-execution/overview.html" target="_blank" rel="nofollow noopener">den Flow zu starten</a>, klicken Sie auf die Schaltfläche <strong>Play</strong> im FlowRunner Designer. Beachten Sie, dass Sie nach dem Start eines Flows keine Änderungen daran vornehmen können, ihn aber jederzeit stoppen und die Konfiguration bei Bedarf aktualisieren können.</p> <p>Es gibt mehrere Möglichkeiten, den Workflow zu testen. Eine der einfachsten ist die Verwendung der <strong>REST Console</strong> in der Tabelle <code class="language-plaintext highlighter-rouge">Participants</code>. Wir können beispielsweise eine <strong>POST</strong>-Anfrage mit folgendem Request-Body ausführen:</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"Company Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wikivu"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Brandtr Lusk"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Course Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Property-Casualty Insurers"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Diploma Title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Food Chemist"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Certificate Date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"7/12/2024"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div> <p>Der Response-Body bestätigt, dass ein neuer Datensatz in der Datenbank erstellt wurde. Innerhalb von Momenten wird der Workflow ausgeführt und generiert das Zertifikat.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/test-rest-console.png" alt="Testen des Flows mit der REST Console"/></p> <p>Wie erwartet erscheint das generierte <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate for Brandtr Lusk.pdf" target="_blank">PDF-Zertifikat</a> im Ordner <code class="language-plaintext highlighter-rouge">certificates</code> im <strong>File Service</strong>. Als zukünftige Verbesserung könnten Sie das Dokument nach dem Speichern in Backendless auch aus DocuGenerate löschen, um Ihr DocuGenerate-Konto übersichtlich zu halten.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/file-service-certificates.png" alt="Im Backendless File Service gespeichertes Zertifikat-PDF"/></p> <p>In der Tabelle <code class="language-plaintext highlighter-rouge">Participants</code> enthält die Spalte <code class="language-plaintext highlighter-rouge">Certificate URL</code> nun einen Link zur im Backendless File Service gespeicherten Datei, was bestätigt, dass der gesamte Flow vom Trigger bis zum Abschluss korrekt funktioniert.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/database-table-updated.png" alt="Datenbanktabelle mit aktualisierter Zertifikats-URL"/></p> <p>Wenn Sie diesen Workflow selbst ausprobieren möchten, können Sie die vollständige <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement Flow.json" target="_blank">Flow-Definition</a> herunterladen und in Ihre FlowRunner-Instanz importieren. Sie müssen die Vorlagen-ID und Tabellenreferenzen aktualisieren, um Ihrer eigenen Backendless-App-Konfiguration zu entsprechen.</p> <h2 id="fazit">Fazit</h2> <p>In diesem Tutorial haben wir einen vollständigen Zertifikatautomatisierungs-Workflow mit FlowRunner und DocuGenerate aufgebaut. Der Flow überwacht neue Datensätze in einer Backendless-Datenbank, generiert ein personalisiertes PDF-Zertifikat für jeden Teilnehmer, speichert die Datei im Backendless File Service und aktualisiert den Datenbankdatensatz mit einem Link zum generierten Dokument. Der gesamte Prozess läuft automatisch ab, ohne manuellen Eingriff, sobald der Flow gestartet wurde.</p> <p>Dieser Workflow demonstriert ein praktisches Beispiel dafür, was Sie mit FlowRunner und DocuGenerate aufbauen können. Dasselbe Muster gilt für jedes Szenario, in dem Sie Dokumente aus Datenbankdatensätzen generieren müssen – wie Rechnungen, Verträge, Berichte oder andere Dokumente auf Vorlagenbasis. Sie könnten diesen Workflow auch durch E-Mail-Benachrichtigungen, bedingte Verzweigungen basierend auf Datensatzdaten oder Integrationen mit anderen im Backendless-Ökosystem verfügbaren Diensten erweitern.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement.doc">Leistungszertifikat</a>-Vorlage aus diesem Tutorial.</li> <li>Der DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-backendless-automatisieren/">Integrationsleitfaden</a> für Backendless.</li> <li>Die vollständige <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement Flow.json" target="_blank">Flow-Definition</a>, die Sie importieren und verwenden können.</li> <li>Die <a href="https://flowrunner.ai/integrations/docugenerate" target="_blank" rel="nofollow noopener">DocuGenerate-Erweiterung</a> auf FlowRunner.</li> <li>Offizielle <a href="https://docs.flowrunner.ai/" target="_blank" rel="nofollow noopener">FlowRunner-Dokumentation</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Certificates"/> <category term="Backendless"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie mit FlowRunner und DocuGenerate einen automatisierten Zertifikatsgenerierungs-Workflow aufbauen. Erstellen Sie einen Flow, der PDF-Zertifikate aus Datenbankdatensätzen generiert, sie im Dateispeicher speichert und jeden Datensatz mit einem Link zur generierten Datei aktualisiert.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/cover-image-v2.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/cover-image-v2.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Krankenplan-Angebote in Power Apps mit DocuGenerate Generieren</title> <link href="https://www.docugenerate.com/de/blog/krankenplan-angebote-in-power-apps-mit-docugenerate-generieren/" rel="alternate" type="text/html" title="Krankenplan-Angebote in Power Apps mit DocuGenerate Generieren"/> <published>2025-12-22T00:00:00+00:00</published> <updated>2025-12-22T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/krankenplan-angebote-in-power-apps-mit-docugenerate-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/krankenplan-angebote-in-power-apps-mit-docugenerate-generieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Das Onboarding neuer Mitarbeiter beinhaltet häufig die Hilfe bei der Navigation durch komplexe Leistungsoptionen, insbesondere bei der Auswahl von Krankenversicherungsplänen. Unternehmen bieten typischerweise mehrere Krankenversicherungspläne mit unterschiedlichen Deckungsumfängen, Prämien und Eigenkosten an, was neue Mitarbeiter bei der Suche nach der besten Entscheidung für ihre Familie überfordern kann. In diesem Tutorial nehmen wir eine vorhandene <a href="https://www.microsoft.com/en-us/power-platform/products/power-apps" target="_blank" rel="nofollow noopener">Power Apps</a> Health Plan Selector-App und erweitern sie mit automatisierten Dokumentengenerierungsfunktionen mithilfe von <a href="https://www.docugenerate.com/">DocuGenerate</a> und <a href="https://www.microsoft.com/en-us/power-platform/products/power-automate" target="_blank" rel="nofollow noopener">Power Automate</a>.</p> <p>Der Health Plan Selector ist eine Beispielanwendung, die neuen Mitarbeitern hilft, durch eine Reihe geführter Fragen die Unternehmens-Krankenversicherungspläne zu erkunden. Basierend auf den Antworten empfiehlt die App den am besten geeigneten Plan. Die ursprüngliche App sendet die Plandetails jedoch lediglich über den Standard-E-Mail-Client des Benutzers. Wir ersetzen diese einfache Funktionalität durch einen automatisierten Workflow, der ein professionelles PDF-Angebot generiert und es direkt an den Posteingang des Mitarbeiters sendet, ohne eine manuelle E-Mail-Erstellung zu erfordern.</p> <p>Dieser Ansatz schafft eine bessere Erfahrung sowohl für HR-Teams als auch für neue Mitarbeiter. Der automatisierte Workflow stellt Konsistenz bei der Darstellung der Planinformationen sicher, erstellt ein formelles Dokument, das Mitarbeiter in Ruhe überprüfen und mit Familienmitgliedern besprechen können, und eliminiert die manuellen Schritte beim Erstellen und Versenden dieser Kommunikationen. Wir gehen in diesem Leitfaden jeden Schritt der Integration durch – vom Verständnis der vorhandenen App-Struktur bis hin zur Erstellung eines vollständigen Dokumentengenerierungs-Workflows.</p> <h2 id="app-vorlage">Mit der Health Plan Selector-Vorlage Beginnen</h2> <p>Power Apps bietet eine Vielzahl gebrauchsfertiger Vorlagen, die als ausgezeichnete Ausgangspunkte für die Entwicklung von Geschäftsanwendungen dienen. Für dieses Tutorial verwenden wir die Health Plan Selector-Vorlage, die viele wichtige Power Apps-Konzepte demonstriert, darunter Benutzereingabevalidierung, bedingte Logik, Multi-Screen-Navigation und Datenerfassung.</p> <p>Öffnen Sie zunächst Power Apps und klicken Sie auf <strong>Start with an app template</strong>. Diese Option ermöglicht es Ihnen, aus einer Liste vollständig funktionsfähiger Geschäftsanwendungsvorlagen zu wählen, die Sie unverändert nutzen oder an Ihre spezifischen Bedürfnisse anpassen können. Durchsuchen Sie die verfügbaren Vorlagen, bis Sie die Health Plan Selector-App finden. Diese Beispiel-App ist speziell für Onboarding-Szenarien neuer Mitarbeiter konzipiert und hilft Benutzern, Unternehmens-Krankenversicherungspläne zu erkunden und die Option zu entdecken, die am besten für sie und ihre Familie geeignet ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/start-with-a-template.png" alt="Mit der Health Plan Selector-Vorlage beginnen"/></p> <p>Sobald Sie diese Vorlage auswählen, erstellt Power Apps eine neue App in Ihrer Umgebung basierend auf der Vorlagenstruktur. Die App enthält alle Screens, Steuerelemente, Datensammlungen und Logik, die für den Krankenplan-Auswahlworkflow benötigt werden. Sie können jeden Aspekt der App anpassen, um die spezifischen Krankenplanangebote und Markenrichtlinien Ihrer Organisation widerzuspiegeln.</p> <h2 id="app-verstehen">Die Beispiel-App Verstehen</h2> <p>Die Health Plan Selector-App führt Benutzer durch einen mehrstufigen Fragebogen, um den am besten geeigneten Krankenversicherungsplan zu ermitteln. Die App fragt nach Deckungsbedarf (Einzel, Familie usw.), gewünschten Leistungen (Primärversorgung, Zahnarzt, Optik, Spezialisten), Budgetpräferenzen (Basis oder Premium) und anderen Faktoren, die die Planauswahl beeinflussen. Basierend auf diesen Eingaben empfiehlt die App bestimmte Pläne und zeigt detaillierte Informationen an, einschließlich monatlicher Prämien, Deckungsgrenzen und Eigenbeteiligungen.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/health-plan-app-demo.gif" alt="Demo des Health Plan Selector-App-Workflows"/></p> <p>Die App besteht aus mehreren Screens, die verschiedene Phasen des Auswahlprozesses repräsentieren. Nach dem Erstellen der App aus der Vorlage können Sie alle Screens im <strong>Tree view</strong>-Panel anzeigen, das Screens wie <code class="language-plaintext highlighter-rouge">HomeScreen</code>, <code class="language-plaintext highlighter-rouge">Step1_Screen</code>, <code class="language-plaintext highlighter-rouge">Step2_Screen</code>, <code class="language-plaintext highlighter-rouge">Step3_Screen</code>, <code class="language-plaintext highlighter-rouge">Step4_Screen</code>, <code class="language-plaintext highlighter-rouge">Recommendation_Screen</code>, <code class="language-plaintext highlighter-rouge">ViewOptions_Screen</code> und <code class="language-plaintext highlighter-rouge">Share_Screen</code> zeigt.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/health-plan-app-screens-v2.png" alt="App-Screens in der Tree view-Ansicht"/></p> <p>Jeder Screen enthält verschiedene Steuerelemente wie Texteingaben, Optionsfelder, Kontrollkästchen, Galerien und Schaltflächen, die zusammenarbeiten, um Benutzerpräferenzen zu erfassen und Empfehlungen anzuzeigen.</p> <h2 id="senden-button-logik">Die Logik des SEND-Buttons Untersuchen</h2> <p>Für dieses Tutorial konzentrieren wir uns speziell auf den <code class="language-plaintext highlighter-rouge">Share_Screen</code>, auf dem Benutzer ihre endgültige Planempfehlung sehen und die Option haben, die Details an ihre E-Mail-Adresse zu senden. Dies ist der Screen, den wir anpassen werden, um Dokumentengenerierungsfunktionen anstelle der derzeit vorhandenen einfachen E-Mail-Funktionalität zu integrieren.</p> <p>Der <code class="language-plaintext highlighter-rouge">Share_Screen</code> enthält einen <strong>SEND</strong>-Button, der derzeit einen <code class="language-plaintext highlighter-rouge">mailto</code>-Link auslöst, um eine E-Mail mit den Plandetails zu verfassen. Um zu verstehen, was wir ersetzen müssen, sehen wir uns die vorhandene Button-Logik an. Wenn Sie den <strong>SEND</strong>-Button im App-Designer auswählen, können Sie den zugehörigen Code in der Formelleiste anzeigen.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/share-screen-send-button-v2.png" alt="SEND-Button-Code im Share_Screen"/></p> <p>Der Code verwendet die <code class="language-plaintext highlighter-rouge">Launch</code>-Funktion, um den Standard-E-Mail-Client des Benutzers mit vorausgefülltem Betreff und Textkörper zu öffnen. Dieser Ansatz hat mehrere Einschränkungen. Er erfordert, dass der Benutzer einen Standard-E-Mail-Client konfiguriert hat, öffnet die E-Mail im Entwurfsmodus und erfordert, dass der Benutzer manuell auf Senden klickt, und die Formatierung ist auf Klartext mit URL-codierten Zeilenumbrüchen beschränkt.</p> <p>Der Code führt auch Datenerfassungsoperationen durch, um die Antworten des Benutzers in einer Sammlung namens <code class="language-plaintext highlighter-rouge">ResponsesCollect</code> zu speichern. Hier ist der vollständige Code des ursprünglichen <strong>SEND</strong>-Buttons:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nc">If</span><span class="p">(</span><span class="o">!</span><span class="nc">IsBlank</span><span class="p">(</span><span class="nx">TextInput1_1</span><span class="p">.</span><span class="nx">Text</span><span class="p">);</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">1</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nx">Radio1</span><span class="p">.</span><span class="nx">SelectedText</span><span class="p">.</span><span class="nx">OptionText</span><span class="p">});;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">1</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">;</span><span class="mi">1</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">2</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">;</span><span class="mi">2</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">3</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">3</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">;</span><span class="mi">3</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span><span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">4</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">4</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">;</span><span class="mi">4</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">5</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">BasicCollect</span><span class="p">;</span><span class="mi">5</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">1</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">;</span><span class="mi">1</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span><span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">2</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">;</span><span class="mi">2</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">3</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">;</span><span class="mi">3</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">4</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">;</span><span class="mi">4</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">5</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">;</span><span class="mi">5</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">If</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">)</span><span class="o">&gt;=</span><span class="mi">6</span><span class="p">;</span><span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">2</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">Last</span><span class="p">(</span><span class="nc">FirstN</span><span class="p">(</span><span class="nx">AddONCollect</span><span class="p">;</span><span class="mi">6</span><span class="p">)).</span><span class="nx">OptionText</span><span class="p">)}));;</span>

<span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">3</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nx">Radio1_2</span><span class="p">.</span><span class="nx">SelectedText</span><span class="p">.</span><span class="nx">OptionText</span><span class="p">});;</span>

<span class="nc">Collect</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">;{</span><span class="na">QuestionId</span><span class="p">:</span><span class="dl">"</span><span class="s2">4</span><span class="dl">"</span><span class="p">;</span><span class="nl">ResponseId</span><span class="p">:</span><span class="nc">Text</span><span class="p">(</span><span class="nc">CountRows</span><span class="p">(</span><span class="nx">ResponsesCollect</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span><span class="nl">Response</span><span class="p">:</span><span class="nx">Radio1_3</span><span class="p">.</span><span class="nx">SelectedText</span><span class="p">.</span><span class="nx">OptionText</span><span class="p">});;</span>

<span class="nc">Launch</span><span class="p">(</span><span class="dl">"</span><span class="s2">mailto:</span><span class="dl">"</span><span class="o">&amp;</span><span class="nx">TextInput1_1</span><span class="p">.</span><span class="nx">Text</span><span class="o">&amp;</span><span class="dl">"</span><span class="s2">?subject=</span><span class="dl">"</span><span class="o">&amp;</span><span class="nx">TextBox1_16</span><span class="p">.</span><span class="nx">Text</span><span class="o">&amp;</span><span class="dl">"</span><span class="s2"> &amp;body=Plan Details:</span><span class="dl">"</span> <span class="o">&amp;</span><span class="nx">TextBox1_16</span><span class="p">.</span><span class="nx">Text</span><span class="o">&amp;</span> <span class="dl">"</span><span class="s2">%0D%0A</span><span class="dl">"</span> <span class="o">&amp;</span> <span class="nx">TextBox3_5</span><span class="p">.</span><span class="nx">Text</span> <span class="o">&amp;</span> <span class="dl">"</span><span class="s2">%0D%0A</span><span class="dl">"</span> <span class="o">&amp;</span><span class="nx">TextBox3_6</span><span class="p">.</span><span class="nx">Text</span> <span class="o">&amp;</span> <span class="dl">"</span><span class="s2">%0D%0A</span><span class="dl">"</span> <span class="o">&amp;</span> <span class="nx">TextBox3_7</span><span class="p">.</span><span class="nx">Text</span> <span class="o">&amp;</span> <span class="dl">"</span><span class="s2">%0D%0A</span><span class="dl">"</span> <span class="o">&amp;</span><span class="nx">TextBox3_8</span><span class="p">.</span><span class="nx">Text</span><span class="o">&amp;</span> <span class="dl">"</span><span class="s2">%0D%0A</span><span class="dl">"</span> <span class="o">&amp;</span> <span class="nc">EncodeUrl</span><span class="p">(</span><span class="nx">TextBox3_9</span><span class="p">.</span><span class="nx">Text</span><span class="p">)</span> <span class="o">&amp;</span> <span class="dl">"</span><span class="s2">%0D%0A</span><span class="dl">"</span> <span class="o">&amp;</span> <span class="nc">EncodeUrl</span><span class="p">(</span><span class="nx">TextBox3_11</span><span class="p">.</span><span class="nx">Text</span><span class="p">));;</span>

<span class="nc">Navigate</span><span class="p">(</span><span class="nx">Screen1</span><span class="p">;</span><span class="nx">ScreenTransition</span><span class="p">.</span><span class="nx">Fade</span><span class="p">);</span><span class="nc">UpdateContext</span><span class="p">({</span><span class="na">emailreset</span><span class="p">:</span><span class="kc">true</span><span class="p">}));;</span>
</code></pre></div></div> <p>Dieser Code erfasst Antwortdaten aus verschiedenen Formularelementen und Sammlungen und erstellt dann eine <code class="language-plaintext highlighter-rouge">mailto</code>-URL mit der E-Mail-Adresse aus <code class="language-plaintext highlighter-rouge">TextInput1_1.Text</code>, dem Plannamen aus <code class="language-plaintext highlighter-rouge">TextBox1_16.Text</code> als Betreff und mehreren anderen Textfeldern im Textkörper. Wir ersetzen den <code class="language-plaintext highlighter-rouge">Launch</code>-Funktionsaufruf durch einen Aufruf eines Power Automate-Flows, der die Dokumentengenerierung und den E-Mail-Versand übernimmt.</p> <h2 id="button-anpassen">Den Button zum Aufruf von Power Automate Anpassen</h2> <p>Anstatt den E-Mail-Client zu öffnen, ändern wir den <strong>SEND</strong>-Button so, dass er einen Power Automate-Flow auslöst. Dieser Flow empfängt die Plandetails, generiert ein professionelles PDF-Dokument mit DocuGenerate und sendet es per E-Mail. Ersetzen Sie den gesamten <code class="language-plaintext highlighter-rouge">Launch</code>-Funktionsaufruf durch folgenden Code:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="nx">SendEmailWithDocument</span><span class="p">.</span><span class="nc">Run</span><span class="p">(</span><span class="nx">TextInput1_1</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox1_16</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox3_5</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox3_6</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox3_7</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox3_8</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox3_9</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nx">TextBox3_11</span><span class="p">.</span><span class="nx">Text</span><span class="p">;</span> <span class="nc">User</span><span class="p">().</span><span class="nx">FullName</span><span class="p">);;</span>

</code></pre></div></div> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/share-screen-send-button-call-flow.png" alt="Aktualisierter Button-Code zum Aufruf des SendEmailWithDocument-Flows"/></p> <p>Dieser geänderte Code ruft einen Power Automate-Flow namens <code class="language-plaintext highlighter-rouge">SendEmailWithDocument</code> auf und übergibt neun Parameter: die E-Mail-Adresse, den Plannamen, die Deckungsdetails, den monatlichen Preis, den Einzelpersonenpreis, das Eigenbeteiligungslimit, den Erstattungsprozentsatz, zusätzliche Leistungen und den vollständigen Namen des aktuellen Benutzers.</p> <p>Die Funktion <code class="language-plaintext highlighter-rouge">User().FullName</code> ruft den authentifizierten Benutzernamen aus Azure Active Directory ab, den wir im personalisierten Dokument einschließen können. Diese Parameter entsprechen den auf dem <code class="language-plaintext highlighter-rouge">Share_Screen</code> angezeigten Daten und stellen die Informationen dar, die wir in das generierte Angebotsdokument aufnehmen möchten.</p> <p>Sie werden feststellen, dass Power Apps diese Flow-Referenz zunächst in Rot anzeigt, da der Flow noch nicht existiert. Wir erstellen den Flow im <a href="#flow-erstellen">nächsten Abschnitt</a>, und sobald er mit der App verbunden ist, wird die Referenz korrekt aufgelöst.</p> <h2 id="flow-erstellen">Den Power Automate-Flow Erstellen</h2> <p>Nun erstellen wir den Power Automate-Flow, der die Dokumentengenerierung und den E-Mail-Versand übernimmt. In Power Apps navigieren Sie zum Abschnitt <strong>Power Automate</strong> im linken Menü und klicken Sie auf <strong>Create a new flow</strong>. Wählen Sie <strong>Create from blank</strong>, um mit einem leeren Flow-Canvas zu beginnen.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/create-flow-from-blank-v2.png" alt="Neuen Flow von Grund auf neu erstellen" class="desktop-width-75"/></p> <p>Benennen Sie Ihren Flow <code class="language-plaintext highlighter-rouge">SendEmailWithDocument</code>, um dem im Button-Code referenzierten Flow-Namen zu entsprechen. Der erste Schritt in jedem Power Apps-ausgelösten Flow ist der <strong>Power Apps (V2)</strong>-Trigger, der die Parameter definiert, die die App an den Flow übergibt.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/power-apps-input-parameters.png" alt="Konfiguration der Power Automate-Eingabeparameter"/></p> <p>Klicken Sie für jeden Parameter, den Sie von Power Apps empfangen müssen, auf <strong>Add an input</strong>. Die Parametertypen sollten den übertragenen Daten entsprechen (in diesem Fall alles Text). Die folgende Tabelle zeigt, wie jeder Flow-Parameter dem entsprechenden UI-Element zugeordnet ist:</p> <table class="table table-bordered"> <thead> <tr> <th>Flow-Parameter</th> <th>UI-Element</th> <th>Beschreibung</th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">Email</code></td> <td><code class="language-plaintext highlighter-rouge">TextInput1_1.Text</code></td> <td>E-Mail-Adresse des Empfängers</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Plan_Name</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox1_16.Text</code></td> <td>Name des empfohlenen Krankenversicherungsplans</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Coverage</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox3_5.Text</code></td> <td>Beschreibung des Deckungsumfangs</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Price_Per_Month</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox3_6.Text</code></td> <td>Monatliche Prämie</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Price_Per_Individual</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox3_7.Text</code></td> <td>Kosten für Einzelpersonenabdeckung</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Out_Of_Pocket_Limit</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox3_8.Text</code></td> <td>Maximale Eigenbeteiligung</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Coinsurance_Percentage</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox3_9.Text</code></td> <td>Erstattungsprozentsatz</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Additional_Services</code></td> <td><code class="language-plaintext highlighter-rouge">TextBox3_11.Text</code></td> <td>Liste der zusätzlich abgedeckten Leistungen</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">Name</code></td> <td><code class="language-plaintext highlighter-rouge">User().FullName</code></td> <td>Mitarbeitername aus Azure Active Directory</td> </tr> </tbody> </table> <p><br/></p> <h2 id="vorlage-vorbereiten">Die DocuGenerate-Vorlage Vorbereiten</h2> <p>Bevor wir den Dokumentengenerierungsschritt zu unserem Flow hinzufügen, müssen wir eine Word-Vorlage in DocuGenerate erstellen, die die Struktur und Formatierung unseres Krankenplan-Angebots definiert. Die Vorlage verwendet <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a>, die den in Power Automate definierten Parameternamen entsprechen und durch die tatsächlichen Werte aus dem Flow ersetzt werden.</p> <p>Das Word-Dokument enthält Unternehmensbranding, eine klare Kopfzeile, Abschnitte für Plandetails und zusätzliche Informationen, die auf jedem Angebot erscheinen sollen. Es enthält Zusammenführungs-Tags für alle neun Parameter: <code class="language-plaintext highlighter-rouge">[Name]</code>, <code class="language-plaintext highlighter-rouge">[Email]</code>, <code class="language-plaintext highlighter-rouge">[Plan_Name]</code>, <code class="language-plaintext highlighter-rouge">[Coverage]</code>, <code class="language-plaintext highlighter-rouge">[Price_Per_Month]</code>, <code class="language-plaintext highlighter-rouge">[Price_Per_Individual]</code>, <code class="language-plaintext highlighter-rouge">[Out_Of_Pocket_Limit]</code>, <code class="language-plaintext highlighter-rouge">[Coinsurance_Percentage]</code> und <code class="language-plaintext highlighter-rouge">[Additional_Services]</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/docugenerate-template.png" alt="Krankenplan-Angebotsvorlage mit Zusammenführungs-Tags"/></p> <p>Sobald Ihre Vorlage fertig ist, <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">laden Sie sie</a> in Ihr DocuGenerate-Konto hoch und benennen Sie sie <strong>Health Plan Proposal</strong>. Sie können eine Kopie der in diesem Tutorial verwendeten Vorlage <a href="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/Health Plan Proposal.docx">hier herunterladen</a>.</p> <h2 id="dokument-generierungsschritt">Den Dokumentengenerierungsschritt Hinzufügen</h2> <p>Um DocuGenerate aus Power Automate zu verwenden, müssen Sie den <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-power-apps-automatisieren/#add-the-custom-connector">Custom Connector</a> in Ihrer Power Platform-Umgebung installieren. Beim ersten Mal müssen Sie sich mit Ihrem DocuGenerate <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a> authentifizieren, den Sie in Ihren DocuGenerate-Kontoeinstellungen finden. Dadurch wird eine Verbindung erstellt, die für mehrere Flows in Ihrer Umgebung wiederverwendet werden kann.</p> <p>Mit der erstellten Vorlage und dem verfügbaren Connector können wir nun den Dokumentengenerierungsschritt zu unserem Flow hinzufügen. Klicken Sie auf <strong>New step</strong> in Ihrem Flow und suchen Sie nach “DocuGenerate”. Wählen Sie die <strong>Generate Document</strong>-Aktion aus der Liste der verfügbaren Operationen.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/search-docugenerate-app.png" alt="Suche nach dem DocuGenerate-Connector"/></p> <p>Um die Aktion zu konfigurieren, wählen Sie Ihre Vorlage aus dem <strong>Template</strong>-Dropdown. Wenn Sie Ihre Vorlage mit dem Namen “Health Plan Proposal” hochgeladen haben, sollte sie in der Liste erscheinen. Setzen Sie als Nächstes den <strong>Name</strong>-Parameter, um anzugeben, wie das generierte Dokument heißen soll. Wählen Sie <code class="language-plaintext highlighter-rouge">.pdf</code> als <strong>Format</strong>, damit das generierte Dokument als professionelle PDF und nicht als bearbeitbare Word-Datei geliefert wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/generate-document-step.png" alt="Konfiguration des Generate Document-Schritts"/></p> <p>Für den <strong>Data</strong>-Parameter müssen Sie ein JSON-Objekt bereitstellen, das alle Werte für die Zusammenführungs-Tags in Ihrer Vorlage enthält. Ersetzen Sie jede leere Zeichenkette durch den entsprechenden dynamischen Inhalt aus dem Trigger-Schritt. Power Automate zeigt diese als Token im Ausdruck anstelle von wörtlichen Zeichenketten an.</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Email"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Plan_Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Coverage"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Price_Per_Month"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Price_Per_Individual"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Out_Of_Pocket_Limit"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Coinsurance_Percentage"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Additional_Services"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div> <h2 id="e-mail-senden-schritt">Die E-Mail mit dem Dokument Senden</h2> <p>Der letzte Schritt in unserem Flow sendet eine E-Mail an den Mitarbeiter mit dem generierten PDF-Angebot als Anhang. Fügen Sie einen neuen Schritt hinzu und suchen Sie nach der <strong>Send an email notification (V3)</strong>-Aktion.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/send-an-email-notification-step.png" alt="Konfiguration des Send an email notification-Schritts"/></p> <p>Konfigurieren Sie die E-Mail-Parameter wie folgt. Setzen Sie das <strong>To</strong>-Feld auf den <strong>Email</strong>-Wert aus dem Power Apps-Trigger – das ist die Adresse, die der Mitarbeiter in der App eingegeben hat. Verwenden Sie für <strong>Subject</strong> etwas Beschreibendes wie <code class="language-plaintext highlighter-rouge">Your Personalized Healthcare Plan Proposal</code>. Im <strong>Body</strong>-Feld verfassen Sie eine freundliche Nachricht, die erklärt, was der Anhang enthält und welche nächsten Schritte der Mitarbeiter unternehmen sollte.</p> <p>Die wichtigste Konfiguration ist der Anhangbereich. Hier verbinden Sie die generierte PDF mit der E-Mail. Wählen Sie für den <strong>Attachment</strong>-Parameter die <code class="language-plaintext highlighter-rouge">document_uri</code>-Ausgabe aus dem <strong>Generate Document</strong>-Schritt. Für den <strong>Attachment File Name</strong>-Parameter wählen Sie die <code class="language-plaintext highlighter-rouge">filename</code>-Ausgabe desselben Schritts. So wird sichergestellt, dass die E-Mail das eigentliche PDF-Dokument mit dem korrekten Dateinamen enthält.</p> <p>Speichern Sie nach dieser letzten Konfiguration Ihren Flow und testen Sie ihn, um sicherzustellen, dass alles korrekt funktioniert.</p> <h2 id="testen">Die Vollständige Integration Testen</h2> <p>Da nun sowohl die Power Apps-App als auch der Power Automate-Flow konfiguriert sind, ist es Zeit, die vollständige Integration zu testen. Führen Sie die App im Vorschaumodus aus und durchlaufen Sie den Krankenplan-Auswahlprozess. Beantworten Sie die Fragen zu Deckungsbedarf, gewünschten Leistungen und Budgetpräferenzen. Wenn Sie den Bestätigungsscreen erreichen, geben Sie Ihre E-Mail-Adresse ein und klicken Sie auf den <strong>SEND</strong>-Button. Wenn alles korrekt konfiguriert ist, löst der Button den Power Automate-Flow aus, der die PDF generiert und die E-Mail sendet.</p> <p>Das Dokument enthält alle Plandetails mit den durch tatsächliche Werte aus der App ersetzten Zusammenführungs-Tags, und die Formatierung entspricht dem professionellen Vorlagendesign.</p> <object data="/assets/posts/028-power-apps-health-plan/Health Plan Proposal.pdf" type="application/pdf" class="inline-pdf-blog"></object> <p>Wenn Probleme auftreten, überprüfen Sie den Flow-Ausführungsverlauf in Power Automate, um zu sehen, wo der Prozess möglicherweise fehlgeschlagen ist. Häufige Probleme sind falsche Parameterzuordnungen oder Authentifizierungsprobleme mit einem der Connectors. Der Flow-Ausführungsverlauf liefert detaillierte Informationen zu jedem Schritt, einschließlich der übertragenen Daten und etwaiger Fehlermeldungen.</p> <h2 id="vorteile">Vorteile Dieses Ansatzes</h2> <p>Der Ersatz der einfachen E-Mail-Sendefunktionalität durch automatisierte Dokumentengenerierung und E-Mail-Versand bietet sowohl für HR-Teams als auch für Mitarbeiter mehrere Vorteile. Der automatisierte Workflow stellt Konsistenz bei der Darstellung von Krankenplaninformationen für alle Mitarbeiter sicher und eliminiert Variationen, die entstehen können, wenn Einzelpersonen E-Mails manuell verfassen. Das generierte PDF dient als formelles Dokument, das Mitarbeiter speichern, drucken und während der gesamten Anmeldeperiode referenzieren können, was es einfacher macht, Optionen zu vergleichen oder Pläne mit Familienmitgliedern zu besprechen.</p> <p>Aus operativer Sicht reduziert diese Integration den manuellen Aufwand für HR-Mitarbeiter. Anstatt Mitarbeitern beim Verfassen von E-Mails helfen oder Planzusammenfassungen einzeln vorbereiten zu müssen, übernimmt das System dies automatisch basierend auf den von der App generierten Empfehlungen. So bleibt HR mehr Zeit für wertvollere Aktivitäten wie die Beantwortung spezifischer Fragen oder die Hilfe bei komplexen Situationen.</p> <p>Der Ansatz schafft auch eine bessere Dokumentation für Compliance-Zwecke. Jedes generierte Angebot ist ein Nachweis darüber, welche Informationen dem Mitarbeiter bereitgestellt wurden, was für die regulatorische Compliance oder bei späteren Fragen über die während des Anmeldeprozesses kommunizierten Inhalte wichtig sein kann. Sie könnten den Workflow weiter erweitern, indem Sie einen Schritt hinzufügen, der jedes generierte Angebot in SharePoint oder einem anderen Dokumentenmanagementsystem für eine zentrale Aufzeichnung speichert.</p> <h2 id="fazit">Fazit</h2> <p>Die Erweiterung von Power Apps-Anwendungen mit automatisierten Dokumentengenerierungsfunktionen demonstriert die Leistungsfähigkeit des Microsoft Power Platform-Ökosystems in Kombination mit spezialisierten Diensten wie DocuGenerate. Die von uns erstellte Integration verwandelt eine einfache Krankenplan-Auswahl-App in eine vollständige Onboarding-Lösung, die Mitarbeiter durch die Planauswahl führt und automatisch professionelle Angebotsdokumente liefert.</p> <p>Dieses Tutorial konzentrierte sich auf Krankenplan-Angebote, aber dasselbe Integrationsmuster kann auf viele andere Power Apps-Szenarien angewendet werden. Immer wenn Ihre App Daten erfasst, die als formelles Dokument formatiert und an Benutzer geliefert oder für Aufzeichnungen gespeichert werden müssen, kann dieser Ansatz – Power Automate zur Orchestrierung der Dokumentengenerierung und -verteilung zu verwenden – erheblichen Mehrwert schaffen. Ob Sie Arbeitsverträge, Angebotsschreiben, Schulungszertifikate oder benutzerdefinierte Berichte generieren – die Kombination aus Power Apps für die Datenerfassung, Power Automate für die Workflow-Orchestrierung und DocuGenerate für die Dokumentengenerierung bietet eine leistungsstarke und flexible Lösung.</p> <p>Der No-Code-Charakter dieser Integration macht sie für Business-Analysten und Power-User zugänglich, die möglicherweise keine traditionellen Entwicklungskenntnisse haben. Durch die Nutzung vorgefertigter Connectors und visueller Workflow-Designer können Sie anspruchsvolle Dokumentenautomatisierungslösungen erstellen, ohne benutzerdefinierten Code schreiben oder komplexe Infrastruktur verwalten zu müssen.</p> <h2 id="ressourcen">Ressourcen</h2> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/Health Plan Proposal.docx">Health Plan Proposal</a>-Vorlage aus diesem Tutorial.</li> <li>Der <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-power-apps-automatisieren/">DocuGenerate-Leitfaden</a> für die Integration mit Power Apps.</li> <li>Offizielle <a href="https://learn.microsoft.com/en-us/power-automate/" target="_blank" rel="nofollow noopener">Power Automate-Dokumentation</a> von Microsoft.</li> <li>Offizielle <a href="https://learn.microsoft.com/en-us/power-apps/" target="_blank" rel="nofollow noopener">Power Apps-Dokumentation</a> von Microsoft.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Proposals"/> <category term="Power Platform"/> <category term="No-Code"/> <summary type="html"><![CDATA[Dieses ausführliche Tutorial zeigt, wie Sie die Health Plan Selector-App in Power Apps mit automatisierter Dokumentengenerierung mithilfe von DocuGenerate erweitern, um professionelle PDF-Angebote zu erstellen, die personalisierte Krankenplan-Empfehlungen zusammenfassen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Einen Lebenslauf-Analyzer mit Pipedream und DocuGenerate Erstellen</title> <link href="https://www.docugenerate.com/de/blog/lebenslauf-analyzer-mit-pipedream-und-docugenerate-erstellen/" rel="alternate" type="text/html" title="Einen Lebenslauf-Analyzer mit Pipedream und DocuGenerate Erstellen"/> <published>2025-11-19T00:00:00+00:00</published> <updated>2025-11-19T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/lebenslauf-analyzer-mit-pipedream-und-docugenerate-erstellen</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/lebenslauf-analyzer-mit-pipedream-und-docugenerate-erstellen/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Die Sichtung von Lebensläufen ist einer der zeitaufwändigsten Aspekte des Einstellungsprozesses. HR-Teams verbringen oft Stunden damit, Lebensläufe zu prüfen, wichtige Informationen zu extrahieren, Kandidaten zu bewerten und Zusammenfassungen für Einstellungsverantwortliche vorzubereiten. In diesem Tutorial bauen wir einen automatisierten Lebenslauf-Analyzer, der diese Arbeit für Sie übernimmt – durch die Kombination von <a href="https://pipedream.com/" target="_blank" rel="nofollow noopener">Pipedream</a>-Workflow-Automatisierung, <a href="https://www.anthropic.com/claude" target="_blank" rel="nofollow noopener">Claude AI</a> für intelligente Analyse und <a href="https://www.docugenerate.com/">DocuGenerate</a> für professionelle PDF-Generierung.</p> <p>Der Workflow wird automatisch ausgelöst, sobald ein neuer Lebenslauf zu einem Dropbox-Ordner hinzugefügt wird. Er extrahiert den Text aus dem Lebenslauf, verwendet Claude, um die Erfahrung und Qualifikationen des Kandidaten zu analysieren, erstellt eine strukturierte Zusammenfassung mit wichtigen Erkenntnissen und generiert einen professionellen PDF-Bericht, den Ihr Einstellungsteam sofort einsehen kann. Der gesamte Prozess dauert nur Sekunden und erfordert keinerlei manuelle Eingriffe.</p> <p>Dieser Ansatz ist besonders wertvoll für Unternehmen, die mehrere Lebensläufe schnell verarbeiten müssen und dabei Konsistenz bei der Kandidatenbewertung wahren wollen. Durch die Standardisierung des Analyseformats und den Einsatz von KI zur Erkenntnisgewinnung können Sie Ihre Zeit dem Interview der vielversprechendsten Kandidaten widmen, anstatt Stunden mit der Erstprüfung zu verbringen.</p> <h2 id="workflow-ueberblick">Den Workflow Verstehen</h2> <p>Der vollständige Workflow besteht aus sieben verbundenen Schritten, die gemeinsam einen rohen Lebenslauf in einen strukturierten Analysebericht umwandeln. So verläuft der Prozess von Anfang bis Ende:</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/complete-workflow-diagram.png" alt="Vollständiges Workflow-Diagramm mit allen Schritten"/></p> <p>Der Workflow beginnt, wenn Sie einen Lebenslauf in einen überwachten Dropbox-Ordner hochladen. Pipedream erkennt die neue Datei, lädt sie herunter und extrahiert den Textinhalt aus der PDF. Dieser Text wird dann mit spezifischen Anweisungen an Claude AI gesendet, um den Lebenslauf zu analysieren und wichtige Informationen wie Berufserfahrung, Fähigkeiten, Ausbildung und bemerkenswerte Leistungen zu extrahieren. Claude gibt eine strukturierte JSON-Antwort zurück, die alle extrahierten Daten enthält.</p> <p>Die JSON-Daten werden dann zusammen mit einer vorab gestalteten Vorlage an DocuGenerate übergeben, um eine professionelle PDF-Zusammenfassung zu generieren. Sobald das Dokument erstellt ist, wird es automatisch in einen dedizierten Ordner in Dropbox hochgeladen, wo Ihr Einstellungsteam darauf zugreifen kann. Der gesamte Prozess wird in unter einer Minute abgeschlossen, und Sie können mehrere Lebensläufe gleichzeitig verarbeiten, indem Sie sie einfach in den Auslöser-Ordner hochladen.</p> <h2 id="dokumentvorlage-einrichten">Dokumentvorlage Einrichten</h2> <p>Bevor wir den Pipedream-Workflow aufbauen, müssen wir eine Vorlage erstellen, die unsere Lebenslaufanalyse-Berichte formatiert. Die Vorlage verwendet die <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tag</a>-Syntax von DocuGenerate, um festzulegen, wo die Daten aus Claudes Analyse im endgültigen Dokument erscheinen sollen. So wird sichergestellt, dass jede Kandidatenzusammenfassung einem konsistenten, professionellen Format folgt.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/docugenerate-template.png" alt="Screenshot der Lebenslaufzusammenfassungs-Vorlage in DocuGenerate"/></p> <p>Die Vorlage enthält Abschnitte für Kandidateninformationen (Name, E-Mail, Telefon, Ort), eine berufliche Zusammenfassung, einen Erfahrungsüberblick, wichtige Fähigkeiten, Ausbildung, Stärken, Interviewempfehlungen und eine Gesamtbewertung mit einem Eignungswert. Einige Abschnitte wie Fähigkeiten, Stärken und Empfehlungen verwenden die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-listen-zu-einer-vorlage-hinzu/">Listensyntax</a>, um mehrere Elemente aus Arrays in den Daten anzuzeigen. Beispielsweise verwendet der Fähigkeitsabschnitt <code class="language-plaintext highlighter-rouge">[#skills]</code>, um die Schleife zu beginnen, <code class="language-plaintext highlighter-rouge">[.]</code>, um jede Fähigkeit als Aufzählungspunkt anzuzeigen, und <code class="language-plaintext highlighter-rouge">[/skills]</code>, um die Schleife zu beenden.</p> <p>Sie können die <a href="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/Resume Analysis Summary.docx" target="_blank">vollständige Vorlage herunterladen</a> und in Ihr DocuGenerate-Konto hochladen. Notieren Sie sich nach dem Hochladen den Vorlagennamen oder die ID, da Sie diese Informationen beim Konfigurieren des Dokumentengenerierungsschritts im Workflow benötigen. Mit der fertigen Vorlage können wir nun den Pipedream-Workflow aufbauen, der den gesamten Analyseprozess automatisiert.</p> <h2 id="dropbox-trigger">Den Dropbox-Trigger Konfigurieren</h2> <p>Der Workflow beginnt mit einem <a href="https://pipedream.com/apps/dropbox/triggers/new-file" target="_blank" rel="nofollow noopener">Dropbox-Trigger</a>, der einen bestimmten Ordner auf neue Dateien überwacht. Dieser Trigger ist der Einstiegspunkt, der die gesamte Automatisierung aktiviert, sobald ein Lebenslauf hochgeladen wird. Um diesen Trigger zu konfigurieren, müssen Sie Ihr Dropbox-Konto mit Pipedream verbinden und angeben, welchen Ordner überwacht werden soll.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/dropbox-trigger-config.png" alt="Screenshot der Dropbox-Trigger-Konfiguration"/></p> <p>Für dieses Tutorial überwachen wir einen Ordner namens <code class="language-plaintext highlighter-rouge">/Pipedream/Resumes</code>. Wenn Sie den Trigger mit einem Beispiel-Lebenslauf testen, sehen Sie, dass er Metadaten zur Datei zurückgibt, darunter Dateiname, Pfad, Größe und Änderungsdaten. Es ist jedoch wichtig zu beachten, dass der Trigger nur diese Metadaten und nicht den eigentlichen Dateiinhalt liefert. Deshalb benötigen wir einen separaten Schritt zum Herunterladen der Datei, den wir im <a href="#datei-herunterladen">nächsten Abschnitt</a> konfigurieren.</p> <p>Der Trigger wird sofort aktiviert, wenn eine neue Datei erkannt wird, sodass der Workflow schnell auf Ihre Einstellungsanforderungen reagiert. Sie können den ganzen Tag über Lebensläufe hochladen, und jeder wird automatisch verarbeitet, ohne manuellen Eingriff. Diese Echtzeit-Verarbeitung stellt sicher, dass Kandidatenzusammenfassungen so schnell wie möglich für Ihr Team verfügbar sind.</p> <h2 id="datei-herunterladen">Die Lebenslauf-Datei Herunterladen</h2> <p>Nachdem der Trigger eine neue Datei erkannt hat, müssen wir den Dateiinhalt tatsächlich herunterladen, bevor wir Text daraus extrahieren können. Die Aktion <a href="https://pipedream.com/apps/dropbox/actions/download-file-to-tmp" target="_blank" rel="nofollow noopener">Download File to TMP</a> ruft den Lebenslauf aus Dropbox ab und speichert ihn im temporären Speicher von Pipedream, wo nachfolgende Schritte darauf zugreifen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/download-file-to-tmp-config.png" alt="Screenshot der Datei-Download-Konfiguration"/></p> <p>Die Konfiguration ist unkompliziert. Der Parameter <strong>Path</strong> verwendet <code class="language-plaintext highlighter-rouge">{{steps.trigger.event.path_display}}</code>, um den vom Trigger erfassten Dateipfad zu referenzieren. Diese Aktion lädt die Datei herunter und gibt ein Objekt zurück, das den temporären Dateipfad in der Eigenschaft <code class="language-plaintext highlighter-rouge">tmpPath</code> enthält. Die Datei verbleibt während der gesamten Workflow-Ausführung im temporären Speicher, was sich ideal zum Verarbeiten und anschließenden Verwerfen eignet.</p> <p>Die heruntergeladene Datei ist nun für die Textextraktion bereit. Der temporäre Dateipfad wird im nächsten Schritt verwendet, um den PDF-Inhalt zu lesen und in Text umzuwandeln, den Claude analysieren kann.</p> <h2 id="text-extrahieren">Text aus der PDF Extrahieren</h2> <p>Da der Lebenslauf nun im temporären Speicher liegt, müssen wir den Textinhalt aus der PDF-Datei extrahieren. Dieser Schritt verwendet einen Node.js-Codeblock mit der Bibliothek <a href="https://www.npmjs.com/package/pdf-parse" target="_blank" rel="nofollow noopener">pdf-parse</a>, um die PDF zu lesen und in Klartext umzuwandeln, den Claude analysieren kann.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/node-code-config.png" alt="Screenshot des Textextraktions-Codes"/></p> <p>Der Code liest die Datei aus dem temporären Pfad mit dem integrierten <code class="language-plaintext highlighter-rouge">fs</code>-Modul von Node.js und übergibt dann den Datei-Buffer an <code class="language-plaintext highlighter-rouge">pdf-parse</code> zur Verarbeitung. Die Bibliothek übernimmt die komplexe PDF-Verarbeitung und gibt den extrahierten Text als Zeichenkette zurück.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">import</span> <span class="p">{</span> <span class="nx">PDFParse</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">pdf-parse</span><span class="dl">"</span><span class="p">;</span>
<span class="k">import</span> <span class="o">*</span> <span class="k">as</span> <span class="nx">fs</span> <span class="k">from</span> <span class="dl">"</span><span class="s2">fs</span><span class="dl">"</span><span class="p">;</span>

<span class="k">export</span> <span class="k">default</span> <span class="nf">defineComponent</span><span class="p">({</span>
  <span class="k">async</span> <span class="nf">run</span><span class="p">({</span> <span class="nx">steps</span><span class="p">,</span> <span class="nx">$</span> <span class="p">})</span> <span class="p">{</span>
    <span class="c1">// Get the tmp file path</span>
    <span class="kd">const</span> <span class="nx">filePath</span> <span class="o">=</span> <span class="nx">steps</span><span class="p">.</span><span class="nx">download_file_to_tmp</span><span class="p">.</span><span class="nx">$return_value</span><span class="p">.</span><span class="nx">tmpPath</span><span class="p">;</span>

    <span class="c1">// Read the file from /tmp</span>
    <span class="kd">const</span> <span class="nx">dataBuffer</span> <span class="o">=</span> <span class="nx">fs</span><span class="p">.</span><span class="nf">readFileSync</span><span class="p">(</span><span class="nx">filePath</span><span class="p">);</span>

    <span class="c1">// Parse the PDF</span>
    <span class="kd">const</span> <span class="nx">parser</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">PDFParse</span><span class="p">({</span> <span class="na">data</span><span class="p">:</span> <span class="nx">dataBuffer</span> <span class="p">});</span>
    <span class="kd">const</span> <span class="nx">resumeText</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">parser</span><span class="p">.</span><span class="nf">getText</span><span class="p">();</span>

    <span class="c1">// Return the PDF content</span>
    <span class="k">return</span> <span class="nx">resumeText</span><span class="p">;</span>
  <span class="p">},</span>
<span class="p">})</span>
</code></pre></div></div> <p>Der extrahierte Text steht nun in <code class="language-plaintext highlighter-rouge">resumeText</code> zur Verfügung und ist bereit, im nächsten Schritt von Claude analysiert zu werden.</p> <h2 id="claude-analyse">Den Lebenslauf mit Claude Analysieren</h2> <p>Hier geschieht die eigentliche Intelligenz. Der Claude-API-Schritt sendet den extrahierten Lebenslauftext an <a href="https://docs.anthropic.com/en/api/getting-started" target="_blank" rel="nofollow noopener">Anthropics Claude AI</a> mit detaillierten Anweisungen, den Inhalt zu analysieren und strukturierte Daten im JSON-Format zurückzugeben. Claude untersucht den Lebenslauf und extrahiert wichtige Informationen wie Berufserfahrung, Fähigkeiten, Ausbildung und liefert Erkenntnisse, die normalerweise eine manuelle Prüfung erfordern würden.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/claude-chat-config.png" alt="Screenshot der Claude-API-Konfiguration"/></p> <p>Für die Konfiguration der Aktion <a href="https://pipedream.com/apps/anthropic/actions/chat" target="_blank" rel="nofollow noopener">Chat with Anthropic (Claude)</a> benötigen Sie Ihren Anthropic-API-Schlüssel, den Sie in Ihrem Anthropic-Konto erhalten. Die Anfrage verwendet das Modell <code class="language-plaintext highlighter-rouge">claude-sonnet-4-5-20250929</code>, das eine ausgezeichnete Balance aus Geschwindigkeit, Kosten und Analysefähigkeit für diese Aufgabe bietet. Der Parameter <strong>Maximum Tokens to Sample</strong> ist auf <code class="language-plaintext highlighter-rouge">4096</code> gesetzt, was Claude genug Raum gibt, eine umfassende Analyse mit allen benötigten Feldern zurückzugeben.</p> <p>Der Prompt ist sorgfältig strukturiert, um Claude anzuleiten, spezifische Informationen zu extrahieren und diese als gültiges JSON zu formatieren. Hier ist der vollständige Prompt, der Claude anweist, was zu analysieren ist und wie die Antwort strukturiert werden soll:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>You are an expert HR analyst. Analyze the following resume and extract key information into a structured JSON format.

Resume content:
{{steps.code.$return_value.text}}

Please analyze this resume and provide a comprehensive summary in the following JSON structure. Be thorough but concise:

{
  "date": "YYYY-MM-DD (today's date)",
  "candidateName": "Full name from resume",
  "email": "Email address",
  "phone": "Phone number",
  "location": "City, State/Country",
  "summary": "2-3 sentence professional summary highlighting key qualifications, experience, and strengths",
  "yearsOfExperience": "X years (calculate total)",
  "currentPosition": "Most recent job title",
  "currentCompany": "Most recent company name",
  "skills": [
    "List 6-10 key technical and professional skills with proficiency levels where relevant"
  ],
  "highestDegree": "Degree name (e.g., Bachelor of Science in Computer Science)",
  "institution": "University/College name",
  "fieldOfStudy": "Major/Field",
  "strengths": [
    "List 4-6 key strengths based on achievements, projects, and experience"
  ],
  "recommendations": [
    "List 4-5 specific interview questions or topics to explore based on their unique experience"
  ],
  "fitScore": "Rate 1-10 based on overall qualifications and experience",
  "finalNotes": "2-3 sentence overall assessment and hiring recommendation"
}

IMPORTANT INSTRUCTIONS:
- Extract all information directly from the resume
- If any field is not available in the resume, use "Not specified" or an empty array []
- For skills, include proficiency levels when they can be inferred from years of experience or explicit mentions
- Make the summary compelling but accurate
- Base the fitScore on years of experience, skill diversity, education, and career progression
- Ensure all JSON is properly formatted with no syntax errors
- Return ONLY the JSON object, no additional text or markdown formatting

CRITICAL OUTPUT REQUIREMENTS:
- Return ONLY the raw JSON object
- Do NOT wrap the JSON in markdown code blocks
- Do NOT include ```json or ``` markers
- Do NOT add any explanatory text before or after the JSON
- The response must start with { and end with }
- The entire response must be valid, parseable JSON
</code></pre></div></div> <p>Claude verarbeitet den Lebenslauftext und gibt ein JSON-Objekt zurück, das alle extrahierten Informationen enthält. Die Antwort umfasst alles von grundlegenden Kontaktdaten bis hin zu aufschlussreichen Empfehlungen für Interviewfragen, die auf der einzigartigen Erfahrung des Kandidaten basieren. Dieses strukturierte Format erleichtert die Übergabe der Daten an DocuGenerate zur Dokumentengenerierung im nächsten Schritt.</p> <h2 id="json-parsen">Die JSON-Antwort Parsen</h2> <p>Claude gibt seine Analyse als JSON-Zeichenkette zurück, aber wir müssen diese in ein strukturiertes Objekt umwandeln, mit dem wir in nachfolgenden Schritten arbeiten können. Die integrierte <a href="https://pipedream.com/apps/formatting/actions/parse-json" target="_blank" rel="nofollow noopener">Parse JSON</a>-Aktion von Pipedream, die unter <a href="https://pipedream.com/apps/formatting" target="_blank" rel="nofollow noopener">Formatting → Data</a> zu finden ist, übernimmt diese Umwandlung automatisch.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/parse-json-config.png" alt="Screenshot der Parse-JSON-Konfiguration"/></p> <p>Die Konfiguration nimmt einfach die Claude-Antwort aus <code class="language-plaintext highlighter-rouge">{{steps.chat.$return_value.content[0].text}}</code> und parst sie in ein strukturiertes Objekt. Diese geparsten Daten stehen dann allen nachfolgenden Schritten im Workflow zur Verfügung, sodass wir spezifische Felder wie <code class="language-plaintext highlighter-rouge">{{steps.parse_json.$return_value.candidateName}}</code> referenzieren können, wenn wir sie benötigen.</p> <p>Die Aufschlüsselung der Daten in einzelne Felder ist besonders nützlich für dynamische Dateinamen und für die Übergabe des vollständigen Datensatzes an DocuGenerate. Das geparste Objekt enthält alle in unserer Vorlage definierten Felder: Kandidateninformationen, Zusammenfassung, Fähigkeits-Array, Stärken-Array, Empfehlungs-Array und die Gesamtbewertung.</p> <h2 id="dokument-generieren">Das Zusammenfassungsdokument Generieren</h2> <p>Da die analysierten Daten nun als strukturiertes Objekt vorliegen, können wir die professionelle PDF-Zusammenfassung generieren. Dieser Schritt verwendet die <a href="https://pipedream.com/apps/docugenerate" target="_blank" rel="noopener">DocuGenerate App</a> auf Pipedream, um die Daten mit unserer Vorlage zusammenzuführen und ein formatiertes Dokument zu erstellen.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/generate-document-config.png" alt="Screenshot der DocuGenerate-API-Konfiguration"/></p> <p>Sie benötigen Ihren DocuGenerate-API-Schlüssel, um eine Verbindung einzurichten, den Sie in Ihren Kontoeinstellungen finden. Die Aktionskonfiguration umfasst mehrere wichtige Parameter:</p> <ul> <li><strong>Template</strong> gibt die Vorlage <strong>Resume Analysis Summary</strong> aus dem Einrichtungsabschnitt an</li> <li><strong>Name</strong> verwendet <code class="language-plaintext highlighter-rouge">Resume Analysis for {{steps.parse_json.$return_value.candidateName}}</code>, um einen dynamischen Dateinamen basierend auf dem Namen des Kandidaten zu erstellen</li> <li><strong>Format</strong> ist auf <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code> gesetzt, um ein PDF-Dokument zu generieren</li> <li><strong>Data</strong> enthält das vollständige geparste JSON-Objekt <code class="language-plaintext highlighter-rouge">{{steps.parse_json.$return_value}}</code> von Claude mit allen Kandidateninformationen</li> </ul> <p>Die API verarbeitet diese Anfrage und gibt eine Antwort zurück, die ein Feld <code class="language-plaintext highlighter-rouge">document_uri</code> enthält – eine URL, die auf das generierte PDF-Dokument verweist.</p> <h2 id="in-dropbox-hochladen">Die Analyse in Dropbox Hochladen</h2> <p>Der letzte Schritt schließt den Workflow ab, indem die generierte PDF-Analyse zurück in Dropbox hochgeladen wird, wo Ihr Einstellungsteam darauf zugreifen kann. Die Aktion <a href="https://pipedream.com/apps/dropbox/actions/upload-file" target="_blank" rel="nofollow noopener">Upload a File</a> speichert das Dokument in einem dedizierten Ordner und organisiert alle Kandidatenanalysen an einem Ort.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/upload-file-to-dropbox.png" alt="Screenshot der Upload-zu-Dropbox-Konfiguration"/></p> <p>Die Konfiguration erfordert die Angabe des Zielpfads und des hochzuladenden Dateiinhalts:</p> <ul> <li><strong>Path</strong> gibt den Zielordner <code class="language-plaintext highlighter-rouge">/Pipedream/Analysis</code> an</li> <li><strong>File Name</strong> ist auf <code class="language-plaintext highlighter-rouge">{{steps.generate_document.$return_value.filename}}</code> als Dateiname des generierten Dokuments gesetzt</li> <li><strong>File Path or URL</strong> referenziert den Wert <code class="language-plaintext highlighter-rouge">{{steps.generate_document.$return_value.document_uri}}</code> aus dem vorherigen Schritt</li> <li><strong>Mode</strong> ist auf <code class="language-plaintext highlighter-rouge">overwrite</code> gesetzt, um festzulegen, was zu tun ist, wenn die Datei bereits existiert</li> </ul> <p>Nach dem Hochladen steht die Analyse sofort Ihrem Team zur Verfügung, und Sie können optional einen E-Mail-Benachrichtigungsschritt hinzufügen, um Einstellungsverantwortliche zu informieren, wenn eine neue Kandidatenzusammenfassung zur Überprüfung bereit ist.</p> <h2 id="workflow-ausfuehren">Den Vollständigen Workflow Testen</h2> <p>Da alle Schritte konfiguriert sind, ist der Workflow bereit, Lebensläufe automatisch zu verarbeiten. Um ihn zu testen, laden Sie einfach eine Lebenslauf-PDF in den Ordner <code class="language-plaintext highlighter-rouge">/Pipedream/Resumes</code> in Ihrem Dropbox hoch. Der Workflow erkennt die neue Datei innerhalb von Sekunden und beginnt, sie durch jeden Schritt zu verarbeiten.</p> <p>Sie können die Ausführung in Echtzeit über die Pipedream-Oberfläche überwachen, die den Datenfluss durch jeden Schritt zeigt. Nach Abschluss finden Sie die generierte Analyse-PDF in Ihrem Ordner <code class="language-plaintext highlighter-rouge">/Pipedream/Analysis</code> in Dropbox, bereit für die Überprüfung durch Ihr Einstellungsteam.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/pdf-analysis-in-dropbox.png" alt="Beispiel der generierten PDF-Analyse in Dropbox"/></p> <h2 id="workflow-erweitern">Den Workflow Erweitern</h2> <p>Der von uns aufgebaute Lebenslauf-Analyzer bietet eine solide Grundlage, aber es gibt viele Möglichkeiten, ihn zu erweitern, damit er besser zu Ihrem Einstellungsprozess passt. Hier sind einige praktische Erweiterungen, die Sie in Betracht ziehen könnten, um den Workflow noch wertvoller für Ihre Organisation zu machen.</p> <p>Sie könnten einen E-Mail-Benachrichtigungsschritt hinzufügen, der Einstellungsverantwortliche sofort informiert, wenn eine neue Kandidatenanalyse bereit ist. Diese Benachrichtigung könnte wichtige Highlights aus Claudes Analyse enthalten, wie den Eignungswert und die berufliche Zusammenfassung, sowie einen direkten Link zum vollständigen PDF-Bericht in Dropbox. So entfällt die Notwendigkeit, dass Einstellungsverantwortliche den Ordner ständig auf neue Analysen prüfen müssen.</p> <p>Eine weitere nützliche Erweiterung ist die Speicherung der strukturierten JSON-Daten in einer Datenbank oder Tabellenkalkulation. Durch Hinzufügen eines Schritts, der die geparsten Daten an <a href="https://pipedream.com/apps/airtable" target="_blank" rel="nofollow noopener">Airtable</a>, <a href="https://pipedream.com/apps/google-sheets" target="_blank" rel="nofollow noopener">Google Sheets</a> oder Ihr Bewerber-Tracking-System sendet, können Sie eine durchsuchbare Datenbank aller Kandidaten aufbauen. So können Sie Kandidaten einfach nach Fähigkeiten, Erfahrungsniveau oder Eignungswert filtern, wenn Sie nach bestimmten Qualifikationen suchen.</p> <p>Sie könnten die Analyse auch basierend auf der zu besetzenden Stelle anpassen. Sie könnten verschiedene Vorlagen für verschiedene Rollen erstellen und den Dateinamen oder eine bestimmte Ordnerstruktur verwenden, um zu bestimmen, welche Vorlage genutzt werden soll. Lebensläufe in <code class="language-plaintext highlighter-rouge">/Resumes/Engineering</code> könnten beispielsweise eine Vorlage verwenden, die technische Fähigkeiten betont, während solche in <code class="language-plaintext highlighter-rouge">/Resumes/Sales</code> sich mehr auf Kommunikationsfähigkeiten und Vertriebserfahrung konzentrieren.</p> <h2 id="fazit">Fazit</h2> <p>Der Aufbau eines automatisierten Lebenslauf-Analyzers mit Pipedream, Claude und DocuGenerate zeigt, wie KI und Workflow-Automatisierung zeitaufwändige manuelle Prozesse in effiziente, konsistente Abläufe verwandeln können. Der von uns erstellte Workflow verarbeitet Lebensläufe in Sekunden, extrahiert aussagekräftige Erkenntnisse, die Menschen viel länger bräuchten, um sie zu identifizieren, und generiert Berichte, die Einstellungsentscheidungen erleichtern.</p> <p>Dieser Ansatz ist besonders wertvoll, weil er Konsistenz bei der Kandidatenbewertung gewährleistet. Jeder Lebenslauf wird nach denselben Kriterien analysiert, was unbewusste Vorurteile reduziert und sicherstellt, dass alle Kandidaten fair bewertet werden. Das strukturierte Format der Analyseberichte erleichtert auch den direkten Vergleich von Kandidaten und die Identifizierung der vielversprechendsten Bewerber für Ihre offenen Stellen.</p> <p>Das hier demonstrierte Workflow-Muster geht über die Lebenslaufanalyse hinaus. Derselbe Ansatz zur Textextraktion aus Dokumenten, zur KI-gestützten Analyse und Strukturierung des Inhalts sowie zur Generierung formatierter Berichte kann auf viele andere Dokumentenverarbeitungsszenarien angewendet werden. Ob Sie Verträge analysieren, Kundenfeedback verarbeiten oder Daten aus Forschungsarbeiten extrahieren – der zentrale Workflow bleibt ähnlich, mit Anpassungen am Analyse-Prompt und der Ausgabevorlage.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/Resume Analysis Summary.docx" target="_blank">Resume Analysis Summary</a>-Vorlage für DocuGenerate.</li> <li>Die offizielle <a href="https://pipedream.com/apps/docugenerate" target="_blank" rel="noopener">DocuGenerate App</a> für Pipedream.</li> <li>Die <a href="https://pipedream.com/apps/anthropic" target="_blank" rel="nofollow noopener">Anthropic (Claude) App</a> auf Pipedream.</li> <li>Die <a href="https://pipedream.com/apps/dropbox" target="_blank" rel="nofollow noopener">Dropbox App</a> auf Pipedream.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="AI"/> <category term="Pipedream"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie einen intelligenten Lebenslauf-Analyzer aufbauen, der Bewerbungen automatisch mit Pipedream, Claude AI und DocuGenerate verarbeitet. Dieses Schritt-für-Schritt-Tutorial zeigt, wie Sie wichtige Daten aus Lebensläufen extrahieren und daraus PDF-Berichte erstellen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/cover-image-v2.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/cover-image-v2.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">PDF-Rechnungsgenerierung mit n8n und DocuGenerate Automatisieren</title> <link href="https://www.docugenerate.com/de/blog/pdf-rechnungsgenerierung-mit-n8n-und-docugenerate-automatisieren/" rel="alternate" type="text/html" title="PDF-Rechnungsgenerierung mit n8n und DocuGenerate Automatisieren"/> <published>2025-10-24T00:00:00+00:00</published> <updated>2025-10-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/pdf-rechnungsgenerierung-mit-n8n-und-docugenerate-automatisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/pdf-rechnungsgenerierung-mit-n8n-und-docugenerate-automatisieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Dokumentenautomatisierung erfordert nicht immer Cloud-basierte Lösungen – manchmal sind die effektivsten Workflows jene, die lokal auf Ihrem Rechner laufen. In diesem Tutorial zeigen wir, wie Sie ein automatisiertes Rechnungsgenerierungssystem mithilfe von <a href="https://n8n.io/" target="_blank" rel="nofollow noopener">n8n</a>, einem leistungsstarken Workflow-Automatisierungstool, in Kombination mit <a href="https://www.docugenerate.com/">DocuGenerate</a> erstellen, um professionelle PDF-Rechnungen zu erzeugen.</p> <p>Der Workflow, den wir erstellen werden, ist unkompliziert und dennoch leistungsstark. Er überwacht einen bestimmten Ordner auf Ihrem lokalen Rechner auf neue Excel-Dateien mit Rechnungsdaten. Wenn eine Datei erscheint, liest der Workflow die Daten automatisch aus, generiert für jede Zeile eine separate Rechnung und speichert die fertigen PDF-Dokumente in einem Ausgabeordner. Dieser Ansatz ist besonders nützlich für Unternehmen, die Rechnungen lokal verarbeiten und die vollständige Kontrolle über ihre Daten behalten müssen.</p> <p>In dieser Anleitung werden wir jeden Knoten im n8n-Workflow durchgehen und seinen Zweck und seine Konfiguration erläutern. Am Ende dieses Tutorials verfügen Sie über ein vollständig funktionsfähiges lokales Rechnungsgenerierungssystem, das Sie an Ihre spezifischen Anforderungen anpassen können.</p> <h2 id="vorlage-einrichten">Vorlage Einrichten</h2> <p>Bevor wir den n8n-Workflow aufbauen, müssen wir unsere Rechnungsvorlage vorbereiten. Die <a href="https://www.docugenerate.com/de/vorlagen/">Vorlagenbibliothek</a> von DocuGenerate enthält eine gebrauchsfertige <a href="https://www.docugenerate.com/assets/templates/invoices/repair/Repair Invoice.zip">Repair Invoice</a>-Vorlage, die sich perfekt für dieses Tutorial eignet. Mehr über die Verwendung von Vorlagen aus der Bibliothek erfahren Sie in unserem <a href="https://www.docugenerate.com/de/blog/so-verwenden-sie-die-vorlagen-aus-der-vorlagenbibliothek/">vorherigen Leitfaden</a>.</p> <p>Die Vorlage enthält Zusammenführungs-Tags wie <code class="language-plaintext highlighter-rouge">Invoice No</code>, <code class="language-plaintext highlighter-rouge">Customer Name</code>, <code class="language-plaintext highlighter-rouge">Product Name</code> und andere gängige Rechnungsfelder. Diese <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> werden während des Dokumentgenerierungsprozesses automatisch durch tatsächliche Daten aus der Excel-Datei ersetzt. Die Vorlage enthält außerdem eine Beispiel-Excel-Datei mit zehn Zeilen Rechnungsdaten, die wir zur Demonstration des Workflows verwenden.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/repair-invoice-template.png" alt="Die Repair-Invoice-Vorlage in DocuGenerate"/></p> <p>Nachdem Sie die Vorlage aus der Bibliothek heruntergeladen haben, laden Sie die Datei <a href="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/Repair Invoice.docx">Repair Invoice.docx</a> in Ihr DocuGenerate-Konto hoch. Mit der fertigen Vorlage können wir uns nun dem Aufbau des n8n-Workflows widmen, der den gesamten Rechnungsgenerierungsprozess automatisiert.</p> <h2 id="workflow-ueberblick">Workflow-Überblick</h2> <p>Der Workflow, den wir erstellen, besteht aus mehreren miteinander verbundenen Knoten, die zusammenarbeiten, um auf Dateien zu überwachen, Daten zu verarbeiten, Dokumente zu generieren und die Ergebnisse auf der Festplatte zu speichern. So sieht der vollständige Workflow in n8n aus:</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/complete-workflow.png" alt="Der vollständige n8n-Workflow"/></p> <p>Der Workflow beginnt mit einem Trigger, der einen lokalen Ordner auf neue Dateien überwacht. Wenn eine Excel-Datei hinzugefügt wird, überprüft der Workflow die Dateiendung, liest den Dateiinhalt, extrahiert die Daten in strukturierte Zeilen und durchläuft dann jede Zeile, um eine individuelle Rechnung zu generieren. Jede generierte Rechnung wird heruntergeladen und in einem bestimmten Ausgabeordner auf Ihrem lokalen Rechner gespeichert. Dieser gesamte Prozess läuft automatisch ab, ohne dass nach der Konfiguration ein manueller Eingriff erforderlich ist.</p> <p>Wenn Sie diesen Workflow direkt in Ihre n8n-Instanz importieren möchten, können Sie die <a href="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/n8n-workflow.json" target="_blank">Workflow-JSON-Datei</a> herunterladen und importieren. Dies kann Zeit sparen und sicherstellen, dass alle Knoten korrekt konfiguriert sind. Sehen wir uns nun jeden Knoten im Detail an, um zu verstehen, wie der Workflow funktioniert.</p> <h2 id="lokaler-datei-trigger">Lokaler Datei-Trigger Konfigurieren</h2> <p>Der Workflow beginnt mit dem <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.localfiletrigger/" target="_blank" rel="nofollow noopener">Local File Trigger</a>-Knoten, der einen bestimmten Ordner auf Ihrem Computer auf neue Dateien überwacht. Dieser Trigger ist der Einstiegspunkt für den gesamten Automatisierungsprozess. Für dieses Tutorial überwachen wir den Ordner <code class="language-plaintext highlighter-rouge">/Users/docugenerate/n8n/Data</code>, aber Sie können ihn auf jedes Verzeichnis auf Ihrem System konfigurieren, in dem Sie Excel-Dateien ablegen möchten.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/local-file-trigger-v3.png" alt="Konfiguration des Local File Triggers" class="desktop-width-50"/></p> <p>Der Trigger ist so konfiguriert, dass er das <code class="language-plaintext highlighter-rouge">File Added</code>-Ereignis erkennt, d.h. er wird aktiviert, wenn eine neue Datei im überwachten Ordner erscheint. Dies ist ideal für Batch-Verarbeitungsszenarien, bei denen Sie im Laufe des Tages mehrere Excel-Dateien in einen Ordner ablegen und diese automatisch verarbeiten lassen möchten. Der Trigger erfasst den Dateipfad und übergibt ihn an den nächsten Knoten im Workflow.</p> <p>Für dieses Beispiel verwenden wir die <strong>Repair Invoice.xlsx</strong>-Datei aus der Beispielvorlage, die zehn Zeilen Rechnungsdaten enthält. Jede Zeile stellt eine separate Rechnung mit Details wie Rechnungsnummer, Kundeninformationen, Servicebeschreibungen und Beträgen dar.</p> <h2 id="dateiendung-pruefen">Dateiendung Prüfen</h2> <p>Nachdem der Trigger eine neue Datei erkannt hat, müssen wir überprüfen, ob es sich tatsächlich um eine Excel-Datei handelt, bevor wir versuchen, sie zu verarbeiten. Der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/" target="_blank" rel="nofollow noopener">If</a>-Knoten dient diesem Zweck, indem er prüft, ob der Dateipfad mit der <code class="language-plaintext highlighter-rouge">.xlsx</code>-Erweiterung endet. Dieser Validierungsschritt verhindert Fehler, die auftreten könnten, wenn jemand versehentlich einen anderen Dateityp in den überwachten Ordner ablegt.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/if-condition.png" alt="Prüfung, ob die Datei eine Excel-Datei ist" class="desktop-width-75"/></p> <p>Wenn die Bedingung wahr ist, fährt der Workflow mit dem nächsten Schritt fort. Wenn sie falsch ist, stoppt der Workflow und verhindert so eine unnötige Verarbeitung inkompatibler Dateien. Diese einfache Prüfung erhöht die Robustheit des Workflows und stellt sicher, dass nur gültige Excel-Dateien verarbeitet werden.</p> <h2 id="datei-von-disk-lesen">Datei von Disk Lesen</h2> <p>Sobald wir bestätigt haben, dass die Datei eine Excel-Tabelle ist, ruft der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/#read-files-from-disk" target="_blank" rel="nofollow noopener">Read File from Disk</a>-Knoten den tatsächlichen Dateiinhalt von Ihrem lokalen Rechner ab. Dieser Knoten verwendet den vom Trigger bereitgestellten Dateipfad, um die Binärdaten der Excel-Datei zu finden und zu lesen.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/read-file-from-disk-v2.png" alt="Die Datei von der Festplatte lesen"/></p> <p>Die Konfiguration ist unkompliziert. Der Parameter <strong>File(s) Selector</strong> ist auf <code class="language-plaintext highlighter-rouge">{{ $json.path }}</code> gesetzt, was auf den vom <a href="#lokaler-datei-trigger">Trigger</a> erfassten Pfad verweist. Im Abschnitt Optionen geben wir <code class="language-plaintext highlighter-rouge">data</code> als Namen des binären Ausgabefelds an, in dem der Dateiinhalt gespeichert wird. Dieser Feldname wird in nachfolgenden Knoten verwendet, um auf die Dateidaten zuzugreifen.</p> <p>Es ist wichtig zu beachten, dass dieser Knoten mit Dateien auf demselben Computer arbeitet, auf dem n8n läuft. Wenn Sie Dateien zwischen verschiedenen Computern verarbeiten müssen, würden Sie alternative Knoten wie FTP-, HTTP-Request- oder AWS-S3-Knoten benötigen. Für lokale Verarbeitungsszenarien wie unseres bietet dieser Knoten eine einfache und effiziente Lösung.</p> <h2 id="daten-aus-datei-extrahieren">Daten aus Datei Extrahieren</h2> <p>Da der Dateiinhalt nun als Binärdaten verfügbar ist, müssen wir ihn in ein strukturiertes Format konvertieren, das vom Workflow verarbeitet werden kann. Der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/" target="_blank" rel="nofollow noopener">Extract from File</a>-Knoten übernimmt diese Transformation, indem er die Excel-Datei analysiert und jede Zeile in ein separates Datenelement umwandelt.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/extract-from-file.png" alt="Daten aus der Excel-Datei extrahieren"/></p> <p>Der Knoten ist mit der Operation <strong>Extract from XLSX</strong> konfiguriert, und das <strong>Input Binary Field</strong> ist auf <code class="language-plaintext highlighter-rouge">data</code> gesetzt, was dem Feldnamen entspricht, den wir im <a href="#datei-von-disk-lesen">vorherigen Knoten</a> angegeben haben. Dieser Schritt ist wesentlich, da er die rohen Binärdateidaten in strukturierte JSON-Objekte umwandelt, die die Rechnungsinformationen aus jeder Zeile enthalten. Diese strukturierten Datenelemente können nun einzeln verarbeitet werden, um Rechnungen zu generieren.</p> <h2 id="elemente-durchlaufen">Elemente Durchlaufen</h2> <p>Da wir nun die strukturierten Datenelemente aus der Excel-Datei haben, müssen wir jedes einzeln verarbeiten, um eine separate Rechnung zu generieren. Der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/" target="_blank" rel="nofollow noopener">Loop Over Items</a>-Knoten ermöglicht dies, indem er die Elemente in Batches durchläuft. Für diesen Workflow verwenden wir eine Batch-Größe von eins, was bedeutet, dass jede Rechnung generiert und gespeichert wird, bevor zur nächsten übergegangen wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/loop-over-items.png" alt="Elemente mit einer Batch-Größe von 1 durchlaufen"/></p> <p>Dieser Batch-Ansatz ist besonders nützlich für die Dokumentgenerierung, da er sicherstellt, dass jede Rechnung vollständig verarbeitet wird, bevor die nächste beginnt. Er hilft auch bei der Verwaltung von Systemressourcen bei größeren Datensätzen. Die Schleife läuft weiter, bis alle Elemente verarbeitet wurden, wobei der Workflow dieselbe Abfolge von Knoten für jeden Rechnungsdatensatz ausführt.</p> <h2 id="dokument-generieren">Dokument Generieren</h2> <p>Der <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/">Generate Document</a>-Knoten nimmt die Daten aus jeder Zeile und führt sie mit der Vorlage zusammen, um eine PDF-Rechnung zu erstellen. Um diesen Knoten zu verwenden, müssen Sie den <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/">DocuGenerate-Knoten</a> in Ihrer n8n-Instanz installieren.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/generate-document-v2.png" alt="Das Rechnungsdokument generieren"/></p> <p>Die Knotenkonfiguration erfordert mehrere Parameter:</p> <ul> <li><strong>Template Name or ID</strong> ist auf <code class="language-plaintext highlighter-rouge">Repair Invoice</code> gesetzt, was der Vorlage entspricht, die wir <a href="#vorlage-einrichten">zuvor hochgeladen</a> haben.</li> <li><strong>Name</strong> verwendet einen Ausdruck <code class="language-plaintext highlighter-rouge">Invoice no {{ $json['Invoice No'] }}</code>, um jedes Dokument dynamisch basierend auf der Rechnungsnummer aus den Daten zu benennen.</li> <li><strong>Format</strong> ist auf <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code> gesetzt, um PDF-Dokumente zu generieren.</li> <li><strong>Data</strong> ist mit <code class="language-plaintext highlighter-rouge">{{ $json }}</code> konfiguriert, was das gesamte aktuelle Datenelement an die Dokumentgenerierungs-API übergibt. Das bedeutet, dass alle Felder aus der Excel-Zeile für Zusammenführungs-Tags in der Vorlage verfügbar sind.</li> </ul> <p>Die API verarbeitet diese Anfrage und gibt eine Antwort zurück, die ein <code class="language-plaintext highlighter-rouge">document_uri</code>-Feld enthält, das auf das generierte Dokument verweist.</p> <h2 id="datei-von-url-herunterladen">Datei von URL Herunterladen</h2> <p>Nachdem DocuGenerate die Rechnung erstellt hat, ruft <strong>Get File from URL</strong> den generierten integrierten <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/" target="_blank" rel="nofollow noopener">HTTP Request</a>-Knoten verwendet, um die generierte PDF von der im vorherigen Schritt bereitgestellten URL abzurufen.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/get-file-from-url.png" alt="Die Datei von der URL abrufen"/></p> <p>Der <strong>URL</strong>-Parameter ist auf <code class="language-plaintext highlighter-rouge">{{ $json.document_uri }}</code> gesetzt, das auf die Dokument-URL verweist, die vom <a href="#dokument-generieren">Generate Document</a>-Knoten zurückgegeben wurde. Im Optionsbereich ist das <strong>Response Format</strong> als <code class="language-plaintext highlighter-rouge">File</code> konfiguriert, um sicherzustellen, dass die Daten als Binärinhalt und nicht als Text behandelt werden. Die Option <strong>Put Output in Field</strong> ist auf <code class="language-plaintext highlighter-rouge">data</code> gesetzt und speichert den PDF-Inhalt in einem Feld, auf das der nächste Knoten zugreifen kann.</p> <p>Für dieses Beispiel hat das generierte Dokument den Dateinamen <code class="language-plaintext highlighter-rouge">Invoice no 58-223-0655.pdf</code>, der dynamisch basierend auf der Rechnungsnummer in der ersten Zeile unserer Beispieldaten erstellt wurde. Jede nachfolgende Rechnung erhält ihren eigenen eindeutigen Dateinamen nach demselben Muster.</p> <h2 id="rechnung-speichern">Rechnung Speichern</h2> <p>Der letzte Schritt im Workflow speichert die generierte Rechnungs-PDF in einem bestimmten Ordner auf Ihrem lokalen Rechner. Der <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.readwritefile/#write-file-to-disk" target="_blank" rel="nofollow noopener">Write File to Disk</a>-Knoten übernimmt diesen Vorgang und speichert jede fertige Rechnung dort, wo Sie leicht darauf zugreifen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/write-file-to-disk.png" alt="Die Datei auf die Festplatte schreiben"/></p> <p>Der Parameter <strong>File Path and Name</strong> ist mit <code class="language-plaintext highlighter-rouge">/Users/docugenerate/n8n/Invoices/{{ $data.filename }}</code> konfiguriert, was einen Basispfad mit dem dynamischen Dateinamen aus dem generierten Dokument kombiniert. Das <strong>Input Binary Field</strong> ist auf <code class="language-plaintext highlighter-rouge">data</code> gesetzt, das den PDF-Inhalt enthält, der im <a href="#datei-von-url-herunterladen">vorherigen Schritt</a> abgerufen wurde.</p> <p>Diese Konfiguration speichert alle Rechnungen im selben Ordner, aber Sie können dies weiter anpassen. Beispielsweise könnten Sie Rechnungen nach Datum organisieren oder nach Kundenname gruppieren. Die Flexibilität von n8n-Ausdrücken ermöglicht es Ihnen, jede Ordnerstruktur zu erstellen, die Ihren Geschäftsanforderungen entspricht. Beachten Sie, dass dieser Knoten für die Arbeit mit Dateien auf demselben Computer ausgelegt ist, auf dem n8n läuft.</p> <h2 id="workflow-ausfuehren">Workflow Ausführen</h2> <p>Mit allen konfigurierten Knoten ist der Workflow bereit, Rechnungen automatisch zu verarbeiten. Zum Testen fügen Sie einfach die <strong>Repair Invoice.xlsx</strong>-Datei in den <code class="language-plaintext highlighter-rouge">Data</code>-Ordner ein, den der Trigger überwacht. Der Workflow erkennt die neue Datei sofort und beginnt mit der Verarbeitung.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/execute-workflow-v2.gif" alt="Workflow-Ausführung"/></p> <p>Die obige Animation zeigt den <a href="#elemente-durchlaufen">Loop Over Items</a>-Abschnitt in Aktion, der alle zehn Datenelemente aus der Excel-Datei durchläuft. Für jedes Element generiert der Workflow eine Rechnung mithilfe der Vorlage und der Daten, lädt die PDF herunter und speichert sie im Zielordner. Sie können den Fortschritt in Echtzeit über die visuelle Oberfläche von n8n verfolgen, die exzellente Sichtbarkeit in jeden Schritt des Prozesses bietet.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/invoices-folder.png" alt="Generierte Rechnungen im Ausgabeordner"/></p> <p>Sobald der Workflow abgeschlossen ist, wurden alle zehn Rechnungen generiert und im <code class="language-plaintext highlighter-rouge">Invoices</code>-Ordner gespeichert. Dieser automatisierte Ansatz eliminiert die Notwendigkeit manueller Dokumenterstellung, spart erheblich Zeit und reduziert das Fehlerpotenzial, das bei manueller Dateneingabe auftreten kann.</p> <h2 id="fazit">Fazit</h2> <p>Der Aufbau lokaler Automatisierungs-Workflows mit n8n und DocuGenerate bietet eine leistungsstarke Lösung für Unternehmen, die Dokumente effizient verarbeiten und dabei die vollständige Kontrolle über ihre Daten behalten müssen. Der von uns erstellte Workflow demonstriert, wie einfach es ist, Ordner zu überwachen, Dateien zu validieren, Daten zu extrahieren und professionelle Dokumente zu generieren, ohne auf Cloud-Dienste oder komplexe Integrationen angewiesen zu sein.</p> <p>Dieser Ansatz ist besonders wertvoll in Szenarien, in denen Datenschutz an erster Stelle steht, die Internetverbindung begrenzt ist oder Sie einfach Ihre Dokumentenverarbeitungspipeline lokal halten möchten. Die Flexibilität von n8n ermöglicht es Ihnen, diesen Workflow auf zahlreiche Weisen zu erweitern. Sie könnten E-Mail-Benachrichtigungen hinzufügen, wenn Rechnungen generiert werden, Sicherungskopien erstellen oder mit Ihren bestehenden Geschäftssystemen integrieren.</p> <p>Der von uns erstellte Workflow verarbeitet Reparaturrechnungen, aber dasselbe Muster kann auf jeden von DocuGenerate unterstützten Dokumenttyp angewendet werden. Ob Sie Verträge, Briefe, Zertifikate oder Berichte generieren müssen – der Kern-Workflow bleibt derselbe. Sie müssen lediglich die Vorlage anpassen und sicherstellen, dass Ihre Excel-Daten mit den Zusammenführungs-Tags in Ihrer gewählten Vorlage übereinstimmen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/n8n-workflow.json" target="_blank">n8n-Workflow-JSON-Datei</a>, die Sie in Ihre n8n-Instanz importieren können.</li> <li>Die <a href="https://www.docugenerate.com/assets/templates/invoices/repair/Repair Invoice.zip">Repair Invoice</a>-Vorlage aus der Vorlagenbibliothek von DocuGenerate.</li> <li>Die offizielle <a href="https://docs.n8n.io/" target="_blank" rel="nofollow noopener">n8n-Dokumentation</a>.</li> <li>Der vollständige DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-n8n-automatisieren/">Integrationsleitfaden</a> für n8n.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Invoices"/> <category term="n8n"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie mit n8n und DocuGenerate einen automatisierten Rechnungsgenerierungs-Workflow erstellen, der einen Ordner auf Excel-Dateien überwacht, die Daten extrahiert und professionelle PDF-Rechnungen generiert. Ideal für lokale Verarbeitung ohne Abhängigkeit von mehreren Cloud-Lösungen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/cover-image-v2.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/cover-image-v2.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Vorlagen von Google Docs mit Apps Script zu DocuGenerate Synchronisieren</title> <link href="https://www.docugenerate.com/de/blog/vorlagen-von-google-docs-mit-apps-script-zu-docugenerate-synchronisieren/" rel="alternate" type="text/html" title="Vorlagen von Google Docs mit Apps Script zu DocuGenerate Synchronisieren"/> <published>2025-09-25T00:00:00+00:00</published> <updated>2025-09-25T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/vorlagen-von-google-docs-mit-apps-script-zu-docugenerate-synchronisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/vorlagen-von-google-docs-mit-apps-script-zu-docugenerate-synchronisieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Obwohl DocuGenerate primär mit Word-Dokumenten arbeitet, bevorzugen viele Teams das Erstellen und Bearbeiten ihrer Vorlagen in Google Docs aufgrund der überlegenen Kollaborationsfunktionen, der Echtzeit-Bearbeitungs- möglichkeiten und der intuitiven Benutzeroberfläche. Die Verwendung von Google-Docs-Vorlagen in DocuGenerate erfordert jedoch traditionell einen manuellen Prozess: Das Google-Dokument als Word-Datei herunterladen und anschließend in DocuGenerate hochladen. Dieser Ansatz funktioniert zwar, erzeugt jedoch Reibung im Workflow und macht die Vorlagenpflege umständlich, besonders wenn sich Vorlagen häufig ändern.</p> <p>Was wäre, wenn Sie diesen manuellen Schritt vollständig eliminieren könnten? Was wäre, wenn Ihre Google Docs automatisch mit DocuGenerate synchronisiert werden könnten, neue Vorlagen erstellen, wenn Dokumente hinzugefügt werden, und bestehende aktualisieren, wenn Änderungen vorgenommen werden? Diese Automatisierung würde Ihrem Team ermöglichen, weiterhin in Google Docs zu arbeiten, während Ihre DocuGenerate-Vorlagen ohne manuelle Eingriffe auf dem neuesten Stand bleiben.</p> <p>In diesem umfassenden Tutorial bauen wir eine vollständige Synchronisierungslösung mit <a href="https://developers.google.com/apps-script" target="_blank" rel="nofollow noopener">Google Apps Script</a>, die einen bestimmten Google-Drive-Ordner überwacht und alle Änderungen automatisch mit Ihrem DocuGenerate-Konto synchronisiert. Das System verarbeitet sowohl die initiale Vorlagenerstellung als auch laufende Updates und ist damit ideal für Teams, die ihren Google-Docs-Workflow beibehalten und gleichzeitig die leistungsstarken Dokumentgenerierungsfähigkeiten von DocuGenerate nutzen möchten.</p> <h2 id="wie-die-synchronisierung-funktioniert">Wie das Synchronisierungssystem Funktioniert</h2> <p>Unser Synchronisierungsskript überwacht einen bestimmten Google-Drive-Ordner auf Änderungen und verarbeitet automatisch alle geänderten Dokumente, sodass Ihre DocuGenerate-Vorlagen immer die neueste Version Ihrer Google Docs widerspiegeln. Der Synchronisierungs-Workflow folgt dieser logischen Abfolge:</p> <ul> <li> <p><strong>Dokumenterkennung</strong>: Das <a href="#aenderungserkennung">System durchsucht</a> Ihren bestimmten Google-Drive-Ordner nach Google Docs und identifiziert sowohl neue Dokumente, die noch nicht synchronisiert wurden, als auch vorhandene Dokumente, die kürzlich geändert wurden.</p> </li> <li> <p><strong>Vorlagen-Zuordnung</strong>: Für jedes Dokument prüft das Skript, ob es bereits einer DocuGenerate-Vorlage entspricht, indem es die benutzerdefinierten Eigenschaften des Dokuments untersucht. Diese Eigenschaften fungieren als Brücke zwischen den beiden Systemen und speichern die <a href="#dokument-synchronisierung">DocuGenerate-Vorlagen-ID</a> direkt in den Metadaten des Google-Dokuments.</p> </li> <li> <p><strong>Formatkonvertierung</strong>: Wenn ein Dokument synchronisiert werden muss, <a href="#dokumente-konvertieren">konvertiert</a> das Skript es vom Google-Docs-Format ins Microsoft-Word-Format (<code class="language-plaintext highlighter-rouge">.docx</code>), dem Format, das DocuGenerate für die Vorlagenverarbeitung erwartet.</p> </li> <li> <p><strong>API-Kommunikation</strong>: Je nachdem, ob das Dokument neu oder vorhanden ist, <a href="#vorlagen-erstellen">erstellt</a> die Automatisierung entweder eine neue Vorlage in DocuGenerate oder <a href="#vorlagen-aktualisieren">aktualisiert eine vorhandene</a> über die DocuGenerate-API.</p> </li> <li> <p><strong>Metadatenspeicherung</strong>: Nach erfolgreicher Synchronisierung speichert das Skript die DocuGenerate-Vorlagen-ID in den benutzerdefinierten Eigenschaften des Google-Dokuments und stellt sicher, dass zukünftige Updates die richtige Vorlage ändern, anstatt Duplikate zu erstellen.</p> </li> </ul> <p>Dieses Design stellt sicher, dass Ihr Team weiterhin natürlich in Google Docs arbeiten kann, während die automatisierte Synchronisierung alle technischen Details der Aktualisierung von DocuGenerate-Vorlagen übernimmt. Sie können sich das <a href="https://www.docugenerate.com/assets/posts/025-sync-google-docs/apps-script.txt" target="_blank">vollständige Skript</a> ansehen, das wir in diesem Tutorial erstellen werden, um eine Vorstellung davon zu bekommen, wie alles funktioniert.</p> <h2 id="apps-script-projekt-einrichten">Das Apps-Script-Projekt Einrichten</h2> <p>Google Apps Script bietet eine leistungsstarke Plattform zur Automatisierung von Workflows zwischen Google-Workspace-Anwendungen und externen APIs. Für unsere Synchronisierungslösung erstellen wir ein neues Apps-Script-Projekt, das alle Funktionen enthält, die zum Überwachen von Google Docs und zur Kommunikation mit DocuGenerate benötigt werden.</p> <p>Navigieren Sie zunächst zu <a href="https://script.google.com/" target="_blank" rel="nofollow noopener">Apps Script</a> und erstellen Sie ein neues Projekt. Sie beginnen mit einem leeren Canvas, auf dem wir unsere vollständige Synchronisierungslösung aufbauen können. Unser Projekt für dieses Tutorial heißt <strong>Templates Sync DocuGenerate</strong>, wie Sie im Bild unten sehen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/new-apps-script-project.png" alt="Neues Apps-Script-Projekt erstellen"/></p> <h3 id="google-drive-api-aktivieren">Die Google-Drive-API Aktivieren</h3> <p>Unser Synchronisierungsskript benötigt Zugriff auf erweiterte Google-Drive-Funktionalitäten, die über den Standard-DriveApp-Dienst hinausgehen. Konkret benötigen wir die <a href="https://developers.google.com/workspace/drive/api/guides/about-sdk" target="_blank" rel="nofollow noopener">Google Drive API</a> v3, um mit benutzerdefinierten Dateieigenschaften zu arbeiten, mit denen wir die Beziehung zwischen Google Docs und DocuGenerate-Vorlagen verfolgen.</p> <p>Um die Google Drive API in Ihrem neu erstellten Apps-Script-Projekt zu aktivieren, klicken Sie in der linken Seitenleiste des Apps-Script-Editors auf <strong>Add a service</strong>.<br/> <img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/add-a-service.png" alt="Dienst zum Apps-Script-Projekt hinzufügen" class="desktop-width-75"/></p> <p>Suchen Sie dann nach <strong>Drive API</strong>, setzen Sie den Bezeichner auf <code class="language-plaintext highlighter-rouge">Drive</code> und klicken Sie auf die <strong>Add</strong>-Schaltfläche, um die Einrichtung abzuschließen.<br/> <img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/add-drive-service.png" alt="Google-Drive-API-Dienst hinzufügen" class="desktop-width-50"/></p> <p>Dieser Schritt ist entscheidend, da der Standard-DriveApp-Dienst keinen Zugriff auf benutzerdefinierte Dateieigenschaften bietet, die wir verwenden, um die DocuGenerate-Vorlagen-ID in den Metadaten jedes Google-Dokuments zu speichern. Ohne diesen API-Zugriff könnte unser Skript nicht verfolgen, welche Dokumente bereits synchronisiert wurden oder ob neue Vorlagen erstellt oder vorhandene aktualisiert werden sollen.</p> <h3 id="zugangsdaten-konfigurieren">Zugangsdaten Konfigurieren</h3> <p>Bevor wir die Synchronisierungsfunktionen implementieren, müssen Sie das System mit Ihren spezifischen Zugangsdaten und Einstellungen konfigurieren. Unser Skript verwendet ein Konfigurationsobjekt, das alle Einstellungen zentralisiert, die Sie anpassen müssen:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">CONFIG</span> <span class="o">=</span> <span class="p">{</span>
  <span class="na">DOCUGENERATE_API_KEY</span><span class="p">:</span> <span class="dl">'</span><span class="s1">YOUR_API_KEY_HERE</span><span class="dl">'</span><span class="p">,</span> <span class="c1">// Get from DocuGenerate settings</span>
  <span class="na">DOCUGENERATE_BASE_URL</span><span class="p">:</span> <span class="dl">'</span><span class="s1">https://api.docugenerate.com/v1</span><span class="dl">'</span><span class="p">,</span> <span class="c1">// Change region if needed</span>
  <span class="na">MONITORED_FOLDER_ID</span><span class="p">:</span> <span class="dl">'</span><span class="s1">YOUR_FOLDER_ID_HERE</span><span class="dl">'</span> <span class="c1">// Google Drive folder ID to monitor</span>
<span class="p">};</span>
</code></pre></div></div> <ul> <li> <p><strong>DOCUGENERATE_API_KEY</strong>: Ihren API-Schlüssel finden Sie auf der Seite <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">Entwicklereinstellungen</a>. Dieser Schlüssel authentifiziert alle Anfragen an die DocuGenerate-API und stellt sicher, dass generierte Vorlagen ordnungsgemäß Ihrem Konto zugeordnet werden.</p> </li> <li> <p><strong>DOCUGENERATE_BASE_URL</strong>: Die Standard-URL verweist auf die primäre Verarbeitungsregion von DocuGenerate. Wenn Sie einen <a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-regionale-api-endpunkte-verwenden/">regionalen Endpunkt</a> für schnellere Verarbeitung in Ihrer geografischen Region verwenden, aktualisieren Sie diese URL entsprechend.</p> </li> <li> <p><strong>MONITORED_FOLDER_ID</strong>: Dies ist die eindeutige Kennung für den Google-Drive-Ordner, den Sie überwachen möchten. Sie können die Ordner-ID aus jeder Google-Drive-URL extrahieren: <code class="language-plaintext highlighter-rouge">https://drive.google.com/drive/folders/&lt;FOLDER_ID&gt;</code></p> </li> </ul> <h2 id="manuelle-synchronisierungsfunktion">Die Manuelle Synchronisierungsfunktion Erstellen</h2> <p>Die manuelle Synchronisierungsfunktion dient als Grundlage unserer Synchronisierungslösung und bietet den initialen Einrichtungsmechanismus zur Herstellung von Verbindungen zwischen Ihren Google Docs und DocuGenerate-Vorlagen. Diese Funktion verarbeitet alle Dokumente in Ihrem überwachten Ordner, unabhängig davon, wann sie zuletzt geändert wurden, was sie ideal für die Ersteinrichtung oder Massensynchronisierungsvorgänge macht.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Manual sync function - syncs all documents in the monitored folder
 * Useful for initial setup or bulk sync
 */</span>
<span class="kd">function</span> <span class="nf">manualSync</span><span class="p">()</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Starting manual sync of all documents...</span><span class="dl">'</span><span class="p">);</span>

    <span class="kd">const</span> <span class="nx">folder</span> <span class="o">=</span> <span class="nx">DriveApp</span><span class="p">.</span><span class="nf">getFolderById</span><span class="p">(</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">MONITORED_FOLDER_ID</span><span class="p">);</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Processing folder: </span><span class="p">${</span><span class="nx">folder</span><span class="p">.</span><span class="nf">getName</span><span class="p">()}</span><span class="s2">`</span><span class="p">);</span>

    <span class="kd">const</span> <span class="nx">files</span> <span class="o">=</span> <span class="nx">folder</span><span class="p">.</span><span class="nf">getFilesByType</span><span class="p">(</span><span class="nx">MimeType</span><span class="p">.</span><span class="nx">GOOGLE_DOCS</span><span class="p">);</span>

    <span class="k">while </span><span class="p">(</span><span class="nx">files</span><span class="p">.</span><span class="nf">hasNext</span><span class="p">())</span> <span class="p">{</span>
      <span class="kd">const</span> <span class="nx">file</span> <span class="o">=</span> <span class="nx">files</span><span class="p">.</span><span class="nf">next</span><span class="p">();</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Processing: </span><span class="p">${</span><span class="nx">file</span><span class="p">.</span><span class="nf">getName</span><span class="p">()}</span><span class="s2">`</span><span class="p">);</span>
      <span class="nf">syncDocument</span><span class="p">(</span><span class="nx">file</span><span class="p">);</span>
    <span class="p">}</span>

    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Manual sync completed!</span><span class="dl">'</span><span class="p">);</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error in manual sync:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Funktion demonstriert mehrere Schlüsselkonzepte, die im gesamten Synchronisierungsskript verwendet werden:</p> <p><strong>Ordnerzugriff</strong>: Die Funktion verwendet <code class="language-plaintext highlighter-rouge">DriveApp.getFolderById()</code>, um auf den bestimmten Ordner zuzugreifen, den wir überwachen möchten. Dieser Ansatz stellt sicher, dass nur Dokumente im designierten Ordner verarbeitet werden und verhindert die versehentliche Synchronisierung nicht zusammenhängender Dokumente.</p> <p><strong>Dateitypfilterung</strong>: Durch die Verwendung von <code class="language-plaintext highlighter-rouge">getFilesByType(MimeType.GOOGLE_DOCS)</code> filtert die Funktion automatisch alle Nicht-Google-Docs-Dateien im Ordner heraus. Dadurch wird sichergestellt, dass nur Dokumente verarbeitet werden, die in das Word-Format konvertiert werden können.</p> <p><strong>Iterator-Muster</strong>: Google Apps Script verwendet Iteratoren für Dateisammlungen, um potenziell große Dateimengen effizient zu verarbeiten. Die <code class="language-plaintext highlighter-rouge">while (files.hasNext())</code>-Schleife verarbeitet jede Datei einzeln und ermöglicht detaillierte Protokollierung und Fehlerbehandlung auf Dokumentebene.</p> <p><strong>Delegation der Kernlogik</strong>: Die eigentliche Synchronisierungsarbeit wird von der <code class="language-plaintext highlighter-rouge">syncDocument()</code>-Funktion übernommen, die wir als nächstes untersuchen. Diese Trennung der Zuständigkeiten macht den Code besser wartbar und ermöglicht es, dieselbe Kernlogik sowohl für manuelle als auch für automatische Synchronisierungsvorgänge zu verwenden.</p> <p><strong>Fehlerbehandlung</strong>: Der gesamte Vorgang ist in einen try-catch-Block eingeschlossen, um sicherzustellen, dass alle Fehler während der Verarbeitung ordnungsgemäß protokolliert werden und die gesamte Synchronisierungsoperation nicht zum Absturz bringen. Dies ist besonders wichtig für automatisierte Skripte, die über die Zeit zuverlässig laufen müssen.</p> <p>Sie sollten diese Funktion zuerst ausführen, wenn Sie Ihre Synchronisierungsautomatisierung einrichten, da sie die initialen Zuordnungen zwischen Ihren vorhandenen Google Docs und den entsprechenden DocuGenerate-Vorlagen herstellt.</p> <h2 id="dokument-synchronisierung">Dokument-Synchronisierung Verstehen</h2> <p>Die <code class="language-plaintext highlighter-rouge">syncDocument()</code>-Funktion enthält die Kernlogik, die den Synchronisierungsprozess für einzelne Dokumente übernimmt. Diese Funktion ist verantwortlich dafür, zu bestimmen, ob ein Dokument eine neue Vorlage erstellen oder eine vorhandene aktualisieren muss, den Konvertierungsprozess zu verwalten und die Metadaten zu pflegen, die die Beziehung zwischen Google Docs und DocuGenerate-Vorlagen verfolgen.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Syncs a Google Doc to DocuGenerate
 */</span>
<span class="kd">function</span> <span class="nf">syncDocument</span><span class="p">(</span><span class="nx">doc</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="kd">const</span> <span class="nx">docId</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nf">getId</span><span class="p">();</span>
    <span class="kd">const</span> <span class="nx">docName</span> <span class="o">=</span> <span class="nx">doc</span><span class="p">.</span><span class="nf">getName</span><span class="p">();</span>

    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Syncing document: </span><span class="p">${</span><span class="nx">docName</span><span class="p">}</span><span class="s2"> (</span><span class="p">${</span><span class="nx">docId</span><span class="p">}</span><span class="s2">)`</span><span class="p">);</span>

    <span class="c1">// Check if document already has a template ID</span>
    <span class="kd">const</span> <span class="nx">docMetadata</span> <span class="o">=</span> <span class="nx">Drive</span><span class="p">.</span><span class="nx">Files</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="nx">docId</span><span class="p">,</span> <span class="p">{</span>
      <span class="na">fields</span><span class="p">:</span> <span class="dl">'</span><span class="s1">properties</span><span class="dl">'</span>
    <span class="p">});</span>
    <span class="kd">const</span> <span class="nx">docProperties</span> <span class="o">=</span> <span class="nx">docMetadata</span><span class="p">.</span><span class="nx">properties</span> <span class="o">||</span> <span class="p">{};</span>
    <span class="kd">const</span> <span class="nx">existingTemplateId</span> <span class="o">=</span> <span class="nx">docProperties</span><span class="p">[</span><span class="dl">'</span><span class="s1">docugenerate_template_id</span><span class="dl">'</span><span class="p">];</span>

    <span class="c1">// Convert Google Doc to Word format</span>
    <span class="kd">const</span> <span class="nx">wordBlob</span> <span class="o">=</span> <span class="nf">convertToWordFormat</span><span class="p">(</span><span class="nx">docId</span><span class="p">,</span> <span class="nx">docName</span><span class="p">);</span>

    <span class="k">if </span><span class="p">(</span><span class="nx">existingTemplateId</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Updating existing template: </span><span class="p">${</span><span class="nx">existingTemplateId</span><span class="p">}</span><span class="s2">`</span><span class="p">);</span>
      <span class="nf">updateTemplate</span><span class="p">(</span><span class="nx">existingTemplateId</span><span class="p">,</span> <span class="nx">wordBlob</span><span class="p">,</span> <span class="nx">docName</span><span class="p">);</span>
    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Creating new template</span><span class="dl">'</span><span class="p">);</span>
      <span class="kd">const</span> <span class="nx">templateId</span> <span class="o">=</span> <span class="nf">createTemplate</span><span class="p">(</span><span class="nx">wordBlob</span><span class="p">,</span> <span class="nx">docName</span><span class="p">);</span>

      <span class="k">if </span><span class="p">(</span><span class="nx">templateId</span><span class="p">)</span> <span class="p">{</span>
        <span class="c1">// Store the template ID in document properties</span>
        <span class="nx">Drive</span><span class="p">.</span><span class="nx">Files</span><span class="p">.</span><span class="nf">update</span><span class="p">({</span>
          <span class="na">properties</span><span class="p">:</span> <span class="p">{</span>
            <span class="dl">'</span><span class="s1">docugenerate_template_id</span><span class="dl">'</span><span class="p">:</span> <span class="nx">templateId</span>
          <span class="p">}</span>
        <span class="p">},</span> <span class="nx">docId</span><span class="p">);</span>
      <span class="p">}</span>
    <span class="p">}</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error syncing document:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Funktion veranschaulicht mehrere ausgeklügelte Konzepte, die die Synchronisierungslösung robust und intelligent machen:</p> <p><strong>Metadatenprüfung</strong>: Die Funktion verwendet die Google Drive API v3, um die benutzerdefinierten Eigenschaften des Dokuments zu untersuchen. Diese Eigenschaften sind für Benutzer unsichtbar, bieten aber eine leistungsstarke Möglichkeit, Metadaten zu speichern, die mit dem Dokument erhalten bleiben. Der <code class="language-plaintext highlighter-rouge">Drive.Files.get()</code>-Aufruf fordert speziell nur das Eigenschaftenfeld an, um die API-Nutzung zu minimieren und die Leistung zu verbessern.</p> <p><strong>Entscheidungslogik</strong>: Basierend darauf, ob das Dokument bereits eine <code class="language-plaintext highlighter-rouge">docugenerate_template_id</code>-Eigenschaft hat, entscheidet die Funktion, ob eine neue Vorlage erstellt oder eine vorhandene aktualisiert werden soll. Diese Entscheidungslogik verhindert doppelte Vorlagen und stellt sicher, dass Dokumentänderungen zu Vorlagen-Updates führen, anstatt neue Vorlagen zu erstellen.</p> <p><strong>Formatkonvertierung</strong>: Jeder Synchronisierungsvorgang erfordert die Konvertierung des Google-Dokuments in das Word-Format, was von der <code class="language-plaintext highlighter-rouge">convertToWordFormat()</code>-Funktion übernommen wird. Diese Konvertierung stellt sicher, dass DocuGenerate die Vorlage in einem Format erhält, das es zuverlässig verarbeiten kann.</p> <p><strong>Metadatenbeständigkeit</strong>: Wenn eine neue Vorlage erfolgreich in DocuGenerate erstellt wurde, speichert die Funktion die zurückgegebene Vorlagen-ID in den Eigenschaften des Dokuments mit <code class="language-plaintext highlighter-rouge">Drive.Files.update()</code>. Dies schafft eine permanente Verbindung zwischen dem Google-Dokument und der entsprechenden DocuGenerate-Vorlage.</p> <p><strong>Elegante Fehlerbehandlung</strong>: Einzelne Dokumentfehler stoppen den gesamten Synchronisierungsprozess nicht. Wenn ein Dokument nicht synchronisiert werden kann, wird der Fehler protokolliert, aber das System setzt die Verarbeitung anderer Dokumente fort.</p> <p>Dieser Ansatz stellt sicher, dass das Synchronisierungssystem intelligent agiert und die Datenintegrität auf beiden Plattformen aufrechterhält. Der Metadatenspeichermechanismus ist besonders elegant, da er für Benutzer völlig unsichtbar ist und dem System gleichzeitig die Informationen liefert, die es für intelligente Entscheidungen im Vorlagenmanagement benötigt.</p> <h2 id="dokumente-konvertieren">Dokumente in das Word-Format Konvertieren</h2> <p>Der Dokumentkonvertierungsprozess ist eine kritische Komponente unserer Synchronisierungslösung, da DocuGenerate erwartet, dass Vorlagen im Microsoft-Word-Format (<code class="language-plaintext highlighter-rouge">.docx</code>) vorliegen. Google Apps Script bietet integrierte Funktionen zum Exportieren von Google Docs in verschiedene Formate, und wir nutzen diese Funktionalität, um ordnungsgemäß formatierte Word-Dokumente zu erstellen, die alle Formatierungen, Stile und Zusammenführungs-Tags aus dem originalen Google-Dokument beibehalten.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Converts a Google Doc to Word format (.docx)
 */</span>
<span class="kd">function</span> <span class="nf">convertToWordFormat</span><span class="p">(</span><span class="nx">docId</span><span class="p">,</span> <span class="nx">docName</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="c1">// Export as Word document</span>
    <span class="kd">const</span> <span class="nx">url</span> <span class="o">=</span> <span class="s2">`https://docs.google.com/document/d/</span><span class="p">${</span><span class="nx">docId</span><span class="p">}</span><span class="s2">/export?format=docx`</span><span class="p">;</span>
    <span class="kd">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="nx">UrlFetchApp</span><span class="p">.</span><span class="nf">fetch</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="p">{</span>
      <span class="na">headers</span><span class="p">:</span> <span class="p">{</span>
        <span class="dl">'</span><span class="s1">Authorization</span><span class="dl">'</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Bearer </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">ScriptApp</span><span class="p">.</span><span class="nf">getOAuthToken</span><span class="p">()</span>
      <span class="p">}</span>
    <span class="p">});</span>

    <span class="c1">// Return blob with proper name and content type</span>
    <span class="k">return</span> <span class="nx">response</span><span class="p">.</span><span class="nf">getBlob</span><span class="p">()</span>
      <span class="p">.</span><span class="nf">setName</span><span class="p">(</span><span class="s2">`</span><span class="p">${</span><span class="nx">docName</span><span class="p">}</span><span class="s2">.docx`</span><span class="p">)</span>
      <span class="p">.</span><span class="nf">setContentType</span><span class="p">(</span><span class="nx">MimeType</span><span class="p">.</span><span class="nx">MICROSOFT_WORD</span><span class="p">);</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error converting to Word format:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
    <span class="k">throw</span> <span class="nx">error</span><span class="p">;</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Funktion demonstriert mehrere wichtige technische Konzepte:</p> <p><strong>Googles Export-API</strong>: Google stellt für jedes Dokument eine direkte Export-URL bereit, die das Dokument in verschiedenen Formaten generieren kann. Der Parameter <code class="language-plaintext highlighter-rouge">format=docx</code> fordert speziell das Microsoft-Word-Format an, das die Kompatibilität mit dem Vorlagenverarbeitungssystem von DocuGenerate gewährleistet.</p> <p><strong>OAuth-Authentifizierung</strong>: Der Konvertierungsprozess erfordert eine Authentifizierung, um auf private Google Docs zuzugreifen. Die Methode <code class="language-plaintext highlighter-rouge">ScriptApp.getOAuthToken()</code> stellt das notwendige OAuth-Token bereit, das dem Skript Zugriff auf das Dokument im Namen des Benutzers gewährt, der das Skript autorisiert hat.</p> <p><strong>Blob-Verwaltung</strong>: Google Apps Script repräsentiert Dateien als „Blobs” – binäre große Objekte, die die Dateidaten zusammen mit Metadaten wie Dateiname und Inhaltstyp enthalten. Die Funktion setzt sowohl den Dateinamen (fügt die <code class="language-plaintext highlighter-rouge">.docx</code>-Erweiterung hinzu) als auch den MIME-Typ korrekt, um sicherzustellen, dass die resultierende Datei als ordnungsgemäßes Word-Dokument erkannt wird.</p> <p><strong>Fehlerweiterleitung</strong>: Im Gegensatz zu anderen Funktionen, die Fehler lokal abfangen und protokollieren, leitet diese Funktion Fehler an die aufrufende Funktion weiter. Dieses Design stellt sicher, dass, wenn die Dokumentkonvertierung fehlschlägt, die aufrufende Funktion den Fehler entsprechend behandeln kann (z.B. das Dokument überspringen oder später erneut versuchen).</p> <p><strong>Dateinamenbehandlung</strong>: Die Funktion fügt automatisch die <code class="language-plaintext highlighter-rouge">.docx</code>-Erweiterung an den Dokumentnamen an und stellt sicher, dass die resultierende Datei die richtige Erweiterung hat, unabhängig davon, wie das originale Google-Dokument benannt wurde.</p> <p>Dieser Konvertierungsprozess bewahrt alle wichtigen Aspekte Ihres Google-Dokuments, einschließlich Textformatierung, Tabellen, Bilder und vor allem Zusammenführungs-Tags, die DocuGenerate während der Dokumentgenerierung verwenden wird. Das resultierende Word-Dokument ist funktional identisch mit dem, was Sie erhalten würden, wenn Sie das Google-Dokument manuell über die Google-Docs-Oberfläche exportieren.</p> <h2 id="vorlagen-erstellen">Neue Vorlagen in DocuGenerate Erstellen</h2> <p>Wenn ein Google-Dokument keine zugehörige DocuGenerate-Vorlage hat (angezeigt durch das Fehlen einer <code class="language-plaintext highlighter-rouge">docugenerate_template_id</code>-Eigenschaft), muss das System eine neue Vorlage in DocuGenerate erstellen. Diese Funktion übernimmt die API-Kommunikation, die erforderlich ist, um das konvertierte Word-Dokument hochzuladen und es als neue Vorlage in Ihrem DocuGenerate-Konto einzurichten.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Creates a new template in DocuGenerate
 */</span>
<span class="kd">function</span> <span class="nf">createTemplate</span><span class="p">(</span><span class="nx">wordBlob</span><span class="p">,</span> <span class="nx">templateName</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="kd">const</span> <span class="nx">payload</span> <span class="o">=</span> <span class="p">{</span>
      <span class="dl">'</span><span class="s1">file</span><span class="dl">'</span><span class="p">:</span> <span class="nx">wordBlob</span><span class="p">,</span>
      <span class="dl">'</span><span class="s1">name</span><span class="dl">'</span><span class="p">:</span> <span class="nx">templateName</span>
    <span class="p">};</span>

    <span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
      <span class="na">method</span><span class="p">:</span> <span class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">headers</span><span class="p">:</span> <span class="p">{</span>
        <span class="dl">'</span><span class="s1">Authorization</span><span class="dl">'</span><span class="p">:</span> <span class="nx">CONFIG</span><span class="p">.</span><span class="nx">DOCUGENERATE_API_KEY</span>
        <span class="c1">// Don't set Content-Type - Apps Script will handle it automatically</span>
      <span class="p">},</span>
      <span class="na">payload</span><span class="p">:</span> <span class="nx">payload</span>
    <span class="p">};</span>

    <span class="kd">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="nx">UrlFetchApp</span><span class="p">.</span><span class="nf">fetch</span><span class="p">(</span>
      <span class="s2">`</span><span class="p">${</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">DOCUGENERATE_BASE_URL</span><span class="p">}</span><span class="s2">/template`</span><span class="p">,</span>
      <span class="nx">options</span>
    <span class="p">);</span>

    <span class="k">if </span><span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nf">getResponseCode</span><span class="p">()</span> <span class="o">===</span> <span class="mi">201</span><span class="p">)</span> <span class="p">{</span>
      <span class="kd">const</span> <span class="nx">responseData</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nf">getContentText</span><span class="p">());</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Template created successfully:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">responseData</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>
      <span class="k">return</span> <span class="nx">responseData</span><span class="p">.</span><span class="nx">id</span><span class="p">;</span>
    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error creating template:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">response</span><span class="p">.</span><span class="nf">getContentText</span><span class="p">());</span>
      <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
    <span class="p">}</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error creating template:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
    <span class="k">return</span> <span class="kc">null</span><span class="p">;</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Funktion zeigt mehrere wichtige Aspekte der API-Integration und der Behandlung von Multipart-Formularen:</p> <p><strong>Multipart-Formulardaten</strong>: Das Erstellen einer Vorlage erfordert das Hochladen sowohl einer Datei (des Word-Dokuments) als auch von Metadaten (dem Vorlagennamen). Diese Funktion konstruiert ein Multipart-Formular-Payload, das beide Informationen in dem von der DocuGenerate-API erwarteten Format enthält.</p> <p><strong>Automatische Content-Type-Behandlung</strong>: Ein entscheidendes Detail ist, dass wir den <code class="language-plaintext highlighter-rouge">Content-Type</code>-Header bewusst nicht manuell setzen. Wenn Sie Dateien in die Nutzdaten einschließen, muss Google Apps Script Boundary-Parameter zum <code class="language-plaintext highlighter-rouge">multipart/form-data</code>-Content-Type hinzufügen. Durch das Weglassen des Content-Type-Headers lassen wir Apps Script dies automatisch verwalten und verhindern Boundary-bezogene Fehler.</p> <p><strong>HTTP-Statuscode-Überprüfung</strong>: Die DocuGenerate-API gibt bei erfolgreich erstellter Vorlage einen <code class="language-plaintext highlighter-rouge">201 Created</code>-Statuscode zurück. Die Funktion prüft speziell auf diesen Statuscode, um zwischen erfolgreichen Operationen und Fehlern zu unterscheiden und eine robuste Fehlerbehandlung zu gewährleisten.</p> <p><strong>Antwortverarbeitung</strong>: Wenn die Vorlagenerstellung erfolgreich ist, gibt die API eine JSON-Antwort zurück, die die ID der neuen Vorlage enthält. Diese ID ist entscheidend, da sie das ist, was wir in den Eigenschaften des Google-Dokuments speichern, um das Dokument mit der entsprechenden Vorlage zu verknüpfen.</p> <p><strong>Elegante Fehlerrückgaben</strong>: Anstatt Ausnahmen zu werfen, gibt diese Funktion <code class="language-plaintext highlighter-rouge">null</code> zurück, wenn Fehler auftreten. Dieser Ansatz ermöglicht es der aufrufenden Funktion, andere Dokumente weiter zu verarbeiten, auch wenn eine Vorlagenerstellung fehlschlägt.</p> <p><strong>Umfassende Protokollierung</strong>: Die Funktion bietet detaillierte Protokollierung für sowohl erfolgreiche Operationen als auch Fehler, was die Diagnose von Problemen während der Entwicklung und die Überwachung der Systemleistung in der Produktion erleichtert.</p> <p>Der Vorlagenerstellungsprozess stellt die grundlegende Verbindung zwischen Ihrem Google-Dokument und DocuGenerate her. Sobald diese Verbindung durch den Metadatenspeichermechanismus hergestellt ist, führen alle zukünftigen Änderungen am Google-Dokument zu Vorlagen-Updates, anstatt zusätzliche Vorlagen zu erstellen.</p> <h2 id="vorlagen-aktualisieren">Vorhandene Vorlagen Aktualisieren</h2> <p>Wenn ein Google-Dokument bereits eine zugehörige DocuGenerate-Vorlage hat (angezeigt durch das Vorhandensein einer <code class="language-plaintext highlighter-rouge">docugenerate_template_id</code>-Eigenschaft), aktualisiert das System die vorhandene Vorlage, anstatt eine neue zu erstellen. Diese Funktion übernimmt die API-Kommunikation, die erforderlich ist, um den Vorlageninhalt zu ersetzen und dabei die Vorlagen-ID und alle zugehörigen Einstellungen in DocuGenerate beizubehalten.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Updates an existing template in DocuGenerate
 */</span>
<span class="kd">function</span> <span class="nf">updateTemplate</span><span class="p">(</span><span class="nx">templateId</span><span class="p">,</span> <span class="nx">wordBlob</span><span class="p">,</span> <span class="nx">templateName</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="kd">const</span> <span class="nx">payload</span> <span class="o">=</span> <span class="p">{</span>
      <span class="dl">'</span><span class="s1">file</span><span class="dl">'</span><span class="p">:</span> <span class="nx">wordBlob</span><span class="p">,</span>
      <span class="dl">'</span><span class="s1">name</span><span class="dl">'</span><span class="p">:</span> <span class="nx">templateName</span>
    <span class="p">};</span>

    <span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
      <span class="na">method</span><span class="p">:</span> <span class="dl">'</span><span class="s1">PUT</span><span class="dl">'</span><span class="p">,</span>
      <span class="na">headers</span><span class="p">:</span> <span class="p">{</span>
        <span class="dl">'</span><span class="s1">Authorization</span><span class="dl">'</span><span class="p">:</span> <span class="nx">CONFIG</span><span class="p">.</span><span class="nx">DOCUGENERATE_API_KEY</span>
        <span class="c1">// Don't set Content-Type - Apps Script will handle it automatically</span>
      <span class="p">},</span>
      <span class="na">payload</span><span class="p">:</span> <span class="nx">payload</span>
    <span class="p">};</span>

    <span class="kd">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="nx">UrlFetchApp</span><span class="p">.</span><span class="nf">fetch</span><span class="p">(</span>
      <span class="s2">`</span><span class="p">${</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">DOCUGENERATE_BASE_URL</span><span class="p">}</span><span class="s2">/template/</span><span class="p">${</span><span class="nx">templateId</span><span class="p">}</span><span class="s2">`</span><span class="p">,</span>
      <span class="nx">options</span>
    <span class="p">);</span>

    <span class="k">if </span><span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nf">getResponseCode</span><span class="p">()</span> <span class="o">===</span> <span class="mi">200</span><span class="p">)</span> <span class="p">{</span>
      <span class="kd">const</span> <span class="nx">responseData</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nf">getContentText</span><span class="p">());</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Template updated successfully:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">templateId</span><span class="p">);</span>
      <span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error updating template:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">response</span><span class="p">.</span><span class="nf">getContentText</span><span class="p">());</span>
      <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
    <span class="p">}</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error updating template:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
    <span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Funktion weist viele Ähnlichkeiten mit der Vorlagenerstellungsfunktion auf, enthält aber einige wichtige Unterschiede:</p> <p><strong>HTTP-Methode</strong>: Vorlagen-Updates verwenden die <code class="language-plaintext highlighter-rouge">PUT</code>-Methode anstelle von <code class="language-plaintext highlighter-rouge">POST</code> und folgen dabei RESTful-API-Konventionen. Die <code class="language-plaintext highlighter-rouge">PUT</code>-Methode zeigt an, dass wir die vorhandene Ressource vollständig durch neuen Inhalt ersetzen.</p> <p><strong>URL-Struktur</strong>: Die URL enthält die spezifische Vorlagen-ID, die wir aktualisieren (<code class="language-plaintext highlighter-rouge">/template/${templateId}</code>), und stellt sicher, dass die Aktualisierungsoperation die richtige Vorlage in Ihrem DocuGenerate-Konto anspricht.</p> <p><strong>Statuscode-Erwartungen</strong>: Erfolgreiche Aktualisierungen geben einen <code class="language-plaintext highlighter-rouge">200 OK</code>-Statuscode zurück anstatt <code class="language-plaintext highlighter-rouge">201 Created</code>, was den Unterschied zwischen dem Erstellen neuer Ressourcen und dem Aktualisieren vorhandener widerspiegelt.</p> <p><strong>Rückgabewert-Semantik</strong>: Die Funktion gibt einen Boolean zurück, der Erfolg oder Misserfolg anzeigt, anstatt eine Ressourcen-ID zurückzugeben wie die Erstellungsfunktion. Da sich die Vorlagen-ID während Updates nicht ändert, ist es nicht nötig, sie zurückzugeben.</p> <p><strong>Inhaltsersetzung</strong>: Die Aktualisierungsoperation ersetzt den Vorlageninhalt vollständig durch die neue Version aus dem Google-Dokument. Dies stellt sicher, dass alle Änderungen, einschließlich Textmodifikationen, Formatierungsupdates und Zusammenführungs-Tag-Anpassungen, in der DocuGenerate-Vorlage widergespiegelt werden.</p> <p><strong>Beibehaltung von Einstellungen</strong>: Während der Vorlageninhalt ersetzt wird, bleiben andere mit der Vorlage verknüpfte DocuGenerate-Einstellungen unverändert. Dies bietet das Beste aus beiden Welten: aktueller Inhalt mit beibehaltener Konfiguration.</p> <p>Der Aktualisierungsmechanismus ist entscheidend für die Aufrechterhaltung der Synchronisierung im Laufe der Zeit. Während Ihr Team in Google Docs zusammenarbeitet und Änderungen an Vorlagen vornimmt, stellt diese Funktion sicher, dass Ihre DocuGenerate-Vorlagen automatisch auf dem neuesten Stand bleiben, ohne manuelle Eingriffe.</p> <h2 id="automatische-synchronisierung">Automatische Synchronisierung Implementieren</h2> <p>Während die manuelle Synchronisierung für die Ersteinrichtung und Massenvorgänge nützlich ist, kommt die eigentliche Stärke unserer Lösung durch die automatische Synchronisierung, die kontinuierlich im Hintergrund läuft. Diese Automatisierung stellt sicher, dass Ihre DocuGenerate-Vorlagen aktuell bleiben, wenn Ihr Team Änderungen an Google Docs vornimmt, ohne manuelle Eingriffe zu erfordern.</p> <h3 id="zeitbasierte-trigger">Zeitbasierte Trigger Einrichten</h3> <p>Google Apps Script bietet einen leistungsstarken Trigger-Mechanismus, der Funktionen nach einem Zeitplan ausführen kann. Unsere automatische Synchronisierungslösung verwendet zeitbasierte Trigger, um periodisch nach Dokumentänderungen zu suchen und diese automatisch zu verarbeiten.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Sets up automatic sync with time-based triggers
 * Run this function once to initialize the sync
 */</span>
<span class="kd">function</span> <span class="nf">setupAutoSync</span><span class="p">()</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="c1">// Delete existing triggers to avoid duplicates</span>
    <span class="kd">const</span> <span class="nx">triggers</span> <span class="o">=</span> <span class="nx">ScriptApp</span><span class="p">.</span><span class="nf">getProjectTriggers</span><span class="p">();</span>
    <span class="nx">triggers</span><span class="p">.</span><span class="nf">forEach</span><span class="p">(</span><span class="nx">trigger</span> <span class="o">=&gt;</span> <span class="p">{</span>
      <span class="k">if </span><span class="p">(</span><span class="nx">trigger</span><span class="p">.</span><span class="nf">getHandlerFunction</span><span class="p">()</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">autoSync</span><span class="dl">'</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">ScriptApp</span><span class="p">.</span><span class="nf">deleteTrigger</span><span class="p">(</span><span class="nx">trigger</span><span class="p">);</span>
      <span class="p">}</span>
    <span class="p">});</span>

    <span class="c1">// Create time-based trigger that runs every 5 minutes</span>
    <span class="nx">ScriptApp</span><span class="p">.</span><span class="nf">newTrigger</span><span class="p">(</span><span class="dl">'</span><span class="s1">autoSync</span><span class="dl">'</span><span class="p">)</span>
      <span class="p">.</span><span class="nf">timeBased</span><span class="p">()</span>
      <span class="p">.</span><span class="nf">everyMinutes</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
      <span class="p">.</span><span class="nf">create</span><span class="p">();</span>

    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Auto-sync setup completed successfully!</span><span class="dl">'</span><span class="p">);</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Monitored folder:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">CONFIG</span><span class="p">.</span><span class="nx">MONITORED_FOLDER_ID</span><span class="p">);</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error setting up auto-sync:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Setup-Funktion demonstriert mehrere wichtige Konzepte für eine robuste Automatisierung:</p> <p><strong>Duplikatvermeidung</strong>: Bevor ein neuer Trigger erstellt wird, entfernt die Funktion alle vorhandenen Trigger, die dieselbe Funktion aufrufen würden. Dies verhindert die Erstellung mehrerer überlappender Trigger, wenn die Setup-Funktion mehrfach ausgeführt wird.</p> <p><strong>Trigger-Konfiguration</strong>: Der Trigger ist so konfiguriert, dass er alle 5 Minuten läuft, was ein gutes Gleichgewicht zwischen Reaktionsfähigkeit (Änderungen werden schnell erkannt) und Effizienz (das System verschwendet keine Ressourcen, wenn zu häufig nach Änderungen gesucht wird) bietet.</p> <p><strong>Fehlerbehandlung</strong>: Wie alle unsere Funktionen enthält der Einrichtungsprozess eine umfassende Fehlerbehandlung, um sicherzustellen, dass Probleme bei der Trigger-Erstellung ordnungsgemäß protokolliert werden und die Automatisierung nicht zum Absturz bringen.</p> <p><strong>Bestätigungsprotokollierung</strong>: Die Funktion liefert eine klare Bestätigung, wenn die automatische Synchronisierung erfolgreich eingerichtet wurde, einschließlich Details darüber, welcher Ordner überwacht wird.</p> <p>Sie müssen diese Funktion nur einmal ausführen, um die automatische Synchronisierung einzurichten. Nach der Ausführung wird die <code class="language-plaintext highlighter-rouge">autoSync()</code>-Funktion automatisch alle 5 Minuten ausgeführt, prüft auf Dokumentänderungen und verarbeitet diese bei Bedarf.</p> <h3 id="aenderungserkennung">Effiziente Änderungserkennung</h3> <p>Die automatische Synchronisierungsfunktion ist so konzipiert, dass sie hocheffizient ist, indem sie nur Dokumente verarbeitet, die kürzlich geändert wurden. Dieser Ansatz minimiert die API-Nutzung und die Verarbeitungszeit, während sichergestellt wird, dass Änderungen umgehend erkannt und synchronisiert werden.</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cm">/**
 * Automatically checks for modified documents and syncs them
 * This function is called automatically every 5 minutes
 */</span>
<span class="kd">function</span> <span class="nf">autoSync</span><span class="p">()</span> <span class="p">{</span>
  <span class="k">try</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Running auto-sync check...</span><span class="dl">'</span><span class="p">);</span>

    <span class="kd">const</span> <span class="nx">folder</span> <span class="o">=</span> <span class="nx">DriveApp</span><span class="p">.</span><span class="nf">getFolderById</span><span class="p">(</span><span class="nx">CONFIG</span><span class="p">.</span><span class="nx">MONITORED_FOLDER_ID</span><span class="p">);</span>
    <span class="kd">const</span> <span class="nx">files</span> <span class="o">=</span> <span class="nx">folder</span><span class="p">.</span><span class="nf">getFilesByType</span><span class="p">(</span><span class="nx">MimeType</span><span class="p">.</span><span class="nx">GOOGLE_DOCS</span><span class="p">);</span>

    <span class="c1">// Check for files modified in the last 5 minutes</span>
    <span class="kd">const</span> <span class="nx">lastCheck</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Date</span><span class="p">(</span><span class="nb">Date</span><span class="p">.</span><span class="nf">now</span><span class="p">()</span> <span class="o">-</span> <span class="mi">5</span> <span class="o">*</span> <span class="mi">60</span> <span class="o">*</span> <span class="mi">1000</span><span class="p">);</span>
    <span class="kd">let</span> <span class="nx">modifiedCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>

    <span class="k">while </span><span class="p">(</span><span class="nx">files</span><span class="p">.</span><span class="nf">hasNext</span><span class="p">())</span> <span class="p">{</span>
      <span class="kd">const</span> <span class="nx">file</span> <span class="o">=</span> <span class="nx">files</span><span class="p">.</span><span class="nf">next</span><span class="p">();</span>

      <span class="c1">// Check if file was modified recently</span>
      <span class="k">if </span><span class="p">(</span><span class="nx">file</span><span class="p">.</span><span class="nf">getLastUpdated</span><span class="p">()</span> <span class="o">&gt;</span> <span class="nx">lastCheck</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Auto-syncing recently modified document: </span><span class="p">${</span><span class="nx">file</span><span class="p">.</span><span class="nf">getName</span><span class="p">()}</span><span class="s2">`</span><span class="p">);</span>
        <span class="nf">syncDocument</span><span class="p">(</span><span class="nx">file</span><span class="p">);</span>
        <span class="nx">modifiedCount</span><span class="o">++</span><span class="p">;</span>
      <span class="p">}</span>
    <span class="p">}</span>

    <span class="k">if </span><span class="p">(</span><span class="nx">modifiedCount</span> <span class="o">===</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">No recently modified documents found</span><span class="dl">'</span><span class="p">);</span>
    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
      <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="s2">`Synced </span><span class="p">${</span><span class="nx">modifiedCount</span><span class="p">}</span><span class="s2"> modified document(s)`</span><span class="p">);</span>
    <span class="p">}</span>

  <span class="p">}</span> <span class="k">catch </span><span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
    <span class="nx">console</span><span class="p">.</span><span class="nf">error</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error in periodic sync:</span><span class="dl">'</span><span class="p">,</span> <span class="nx">error</span><span class="p">);</span>
  <span class="p">}</span>
<span class="p">}</span>
</code></pre></div></div> <p>Diese Funktion zeigt mehrere Optimierungstechniken, die die automatische Synchronisierung effizient und zuverlässig machen:</p> <p><strong>Zeitstempelbasierte Filterung</strong>: Die Funktion verarbeitet nur Dokumente, die in den letzten 5 Minuten geändert wurden (entsprechend der Trigger-Häufigkeit). Dies reduziert die Anzahl der Dokumente, die bei jedem Lauf geprüft werden müssen, erheblich.</p> <p><strong>Minimale Verarbeitung</strong>: Durch die Prüfung von Änderungszeitstempeln vor jeder aufwendigen Verarbeitung (wie Formatkonvertierung oder API-Aufrufe) minimiert die Funktion den Ressourcenverbrauch, wenn keine Änderungen stattgefunden haben.</p> <p><strong>Leistungsüberwachung</strong>: Die Funktion verfolgt und meldet, wie viele Dokumente tatsächlich synchronisiert wurden, und bietet Transparenz und hilft bei der Identifizierung potenzieller Probleme.</p> <p><strong>Nicht-störender Betrieb</strong>: Wenn keine Dokumente geändert wurden, wird die Funktion schnell abgeschlossen, ohne unnötige Operationen durchzuführen. Dies stellt sicher, dass die automatische Synchronisierung die Leistung nicht beeinträchtigt, wenn keine Arbeit zu erledigen ist.</p> <p><strong>Konsistente Fehlerbehandlung</strong>: Auch automatisierte Funktionen umfassen eine umfassende Fehlerbehandlung, um sicherzustellen, dass temporäre Probleme das Synchronisierungssystem nicht dauerhaft beschädigen.</p> <p>Das 5-Minuten-Synchronisierungsintervall bietet ein optimales Gleichgewicht zwischen Reaktionsfähigkeit und Effizienz. Änderungen an Google Docs werden innerhalb von 5 Minuten in DocuGenerate-Vorlagen widergespiegelt, was für die meisten Geschäfts-Workflows schnell genug ist und gleichzeitig die Systemressourcen schont.</p> <h2 id="ersteinrichtung-und-test">Ersteinrichtung und Test der Manuellen Synchronisierung</h2> <p>Bevor Sie Ihre Synchronisierungslösung für den regulären Einsatz bereitstellen, ist es wichtig, alle Komponenten gründlich zu testen, um sicherzustellen, dass sie mit Ihrer spezifischen Google-Drive-Ordner- und DocuGenerate-Kontokonfiguration korrekt funktionieren. Ordnungsgemäße Tests helfen dabei, Konfigurationsprobleme zu identifizieren und zu bestätigen, dass die Synchronisierungslogik verschiedene Szenarien korrekt behandelt.</p> <p>Beginnen Sie mit dem Testen der <a href="#manuelle-synchronisierungsfunktion">manuellen Synchronisierung</a>, die sofortiges Feedback liefert und dabei hilft, die initialen Verbindungen zwischen Ihren Google Docs und DocuGenerate-Vorlagen herzustellen.</p> <h3 id="testdokumente-vorbereiten">Testdokumente Vorbereiten</h3> <p>Erstellen Sie einige Test-Google-Docs in Ihrem überwachten Ordner mit verschiedenen Inhaltstypen (einfacher Text, formatierter Text, Tabellen, Bilder), um sicherzustellen, dass der Konvertierungsprozess verschiedene Dokumenttypen korrekt verarbeitet. Für dieses Tutorial verwenden wir die Vorlagen <strong>Software licensing agreement</strong> und <strong>General release of liability</strong> aus Google Docs.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/google-docs-documents.png" alt="Google-Docs-Dokumente"/></p> <h3 id="manuelle-synchronisierung-ausfuehren">Manuelle Synchronisierung Ausführen</h3> <p>Führen Sie die <code class="language-plaintext highlighter-rouge">manualSync()</code>-Funktion aus dem Apps-Script-Editor aus und überwachen Sie das Ausführungsprotokoll. Sie sollten eine detaillierte Ausgabe sehen, die zeigt, welche Dokumente verarbeitet werden und ob Vorlagen erfolgreich erstellt werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/manual-sync-logs.png" alt="Ausführungsprotokolle der manuellen Synchronisierung"/></p> <h3 id="vorlagenerstellung-verifizieren">Vorlagenerstellung Verifizieren</h3> <p>Überprüfen Sie Ihr DocuGenerate-Konto, um zu bestätigen, dass neue Vorlagen mit den richtigen Namen und Inhalten erstellt wurden. Die Vorlagen sollten alle Formatierungen aus den originalen Google Docs beibehalten.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/manual-sync.gif" alt="Demo der manuellen Synchronisierung"/></p> <p>Dieser initiale Test bestätigt, dass Ihre Synchronisierungsautomatisierung ordnungsgemäß konfiguriert ist und erfolgreich neue Vorlagen aus Ihren Google Docs erstellen kann. Wenn die manuelle Synchronisierung korrekt funktioniert, sind Sie bereit, die automatische Synchronisierung einzurichten.</p> <h2 id="automatischer-sync-test">Test der Automatischen Synchronisierung</h2> <p>Sobald die manuelle Synchronisierung korrekt funktioniert, ist es an der Zeit, das <a href="#automatische-synchronisierung">automatische Synchronisierungssystem</a> zu testen, das den Kern Ihres laufenden Synchronisierungs-Workflows bildet. Dieser Prozess ist komplexer, da er auf zeitbasierten Triggern und Änderungserkennungsalgorithmen angewiesen ist, um zu identifizieren, welche Dokumente aktualisiert werden müssen.</p> <h3 id="trigger-einrichten">Trigger Einrichten</h3> <p>Führen Sie die <code class="language-plaintext highlighter-rouge">setupAutoSync()</code>-Funktion aus, um den <a href="#zeitbasierte-trigger">zeitbasierten Trigger</a> zu erstellen. Sie sollten detaillierte Ausgabeprotokolle sehen, um sicherzustellen, dass die Auto-Sync-Einrichtung erfolgreich abgeschlossen wurde.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/setup-auto-sync.png" alt="Ausführungsprotokolle der Auto-Sync-Einrichtung"/></p> <p>Nach dem Ausführen der Setup-Funktion ist es wichtig zu überprüfen, ob der Trigger erfolgreich erstellt wurde und mit den richtigen Parametern konfiguriert ist. Navigieren Sie zum Abschnitt <strong>Triggers</strong> in der linken Seitenleiste des Apps-Script-Editors, um alle mit Ihrem Projekt verknüpften Trigger anzuzeigen. Sie sollten einen neuen zeitbasierten Trigger sehen, der die <code class="language-plaintext highlighter-rouge">autoSync</code>-Funktion alle 5 Minuten aufruft.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/apps-script-trigger.png" alt="Trigger im Apps-Script-Projekt"/></p> <h3 id="testaenderungen-vornehmen">Teständerungen Vornehmen</h3> <p>Ändern Sie Ihre Testdokumente und warten Sie auf den nächsten automatischen Synchronisierungszyklus (bis zu 5 Minuten). Die Automatisierung sollte die Änderung erkennen und die entsprechende DocuGenerate-Vorlage aktualisieren. In unserem Fall haben wir die grüne Hervorhebung der Zusammenführungs-Tags entfernt, um das Dokumentupdate auszulösen, was eine typische Formatierungsänderung darstellt, die Teams während kollaborativer Bearbeitungssitzungen vornehmen könnten.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/google-docs-updated.png" alt="Aktualisierte Google-Docs-Dokumente"/></p> <h3 id="aktualisierungen-verifizieren">Aktualisierungen Verifizieren</h3> <p>Überwachen Sie die Apps-Script-Ausführungsprotokolle, um zu bestätigen, dass die <a href="#aenderungserkennung">automatische Synchronisierungsfunktion</a> Ihre Änderungen erkannt und korrekt verarbeitet hat. Die unten gezeigten Ausführungsprotokolle demonstrieren, wie das System kürzlich geänderte Dokumente identifiziert und die entsprechenden DocuGenerate-Vorlagen erfolgreich aktualisiert.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/auto-sync-logs.png" alt="Ausführungsprotokolle der automatischen Synchronisierung"/></p> <p>Melden Sie sich schließlich bei Ihrem DocuGenerate-Konto an und überprüfen Sie, ob die Änderungen an Ihren Google Docs korrekt mit den entsprechenden Vorlagen synchronisiert wurden. Prüfen Sie, ob Formatierungsänderungen, Textmodifikationen und strukturelle Updates im Vorlageninhalt korrekt widergespiegelt werden. Dieser Verifizierungsschritt schließt den Testzyklus ab und bestätigt, dass Ihre automatische Synchronisierungslösung korrekt funktioniert.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/docugenerate-templates-updated.png" alt="Aktualisierte Vorlagen in DocuGenerate"/></p> <p>Mit abgeschlossenem Test der automatischen Synchronisierung ist Ihr Synchronisierungssystem nun vollständig betriebsbereit und überwacht Ihren Google-Drive-Ordner alle 5 Minuten auf Änderungen, sodass Ihre DocuGenerate-Vorlagen ohne manuellen Aufwand aktuell bleiben.</p> <h2 id="zukuenftige-erweiterungen">Zukünftige Erweiterungen und Anpassungen</h2> <p>Der von uns aufgebaute Synchronisierungs-Workflow bietet eine solide Grundlage, die mit zusätzlichen Funktionen basierend auf Ihren spezifischen Anforderungen erweitert werden kann. Diese Erweiterungen würden die grundlegende Synchronisierungsautomatisierung in eine vollständige Vorlagenverwaltungslösung transformieren.</p> <h3 id="erweiterte-ueberwachung">Erweiterte Überwachungsfunktionen</h3> <ul> <li> <p><strong>Unterstützung mehrerer Ordner</strong>: Das Skript so modifizieren, dass mehrere Google-Drive-Ordner gleichzeitig überwacht werden, wobei jeder potenziell mit verschiedenen DocuGenerate-Konten oder mit unterschiedlichen Verarbeitungsregeln synchronisiert wird.</p> </li> <li> <p><strong>Selektive Synchronisierung</strong>: Dokumentfilterung basierend auf Namensmustern, Dokumenteigenschaften oder Metadaten-Tags implementieren, um Ihnen eine feinkörnige Kontrolle darüber zu geben, welche Dokumente synchronisiert werden.</p> </li> </ul> <h3 id="integrationserweiterungen">Integrationserweiterungen</h3> <ul> <li> <p><strong>Unterstützung regionaler Endpunkte</strong>: Optimale regionale DocuGenerate-Endpunkte automatisch basierend auf Ihrem geografischen Standort oder der Teamverteilung auswählen.</p> </li> <li> <p><strong>Erweiterte Formatunterstützung</strong>: Die Lösung erweitern, um Microsoft-Word-Dokumente, die in Google Drive gespeichert sind, zu verarbeiten und Synchronisierungsfähigkeiten für Teams bereitzustellen, die mit gemischten Dokumentformaten arbeiten.</p> </li> </ul> <h3 id="loeschung-behandeln">Löschung Behandeln</h3> <ul> <li> <p><strong>Dokumentlöschungs-Synchronisierung</strong>: Logik implementieren, um Dokumentlöschungen in Google Drive zu verarbeiten, indem entsprechende Vorlagen aus DocuGenerate entfernt werden.</p> </li> <li> <p><strong>Vorlagen-Bereinigung</strong>: Funktionen erstellen, um verwaiste Vorlagen in DocuGenerate zu identifizieren und zu bereinigen, die keine entsprechenden Google Docs mehr haben.</p> </li> </ul> <h2 id="fazit">Fazit</h2> <p>Die Synchronisierung von Google Docs mit DocuGenerate eliminiert die manuelle Reibung, die Teams oft daran hindert, aktuelle Vorlagen zu pflegen und gleichzeitig leistungsstarke Dokumentgenerierungsfähigkeiten zu nutzen. Das von uns aufgebaute automatisierte System überbrückt die Lücke zwischen kollaborativer Dokumentbearbeitung und professioneller Dokumentgenerierung und ermöglicht es Ihrem Team, natürlich in Google Docs zu arbeiten, während sichergestellt wird, dass Ihre DocuGenerate-Vorlagen immer die neuesten Änderungen widerspiegeln.</p> <p>Durch die Implementierung dieser Lösung kann Ihr Team weiterhin Google Docs für die kollaborative Vorlagenentwicklung verwenden und dabei die erweiterten Dokumentgenerierungsfähigkeiten nutzen, die DocuGenerate bietet. Die automatische Synchronisierung stellt sicher, dass Änderungen, die während kollaborativer Bearbeitungssitzungen vorgenommen werden, sofort für Dokumentgenerierungs-Workflows verfügbar sind und eine leistungsstarke Kombination von Tools schaffen, die sowohl die Produktivität als auch die Dokumentqualität verbessert.</p> <p>Das modulare Design unserer Synchronisierungslösung macht es einfach, sie basierend auf Ihren spezifischen Anforderungen anzupassen und zu erweitern. Ob Sie mehrere Ordner überwachen, benutzerdefinierte Filterregeln implementieren oder mit zusätzlichen Systemen integrieren möchten, die von uns errichtete Grundlage bietet eine robuste Plattform für zukünftige Erweiterungen.</p> <h2 id="ressourcen">Ressourcen</h2> <ul> <li><a href="https://www.docugenerate.com/assets/posts/025-sync-google-docs/apps-script.txt" target="_blank">Vollständiger Apps-Script-Code</a> – Das vollständige Synchronisierungsskript herunterladen</li> <li><a href="https://developers.google.com/apps-script" target="_blank" rel="nofollow noopener">Google Apps Script Dokumentation</a> – Offizieller Google-Apps-Script-Leitfaden und API-Referenz</li> <li><a href="https://developers.google.com/workspace/drive/api/guides/properties" target="_blank" rel="nofollow noopener">Google-Drive-API-Eigenschaften-Leitfaden</a> – Arbeiten mit benutzerdefinierten Dateieigenschaften</li> <li><a href="https://api.docugenerate.com/" target="_blank">DocuGenerate API-Dokumentation</a> – Vollständige API-Referenz für die DocuGenerate-Integration</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Templates"/> <category term="Google Docs"/> <category term="Apps Script"/> <summary type="html"><![CDATA[Entdecken Sie, wie Sie neue Vorlagen automatisch erstellen, wenn Google Docs zu einem Ordner hinzugefügt werden, und Vorlagen aktualisieren, wenn Dokumente geändert werden. Ideal für Teams, die lieber in Google Docs arbeiten, aber die Leistung von DocuGenerate für die Dokumentgenerierung benötigen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/025-sync-google-docs/cover-image-v3.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/025-sync-google-docs/cover-image-v3.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Generierte Dokumente als E-Mail-Anhänge in Bubble Senden</title> <link href="https://www.docugenerate.com/de/blog/generierte-dokumente-als-e-mail-anhaenge-in-bubble-senden/" rel="alternate" type="text/html" title="Generierte Dokumente als E-Mail-Anhänge in Bubble Senden"/> <published>2025-08-17T00:00:00+00:00</published> <updated>2025-08-17T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/generierte-dokumente-als-e-mail-anhaenge-in-bubble-senden</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/generierte-dokumente-als-e-mail-anhaenge-in-bubble-senden/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Der Aufbau professioneller Kunden-Onboarding-Systeme kann komplex sein, insbesondere wenn Sie personalisierte Dokumente erstellen und diese automatisch per E-Mail zustellen müssen. Herkömmliche Ansätze erfordern oft umfangreiche Entwicklungsarbeit, benutzerdefinierte Integrationen und erhebliches technisches Fachwissen. Mit modernen No-Code-Plattformen wie <a href="https://bubble.io/" target="_blank" rel="nofollow noopener">Bubble</a> in Kombination mit spezialisierten Dokumentengenerierungsdiensten können Sie jedoch ausgefeilte Workflows erstellen, die alles von der Datenerfassung bis zur Dokumentzustellung abdecken.</p> <p>In diesem umfassenden Tutorial erstellen wir ein vollständiges Kunden-Onboarding-System, das Kundeninformationen über ein Webformular erfasst, personalisierte Geheimhaltungsvereinbarungen (NDAs) auf Basis dieser Daten generiert und die fertigen Dokumente automatisch als E-Mail-Anhänge versendet. Dieser Ansatz zeigt, wie Sie Bubbles visuelle Entwicklungsplattform zusammen mit der Dokumentengenerierungs-API von DocuGenerate nutzen können, um professionelle Geschäftsworkflows ohne Code zu erstellen.</p> <p>Das von uns erstellte System demonstriert mehrere leistungsstarke Konzepte: automatische Dokumentgenerierung basierend auf Formulareinreichungen, Integration zwischen No-Code-Plattformen und externen APIs sowie professionelle E-Mail-Zustellung mit Dateianhängen. Dieser Workflow ist besonders wertvoll für Unternehmen, die Kundenvereinbarungen, Verträge oder andere personalisierte Dokumente in großem Maßstab verarbeiten müssen und dabei ein professionelles Erscheinungsbild und zuverlässige Zustellung gewährleisten wollen.</p> <h2 id="ki-seitendesigner">Den KI-Seitendesigner von Bubble Nutzen</h2> <p>Um unseren Entwicklungsprozess zu beschleunigen, verwenden wir Bubbles innovativen KI-Seitendesigner, der vollständige Anwendungsoberflächen basierend auf natürlichsprachlichen Beschreibungen generieren kann. Diese Funktion, die im Juni 2024 als Beta öffentlich veröffentlicht und beim <a href="https://bubble.io/blog/event-recap-ai-founder-tools/" target="_blank" rel="nofollow noopener">Zero to One With AI + No-Code</a>-Event offiziell angekündigt wurde, stellt einen bedeutenden Fortschritt in der No-Code-Anwendungsentwicklung dar.</p> <p>Der KI-Seitendesigner ermöglicht es uns, unsere Anforderungen in einfachem Englisch zu beschreiben und eine vollständig funktionsfähige Anwendungsstruktur mit Formularen, Workflows und Datentypen zu erhalten. Dieser Ansatz reduziert die Entwicklungszeit erheblich und stellt sicher, dass die generierte Anwendung den Best Practices und Designmustern von Bubble folgt.</p> <p>Für unser NDA-Unterzeichnungssystem geben wir dem KI-Designer folgenden detaillierten Prompt: <em>“Help me create a web page that will allow my clients to sign NDAs. The web page needs to be modern and contain a form with the following fields: Name, Address, Email and Country. The form data will be used to generate the NDA using DocuGenerate and send it by email to the client.”</em></p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/ai-prompt.png" alt="KI-Prompt für die Generierung der NDA-Anwendung"/></p> <p>Dieser Prompt gibt der KI genug Kontext, um sowohl die funktionalen Anforderungen (Formularfelder, Datenverarbeitung) als auch den beabsichtigten Workflow (Dokumentgenerierung und E-Mail-Zustellung) zu verstehen. Die KI wird diese Informationen nutzen, um geeignete Datenstrukturen, Benutzeroberflächenelemente und initiale Workflow-Konfigurationen zu erstellen.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/ai-generating.png" alt="KI generiert die Anwendungsoberfläche"/></p> <p>Der Generierungsprozess dauert in der Regel mehrere Minuten, während Bubbles KI die Anforderungen analysiert, die notwendigen Komponenten erstellt und sie zu einer kohärenten Anwendung zusammensetzt. Es ist wichtig, den Browser-Tab während dieses Prozesses offen zu halten, da das Schließen die Generierung unterbrechen kann.</p> <h2 id="anwendungsstruktur">Die Generierte Anwendungsstruktur Verstehen</h2> <p>Sobald die KI den Generierungsprozess abgeschlossen hat, verfügen Sie über eine vollständig funktionsfähige Anwendung mit mehreren Seiten, Datenstrukturen und initialen Workflows. Die generierte Anwendung umfasst zwei primäre Seiten, die zusammenarbeiten, um ein vollständiges Benutzererlebnis zu schaffen.</p> <h3 id="index-seite">Startseite</h3> <p>Dies dient als Haupteinstiegspunkt, an dem Kunden mit Ihrem System interagieren. Die Seite enthält ein modernes, übersichtliches Design mit einem umfassenden Formular, das alle für die NDA-Generierung notwendigen Informationen erfasst. Das Formular enthält Felder für den vollständigen <strong>Name</strong>, die <strong>Address</strong>, die <strong>Email Address</strong> und das <strong>Country</strong>, sowie eine prominente <strong>Submit NDA Request</strong>-Schaltfläche, die den Dokumentgenerierungs- und E-Mail-Zustellungs-Workflow initiiert.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/app-index-page.png" alt="Hauptformular auf der Startseite"/></p> <p>Das Design der Startseite priorisiert das Benutzererlebnis mit klarer Beschriftung, angemessener Formularvalidierung und visuellem Feedback. Das Layout ist responsiv und professionell, sodass Kunden das Formular unabhängig von ihrem Gerät oder technischen Kenntnissen problemlos ausfüllen können.</p> <h3 id="bestaetigunsseite">Bestätigungsseite</h3> <p>Nach dem Absenden des Formulars werden Benutzer automatisch zu dieser Seite weitergeleitet, die sofortiges Feedback zu ihrem Anfragestatus liefert. Die Bestätigungsseite zeigt die übermittelten Informationen und den aktuellen Verarbeitungsstatus an, schafft Transparenz und stärkt das Vertrauen der Benutzer in das System.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/app-confirmation-page.png" alt="Bestätigungsseite mit Einreichungsdetails"/></p> <p>Diese Zwei-Seiten-Struktur folgt bewährten Mustern für formularbasierte Anwendungen und bietet Benutzern klares Feedback und Engagement während des gesamten Prozesses.</p> <h3 id="datentyp-architektur">Datentyp-Architektur</h3> <p>Der KI-Designer erstellt automatisch den <code class="language-plaintext highlighter-rouge">NdaSubmission</code>-Datentyp, der als Grundlage für die Speicherung und Verwaltung von Kundeninformationen während des Workflows dient. Diese Datenstruktur ist so konzipiert, dass sie sowohl die initiale Formulareinreichung als auch die verschiedenen Statusverfolgungsfelder aufnehmen kann, die für die Dokumentgenerierung und E-Mail-Zustellung benötigt werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/nda-submission-data-type.png" alt="NDA-Submission-Datentypstruktur"/></p> <p>Der <code class="language-plaintext highlighter-rouge">NdaSubmission</code>-Datentyp enthält folgende Felder:</p> <ul> <li><code class="language-plaintext highlighter-rouge">address</code> (text): Speichert die vollständige Adressinformation des Kunden</li> <li><code class="language-plaintext highlighter-rouge">confirmation_email_sent</code> (yes/no): Verfolgt, ob die initiale Bestätigungs-E-Mail gesendet wurde</li> <li><code class="language-plaintext highlighter-rouge">country</code> (text): Erfasst die Länderinformation des Kunden</li> <li><code class="language-plaintext highlighter-rouge">docugenerate_status</code> (text): Überwacht den Dokumentgenerierungsprozess-Status</li> <li><code class="language-plaintext highlighter-rouge">email</code> (text): Enthält die E-Mail-Adresse des Kunden für die Dokumentzustellung</li> <li><code class="language-plaintext highlighter-rouge">name</code> (text): Speichert den vollständigen Namen des Kunden</li> <li><code class="language-plaintext highlighter-rouge">nda_email_sent</code> (yes/no): Gibt an, ob das NDA erfolgreich zugestellt wurde</li> <li><code class="language-plaintext highlighter-rouge">submission_date</code> (date): Erfasst, wann das Formular ursprünglich eingereicht wurde</li> </ul> <p>Diese umfassende Datenstruktur unterstützt sowohl die unmittelbaren Workflow-Anforderungen als auch zukünftige Erweiterungen wie Berichterstattung, Analysen und erweiterte Statusverfolgung.</p> <h3 id="beispieldaten">Beispieldaten</h3> <p>Die generierte Anwendung enthält ein durchdachtes Beispieldataset, das die <code class="language-plaintext highlighter-rouge">NdaSubmission</code>-Tabelle mit realistischen Einträgen befüllt. Diese Beispieldaten dienen mehreren Zwecken: Sie demonstrieren das erwartete Datenformat, liefern sofortigen Inhalt für Test-Workflows und bieten Beispiele dafür, wie das System verschiedene Kundenszenarien behandelt.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/nda-submission-app-data.png" alt="Beispieldaten in der NDA-Submission-Tabelle"/></p> <p>Die sofortige Verfügbarkeit von Beispieldaten ermöglicht es Ihnen, den vollständigen Workflow zu testen, ohne manuell Testeinträge erstellen zu müssen. Dieser Ansatz beschleunigt die Entwicklung und stellt sicher, dass Sie die ordnungsgemäße Funktion aller Systemkomponenten überprüfen können, bevor Sie in die Produktion gehen.</p> <h2 id="plugin-installation">Das DocuGenerate-Plugin Installieren und Konfigurieren</h2> <p>Um Dokumentengenerierungsfunktionen in unserer Bubble-Anwendung zu aktivieren, müssen wir das <a href="https://bubble.io/plugin/docugenerate-1730225425528x319288222630019100" target="_blank">DocuGenerate-Plugin</a> aus dem Bubble-Marktplatz installieren und konfigurieren. Dieses Plugin bietet direkten Zugriff auf die API-Funktionalität von DocuGenerate über Bubbles visuelles Workflow-System und beseitigt die Notwendigkeit einer benutzerdefinierten API-Integration.</p> <p>Die Plugin-Installation ist unkompliziert. Navigieren Sie zum Abschnitt <strong>Plugins</strong> in Ihrem Bubble-Editor und suchen Sie im Marktplatz nach „DocuGenerate”, dann klicken Sie auf <strong>Install</strong>:</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/install-docugenerate-plugin.png" alt="DocuGenerate-Plugin installieren"/></p> <p>Nach der Installation des Plugins müssen Sie es mit Ihren DocuGenerate-API-Zugangsdaten konfigurieren. Diese Konfiguration stellt die Verbindung zwischen Ihrer Bubble-Anwendung und Ihrem DocuGenerate-Konto her und ermöglicht sichere Kommunikation für Dokumentengenerierungsanfragen.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/configure-docugenerate-plugin.png" alt="DocuGenerate-Plugin konfigurieren"/></p> <p>Die Konfiguration erfordert Ihren DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a>, den Sie in Ihren DocuGenerate-Kontoeinstellungen finden. Dieser API-Schlüssel authentifiziert Ihre Anfragen und stellt sicher, dass generierte Dokumente ordnungsgemäß Ihrem Konto und Ihren Nutzungslimits zugeordnet werden.</p> <p>Sobald konfiguriert, bietet das Plugin über Bubbles Action-System Zugriff auf alle DocuGenerate-Funktionalitäten, einschließlich Dokumentgenerierung, Vorlagenverwaltung und Statusüberwachung. Das Plugin übernimmt automatisch Authentifizierung, Anforderungsformatierung und Antwortverarbeitung.</p> <h2 id="nda-vorlage">Die NDA-Vorlage Erstellen</h2> <p>Bevor wir personalisierte NDAs generieren können, müssen wir eine Vorlage erstellen, die die Dokumentstruktur definiert und angibt, wo kundenspezifische Informationen eingefügt werden sollen. Für dieses Tutorial verwenden wir die <a href="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/Non Disclosure Agreement.docx">Geheimhaltungsvereinbarung</a>-Vorlage aus der <a href="https://www.docugenerate.com/de/vorlagen/#verträge">Vorlagenbibliothek</a> von DocuGenerate, die ein professionell formatiertes Rechtsdokument mit entsprechenden Zusammenführungs-Tags bereitstellt.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/docugenerate-nda-template.png" alt="DocuGenerate-NDA-Vorlagenvorschau"/></p> <p>Die Vorlage enthält mehrere Schlüsselabschnitte, die sie für unseren automatisierten Workflow geeignet machen:</p> <ul> <li> <p><strong>Parteieninformationen</strong>: Die Vorlage enthält dedizierte Abschnitte für beide Parteien – die offenlegende Partei (Ihr Unternehmen) und die empfangende Partei (der Kunde) – mit Zusammenführungs-Tags, die mit Informationen aus unserem Bubble-Formular befüllt werden.</p> </li> <li> <p><strong>Rechtlicher Rahmen</strong>: Die gesamte notwendige Rechtssprache ist vorgeschrieben und entsprechend formatiert, sodass die generierten Dokumente professionelle Rechtsstandards einhalten.</p> </li> <li> <p><strong>Zusammenführungs-Tag-Integration</strong>: Die strategische Platzierung von Zusammenführungs-Tags im gesamten Dokument ermöglicht das Einfügen dynamischer Inhalte bei Beibehaltung der richtigen Formatierung und rechtlichen Struktur.</p> </li> </ul> <p>Die Vorlage verwendet die <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tag-Syntax</a> von DocuGenerate, um anzugeben, wo dynamische Inhalte eingefügt werden sollen. Diese Tags entsprechen den Daten, die wir in unserem Bubble-Formular erfassen und über die DocuGenerate-API während des Generierungsprozesses übergeben.</p> <h2 id="workflow-erstellen">Den Dokumentgenerierungs-Workflow Erstellen</h2> <p>Die KI-generierte Anwendung bietet einen Grundworkflow, den wir mit Dokumentgenerierungs- und E-Mail-Zustellungsfähigkeiten erweitern müssen. Der initiale Workflow umfasst grundlegende Formularverarbeitung und Seitennavigation, aber wir werden ihn um den vollständigen Dokumentenautomatisierungsprozess erweitern.</p> <h3 id="initialer-workflow">Analyse des Initialen Workflows</h3> <p>Der vorhandene Workflow auf der Startseite umfasst drei primäre Schritte, die den grundlegenden Formulareinreichungsprozess handhaben:</p> <ol> <li><strong>Ereignis-Trigger</strong>: Aktiviert, wenn die <strong>Submit NDA Request</strong>-Schaltfläche geklickt wird</li> <li><strong>Datenerstellung</strong>: Erstellt einen neuen <code class="language-plaintext highlighter-rouge">NdaSubmission</code>-Datensatz mit Formulardaten</li> <li><strong>Navigation</strong>: Leitet den Benutzer zur Bestätigungsseite weiter</li> </ol> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/submit-nda-initial-workflow-v2.png" alt="Initiale Workflow-Konfiguration"/></p> <p>Dieser grundlegende Workflow erfasst die Formulardaten und liefert Benutzer-Feedback, enthält jedoch noch nicht die Dokumentgenerierungs- oder E-Mail-Zustellungsfunktionalität, die wir benötigen. Wir werden auf dieser Grundlage aufbauen, indem wir zusätzliche Workflow-Schritte hinzufügen, die diese erweiterten Funktionen übernehmen.</p> <h3 id="dokumentgenerierung-hinzufuegen">Dokumentgenerierung Hinzufügen</h3> <p>Der nächste Schritt besteht darin, eine Dokumentgenerierungsaktion zu unserem Workflow hinzuzufügen. Diese Aktion wird unmittelbar nach dem Speichern der Formulardaten ausgelöst, sodass die Dokumentgenerierung beginnt, sobald die Kundeninformationen im System verfügbar sind.</p> <p>Um den Dokumentgenerierungsschritt hinzuzufügen, klicken Sie auf die <strong>+</strong>-Schaltfläche nach den vorhandenen Workflow-Schritten, navigieren Sie zum Abschnitt <strong>Plugins</strong> und wählen Sie <strong>DocuGenerate - Generate Document</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/add-generate-document-action-v2.png" alt="Dokumentgenerierungsaktion hinzufügen"/></p> <p>Die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Dokumentgenerierungsaktion</a> erfordert mehrere Konfigurationsparameter, die unsere Formulardaten mit der DocuGenerate-Vorlage verbinden:</p> <ul> <li> <p><code class="language-plaintext highlighter-rouge">template_id</code>: Identifiziert die spezifische NDA-Vorlage, die wir in DocuGenerate erstellt haben. Jede Vorlage hat eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erhalte-ich-die-vorlagen-id/">eindeutige ID</a>, die dem System mitteilt, welche Dokumentstruktur für die Generierung verwendet werden soll.</p> </li> <li> <p><code class="language-plaintext highlighter-rouge">name</code>: Wir setzen dies so, dass es den Namen des Kunden dynamisch enthält. Dies schafft beschreibende Dateinamen, die die Identifizierung generierter Dokumente erleichtern.</p> </li> <li> <p><code class="language-plaintext highlighter-rouge">output_format</code>: Geben Sie <code class="language-plaintext highlighter-rouge">.pdf</code> ein, um PDF-Dokumente zu generieren, die eine konsistente Formatierung über verschiedene Geräte und Plattformen hinweg bieten und ein professionelles Erscheinungsbild gewährleisten.</p> </li> <li> <p><code class="language-plaintext highlighter-rouge">data</code>: Dies ist der komplexeste Teil der Konfiguration, da er die Zuordnung unserer Formulardaten zu den Zusammenführungs-Tags in der Vorlage erfordert. Die Daten sollten als JSON-Array formatiert sein, das die dynamischen Werte aus unserer Formulareinreichung enthält.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/config-generate-document-action-v2.png" alt="Dokumentgenerierungsaktion konfigurieren"/></p> <p>Diese JSON-Struktur ordnet jeden Zusammenführungs-Tag in der Vorlage entweder statischen Informationen (wie Ihre Unternehmensdetails) oder dynamischen Daten aus der Formulareinreichung zu. Die dynamischen Werte verwenden Bubbles Syntax, um die im ersten Workflow-Schritt erstellten Daten zu referenzieren, und stellen sicher, dass jedes generierte Dokument die richtigen Kundeninformationen enthält:</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[{</span><span class="w">
  </span><span class="nl">"Effective Date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Result of step 1 (Create a new NdaSubmission)'s submission_date:formatted as 8/30/25"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Disclosing Party Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"NDA Signer"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Disclosing Party Address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"93 East Lassen Street, Los Angeles, CA, 90013"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Receiving Party Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Result of step 1 (Create a new NdaSubmission)'s name"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Receiving Party Address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Result of step 1 (Create a new NdaSubmission)'s address"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"Governing Country"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Result of step 1 (Create a new NdaSubmission)'s country"</span><span class="w">
</span><span class="p">}]</span><span class="w">
</span></code></pre></div></div> <h3 id="e-mail-versand">E-Mail-Versand Implementieren</h3> <p>Der letzte Workflow-Schritt übernimmt die E-Mail-Zustellung des generierten Dokuments. Dabei wird <a href="https://manual.bubble.io/core-resources/actions/email" target="_blank" rel="nofollow noopener">Bubbles native E-Mail-Funktion</a> verwendet, um die PDF als Anhang an die E-Mail-Adresse des Kunden zu senden. Das E-Mail-Zustellungssystem bietet professionelle Kommunikation und stellt sicher, dass Kunden ihre Dokumente umgehend und zuverlässig erhalten.</p> <p>Um den E-Mail-Schritt hinzuzufügen, klicken Sie auf das <strong>+</strong>-Zeichen nach dem Dokumentgenerierungsschritt und wählen Sie <strong>Send email</strong> aus dem <strong>Email</strong>-Untermenü:</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/email-add-action-v2.png" alt="E-Mail-Zustellungsaktion hinzufügen"/></p> <p>Die E-Mail-Konfiguration erfordert mehrere Parameter, die ein professionelles Kommunikationserlebnis schaffen:</p> <ul> <li> <p><strong>Recipient</strong>: Auf <code class="language-plaintext highlighter-rouge">Result of step 1 (Create a new NdaSubmission)'s email</code> gesetzt, um automatisch an die eingereichte E-Mail-Adresse des Kunden zu senden.</p> </li> <li> <p><strong>Sender Name</strong>: Verwenden Sie einen professionellen Namen wie „NDA Signer” oder Ihren Unternehmensnamen, um Glaubwürdigkeit und Markenbekanntheit zu etablieren.</p> </li> <li> <p><strong>Subject Line</strong>: Erstellen Sie einen klaren, professionellen Betreff wie „Your NDA is ready”, der den Zweck der E-Mail sofort kommuniziert.</p> </li> <li> <p><strong>Email Body</strong>: Verfassen Sie eine personalisierte Nachricht, die Professionalität wahrt.</p> </li> <li> <p><strong>File Attachment</strong>: Dies ist der kritischste Konfigurationspunkt. Setzen Sie dies auf <code class="language-plaintext highlighter-rouge">Result of step 2 (DocuGenerate - Generate Document)'s document_uri:saved to Bubble Storage</code>.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/email-config-action-v2.png" alt="E-Mail-Zustellungsaktion konfigurieren"/></p> <p>Der <a href="https://manual.bubble.io/core-resources/data/operations-and-comparisons#saved-to-bubble-storage" target="_blank" rel="nofollow noopener">:saved to Bubble Storage</a>-Modifikator ist für die ordnungsgemäße Behandlung von E-Mail-Anhängen unerlässlich. Ohne diesen Modifikator kann Bubble nicht auf die generierte PDF-Datei für Anhangszwecke zugreifen. Dieser weist Bubble an, das generierte Dokument von DocuGenerate herunterzuladen und es vorübergehend im Dateisystem von Bubble zu speichern, sodass es als E-Mail-Anhang verfügbar ist.</p> <h2 id="anwendung-testen">Die Vollständige Anwendung Testen</h2> <p>Mit allen konfigurierten Workflow-Komponenten können wir die vollständige Anwendung testen, um zu überprüfen, ob jeder Schritt korrekt funktioniert und die Integration zwischen Bubble, DocuGenerate und der E-Mail-Zustellung wie erwartet funktioniert. Diese Testphase ist entscheidend, um Konfigurationsprobleme zu identifizieren, bevor die Anwendung in der Produktion eingesetzt wird.</p> <p>Bubble bietet einen Vorschaumodus, mit dem Sie Ihre Anwendung in einer Live-Umgebung testen können, ohne Produktionsbenutzer zu beeinträchtigen. Sie können auf die Testversion unserer NDA-Anwendung <a href="https://support-55928.bubbleapps.io/version-test?debug_mode=true" target="_blank">hier</a> zugreifen. Die Testumgebung bietet Debug-Modus-Funktionen, die detaillierte Informationen zur Workflow-Ausführung, Datenverarbeitung und etwaigen Fehlern liefern.</p> <h3 id="nda-generierung">NDA-Generierung &amp; E-Mail-Versand</h3> <p>Der Testprozess umfasst die Durchführung der gesamten Benutzerreise von der Formulareinreichung bis zum Dokumentempfang. Beim Testen sollten Sie realistische Informationen verwenden, die Ihren erwarteten Kundendaten entsprechen. Nach dem Ausfüllen des Formulars mit Kundeninformationen verarbeitet das System automatisch die Anfrage durch alle Workflow-Schritte:</p> <p><strong>1. Formularverarbeitung</strong>: Kundeninformationen werden validiert und in der Datenbank gespeichert.<br/> <strong>2. Dokumentgenerierung</strong>: Das NDA wird mit personalisierten Informationen erstellt.<br/> <strong>3. E-Mail-Zustellung</strong>: Das fertige Dokument wird als Anhang versendet.<br/> <strong>4. Benutzer-Feedback</strong>: Die Bestätigungsseite zeigt den aktuellen Status an.</p> <p>Die generierte E-Mail demonstriert das professionelle Erscheinungsbild und die Funktionalität des vollständigen Systems:</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/email-received.png" alt="E-Mail mit NDA-Anhang empfangen"/></p> <p>Die E-Mail enthält den personalisierten Nachrichteninhalt, professionelle Formatierung und das generierte NDA als PDF-Anhang. Dies zeigt, dass der gesamte Workflow korrekt funktioniert und Kunden eine professionelle Erfahrung bietet.</p> <h3 id="dateispeicher-verifizierung">Dateispeicher-Verifizierung</h3> <p>Ein wichtiger Aspekt des Testens ist die Überprüfung, ob generierte Dokumente ordnungsgemäß im Dateiverwaltungssystem von Bubble gespeichert werden. Diese Speicherfähigkeit bietet Sicherungszugriff auf generierte Dokumente und unterstützt zukünftige Erweiterungen wie Dokumenthistorie oder Wiederholungszusendungen.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/file-manager.png" alt="Generierte Dokumente im Dateimanager von Bubble"/></p> <p>Der <a href="https://manual.bubble.io/help-guides/data/files" target="_blank" rel="nofollow noopener">Dateimanager</a> zeigt, dass jedes generierte NDA ordnungsgemäß mit entsprechenden Namenskonventionen gespeichert ist und für zukünftige Referenz zugänglich ist. Diese Speicherfähigkeit stellt sicher, dass Ihr System Aufzeichnungen aller generierten Dokumente führt und Compliance-Anforderungen sowie Kundendienstbedürfnisse unterstützt.</p> <h2 id="fazit">Fazit</h2> <p>Das Erstellen eines automatisierten Dokumentengenerierungs- und E-Mail-Zustellungssystems mit Bubble und DocuGenerate demonstriert die Stärke moderner No-Code-Entwicklungsplattformen in Kombination mit spezialisierten APIs. Das von uns erstellte System verarbeitet komplexe Geschäftsprozesse einschließlich Datenerfassung, Dokumentpersonalisierung und professioneller Kommunikation – alles ohne traditionelle Softwareentwicklungsfähigkeiten.</p> <p>Dieser Ansatz bietet erhebliche Vorteile für Unternehmen, die Kundendokumente in großem Maßstab verarbeiten müssen. Der automatisierte Workflow eliminiert die manuelle Dokumenterstellung, reduziert Fehler, gewährleistet konsistente Formatierung und bietet professionelle Kundenerfahrungen. Die Integration zwischen Bubbles visueller Entwicklungsplattform und den Dokumentengenerierungsfähigkeiten von DocuGenerate schafft eine Lösung, die sowohl leistungsstark als auch zugänglich ist.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://support-55928.bubbleapps.io/version-test?debug_mode=true" target="_blank">Testanwendung</a> für praktische Erfahrung mit dem vollständigen Workflow.</li> <li><a href="https://bubble.io/blog/ai-page-designer-prompts/" target="_blank" rel="nofollow noopener">Bubbles KI-Seitendesigner</a>-Dokumentation und Best Practices.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">DocuGenerate-Bubble-Plugin</a>-Installations- und Konfigurationsleitfaden.</li> <li><a href="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/Non Disclosure Agreement.docx">Geheimhaltungsvereinbarung</a>-Vorlage aus diesem Tutorial.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Email"/> <category term="Bubble"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie in Bubble einen kompletten Workflow erstellen, der personalisierte Vertraulichkeits- vereinbarungen generiert und diese als E-Mail-Anhänge an Kunden sendet. Dieses Schritt-für-Schritt-Tutorial zeigt Ihnen, wie Sie mit Bubbles KI-Seitendesigner ein professionelles Kunden-Onboarding-System aufbauen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">PDF-Lieferscheine mit Retool für die Lagerverwaltung Generieren</title> <link href="https://www.docugenerate.com/de/blog/pdf-lieferscheine-mit-retool-fuer-die-lagerverwaltung-generieren/" rel="alternate" type="text/html" title="PDF-Lieferscheine mit Retool für die Lagerverwaltung Generieren"/> <published>2025-07-29T00:00:00+00:00</published> <updated>2025-07-29T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/pdf-lieferscheine-mit-retool-fuer-die-lagerverwaltung-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/pdf-lieferscheine-mit-retool-fuer-die-lagerverwaltung-generieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Lagerverwaltungsanwendungen, die mit <a href="https://retool.com/" target="_blank" rel="nofollow noopener">Retool</a> erstellt wurden, sind hervorragend darin, Daten zu organisieren und intuitive Oberflächen für die Verfolgung von Produkten, Bestellungen und Sendungen bereitzustellen. Viele Unternehmen benötigen jedoch professionelle Dokumentation für ihre Versandabläufe, die über einfache Datenanzeigen hinausgeht. Die Erstellung von PDF-Lieferscheinen mit detaillierten Produktinformationen, Adressen und individuellem Branding kann Logistikabläufe erheblich verbessern und Kunden mit professioneller Dokumentation versorgen.</p> <p>In diesem Tutorial erweitern wir Retools vorhandene <a href="https://retool.com/templates/inventory-management" target="_blank" rel="nofollow noopener">Inventory Management App</a>-Vorlage durch die Integration von DocuGenerates Dokumentengenerierungsfunktionen. Anstatt ein Lagersystem von Grund auf neu aufzubauen, konzentrieren wir uns auf das Hinzufügen einer professionellen PDF-Lieferscheingenerierung zu einer bereits funktionsfähigen Anwendung. Dieser Ansatz zeigt, wie bestehende Retool-Anwendungen um Dokumentengenerierungsfunktionen erweitert werden können, ohne etablierte Workflows zu unterbrechen.</p> <p>Die Integration, die wir aufbauen, schafft eine leistungsstarke Kombination, bei der Benutzer ihre Bestandsdaten über Retools intuitive Oberfläche verwalten und gleichzeitig bei Bedarf professionelle Versanddokumente generieren können. Diese Lösung ist besonders wertvoll für Unternehmen, die Spediteure, Kunden und interne Teams mit standardisierter Versanddokumentation versorgen müssen, die detaillierte Produktinformationen und Unternehmensbranding enthält.</p> <h2 id="basisanwendung-verstehen">Die Basisanwendung Verstehen</h2> <p>Bevor wir Dokumentengenerierungsfunktionen hinzufügen, schauen wir uns die Grundlage an, mit der wir arbeiten. Retools Inventory Management App-Vorlage bietet eine umfassende Lösung zur Verfolgung von Lagerbeständen, Verwaltung von Sendungen und Überwachung von Produktdaten an mehreren Standorten.</p> <p>Die Anwendung enthält mehrere Schlüsselkomponenten, die sie ideal für unsere Lieferscheinerweiterung machen:</p> <ul> <li> <p><strong>Sendungsverfolgung</strong>: Ein vollständiges System zur Verwaltung von Sendungen von der Erstellung bis zur Lieferung, einschließlich Statusupdates und detaillierter Sendungsinformationen.</p> </li> <li> <p><strong>Produktverwaltung</strong>: Umfassende Produktdaten einschließlich Beschreibungen, Mengen und Preisinformationen, die für die Versanddokumentation unerlässlich sind.</p> </li> <li> <p><strong>Standortverwaltung</strong>: Unterstützung für mehrere Lager und Versandstandorte mit Adressinformationen für Lieferscheine.</p> </li> <li> <p><strong>Datenbeziehungen</strong>: Gut strukturierte Beziehungen zwischen Sendungen, Produkten und Standorten, die eine umfassende Dokumentengenerierung ermöglichen.</p> </li> </ul> <p>Die vorhandene Datenstruktur der Vorlage enthält alle Informationen, die für professionelle Lieferscheine typischerweise benötigt werden, einschließlich Absender- und Empfängerdetails, Produktbeschreibungen, Mengen und Sendungsstatusinformationen.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/app-database.png" alt="Inventory Management App-Datenbank"/></p> <h2 id="anwendung-vorbereiten">Anwendung Vorbereiten</h2> <p>Um uns auf die Dokumentengenerierungsaspekte dieses Tutorials zu konzentrieren, nehmen wir einige Änderungen an der Basisvorlage vor. Diese Änderungen vereinfachen die Oberfläche, während die für die Lieferscheingenerierung erforderliche Kernfunktionalität erhalten bleibt.</p> <h3 id="vorlage-klonen">Vorlage Klonen</h3> <p>Beginnen Sie mit dem Klonen der Inventory Management App-Vorlage aus Retools Vorlagenbibliothek. Dies bietet die vollständige Grundlage mit Beispieldaten, etablierten Workflows und bewährten UI-Mustern.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/clone-app-template.png" alt="Retool Inventory Management-Vorlage klonen"/></p> <p>Die geklonte Vorlage enthält alle notwendigen Komponenten, Abfragen und Beispieldaten, um den Lieferscheingenerierungsprozess zu demonstrieren. Die vorhandene Struktur bietet realistische Sendungsszenarien, die verschiedene Möglichkeiten der Dokumentengenerierung aufzeigen.</p> <h3 id="oberflaeche-vereinfachen">Oberfläche Vereinfachen</h3> <p>Für dieses Tutorial entfernen wir etwas Komplexität, um uns auf den Dokumentengenerierungs-Workflow zu konzentrieren. Die wichtigste Vereinfachung beinhaltet das Aktualisieren der Sendungsabfrage, um die Datumsfilterung zu entfernen und so die Anzeige aller verfügbaren Sendungen zu erleichtern.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/get-shipments-filter.png" alt="Vereinfachte Sendungsabfrage mit Filterentfernung"/></p> <p>Wir entfernen die Datumsbereichsfilterkomponenten und vereinfachen die <code class="language-plaintext highlighter-rouge">getShipments</code>-Abfrage. Diese Änderung beeinträchtigt die Kernfunktionalität nicht, macht es aber einfacher, Sendungen während unseres Tutorials zu navigieren. In einer Produktionsumgebung würden Sie diese Filterfunktionen typischerweise beibehalten, um große Mengen von Sendungsdaten zu verwalten. Die vereinfachte Ansicht bietet sofortigen Zugriff auf alle Sendungen und erleichtert das Testen der Dokumentengenerierung mit verschiedenen Sendungstypen und Konfigurationen.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/simplified-shipments-view.png" alt="Vereinfachte Sendungsansicht ohne Datumsfilter"/></p> <h3 id="pdf-generierungsschaltflaeche-hinzufuegen">PDF-Generierungsschaltfläche Hinzufügen</h3> <p>Als nächstes fügen wir eine <strong>View Shipping Form</strong>-Schaltfläche zur Sendungsdetailseite hinzu. Diese Schaltfläche löst den Dokumentengenerierungsprozess aus und navigiert Benutzer zu einer PDF-Viewer-Seite.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/view-shipping-form-pdf-button.png" alt="Lieferschein-PDF-Schaltfläche auf der Sendungsdetailseite"/></p> <p>Die Platzierung der Schaltfläche fügt sich natürlich in die bestehende Sendungsdetailoberfläche ein und bietet Benutzern sofortigen Zugriff auf die Lieferscheingenerierung, ohne etablierte Workflows zu unterbrechen. Das Design der Schaltfläche entspricht den vorhandenen Stilmustern der Anwendung und gewährleistet visuelle Konsistenz.</p> <h3 id="lieferschein-seite-hinzufuegen">Lieferschein-Seite Hinzufügen</h3> <p>Der letzte Schritt beinhaltet die Erstellung einer neuen <strong>ShippingFormPDF</strong>-Seite zur Anzeige generierter Lieferscheine. Diese Seite enthält eine PDF-Viewer-Komponente zur Anzeige von DocuGenerate-generierten Dokumenten sowie eine <strong>Print</strong>-Schaltfläche, die es Benutzern ermöglicht, den Lieferschein auszudrucken.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/shipping-form-pdf.png" alt="Beispiel des generierten Lieferschein-PDF"/></p> <h2 id="lieferschein-vorlage-erstellen">Lieferschein-Vorlage Erstellen</h2> <p>Um dynamische Lieferscheine zu generieren, müssen wir zunächst eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">Vorlage erstellen</a>, die alle wesentlichen Elemente professioneller Versanddokumentation enthält. Die Vorlage enthält Abschnitte mit <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> für Absenderinformationen, Empfängerdetails, Sendungsinhalt und zusätzliche Hinweise.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/shipping-form-template.png" alt="Bild der Lieferschein-Vorlage"/></p> <p>Die <a href="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/Shipping Form.docx">Lieferschein</a>-Vorlage in diesem Tutorial enthält mehrere wichtige Funktionen:</p> <ul> <li> <p><strong>Bedingter Inhalt</strong>: Der Hinweisabschnitt erscheint nur, wenn Sendungshinweise vorhanden sind, unter Verwendung der <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bedingungen-zu-einer-vorlage-hinzu/">Bedingungssyntax</a></p> </li> <li> <p><strong>Dynamische Tabelle</strong>: Der Sendungsartikelabschnitt expandiert automatisch, um eine variable Anzahl von Produkten aufzunehmen, mithilfe der <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-tabellen-zu-einer-vorlage-hinzu/">Tabellensyntax</a></p> </li> <li> <p><strong>Konsistente Formatierung</strong>: Alle Elemente behalten eine professionelle Formatierung unabhängig von Inhaltslänge oder Komplexität</p> </li> </ul> <h2 id="dokumentengenerierung-einrichten">Dokumentengenerierung Einrichten</h2> <p>Mit unserer fertigen Oberfläche können wir uns auf die Integration von DocuGenerates PDF-Generierungsfunktionen in den bestehenden Sendungsworkflow konzentrieren, um Lieferscheine automatisch zu erstellen.</p> <h3 id="docugenerate-ressource">DocuGenerate-Ressource</h3> <p>Wir müssen die Verbindung zwischen Retool und der <a href="https://api.docugenerate.com/" target="_blank">DocuGenerate-API</a> konfigurieren. Dies beinhaltet die Erstellung einer REST-API-Ressource, die Authentifizierung und Kommunikation mit DocuGenerates Dokumentengenerierungsdienst verwaltet.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/configure-rest-api.png" alt="Konfiguration der REST-API-Verbindung für DocuGenerate"/></p> <p>Die REST-API-Konfiguration erfordert:</p> <ul> <li><strong>Ressourcenname</strong>: „DocuGenerate” zur einfachen Identifikation in Abfragen</li> <li><strong>Basis-URL</strong>: <code class="language-plaintext highlighter-rouge">https://api.docugenerate.com</code> (oder verwenden Sie einen unserer <a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-regionale-api-endpunkte-verwenden/">regionalen Endpunkte</a> für bessere Leistung)</li> <li><strong>Authentifizierung</strong>: Fügen Sie Ihren DocuGenerate <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a> im <code class="language-plaintext highlighter-rouge">Authorization</code>-Header hinzu</li> </ul> <p>Diese Konfiguration bildet die Grundlage für alle Dokumentengenerierungsanfragen, verwaltet die Authentifizierung automatisch und stellt eine wiederverwendbare Verbindung für mehrere Dokumenttypen bereit.</p> <h3 id="dokumentengenerierungsabfrage">Dokumentengenerierungsabfrage</h3> <p>Mit unserer erstellten Vorlage müssen wir die Retool-Abfrage konfigurieren, die Sendungsdaten zur Verarbeitung an DocuGenerate sendet. Diese Abfrage übernimmt die Datentransformation und die API-Kommunikation.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/generate-document-query.png" alt="Dokumentengenerierungsabfrage in Retool konfigurieren"/></p> <p>Die <code class="language-plaintext highlighter-rouge">generateDocument</code>-Abfrage verwendet die <a href="#docugenerate-ressource">DocuGenerate-Ressource</a>, und ihre Konfiguration umfasst:</p> <ul> <li><strong>URL-Pfad</strong>: POST-Anfrage an den <code class="language-plaintext highlighter-rouge">/v1/document/</code>-Endpunkt zum Erstellen neuer Dokumente</li> <li><strong>Anfragetext</strong>: JSON mit folgenden Feldern: <ul> <li><code class="language-plaintext highlighter-rouge">template_id</code>: ID der in DocuGenerate erstellten <a href="#lieferschein-vorlage-erstellen">Lieferschein</a>-Vorlage</li> <li><code class="language-plaintext highlighter-rouge">output_format</code>: auf <code class="language-plaintext highlighter-rouge">.pdf</code> gesetzt, um PDF-Dokumente zu generieren</li> <li><code class="language-plaintext highlighter-rouge">name</code>: gibt den dynamischen Dokumentnamen an, der dem in der App angezeigten Namen entspricht (<code class="language-plaintext highlighter-rouge">Shipment #{{ Shipments_HistoryCollection.selectedItem.id }}</code>)</li> <li><code class="language-plaintext highlighter-rouge">data</code>: die Lieferscheindaten basierend auf <code class="language-plaintext highlighter-rouge">Shipments_HistoryCollection.selectedItem</code></li> </ul> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  
[{
  "shipment_number": "{{ Shipments_HistoryCollection.selectedItem.id }}",
  "shipment_from": "{{ Shipments_HistoryCollection.selectedItem.fromStreet }}",
  "shipment_to": "{{ Shipments_HistoryCollection.selectedItem.toStreet }}",
  "shipment_status": "{{ Shipments_HistoryCollection.selectedItem.status }}",
  "shipment_notes": "{{ Shipments_HistoryCollection.selectedItem.notes }}",
  "shipment_items": {{ getShipmentItems.data }},
  "shipment_date": "{{ Shipments_HistoryCollection.selectedItem.date }}"
}]
  
</code></pre></div> </div> </li> </ul> <p>Die Abfrage transformiert Retools Sendungsdaten in das Format, das von DocuGenerates Vorlagenverarbeitungs-Engine erwartet wird. Dies beinhaltet das Extrahieren relevanter Informationen aus dem ausgewählten Sendungsdatensatz und deren angemessene Formatierung für die in unserer Vorlage definierten Zusammenführungs-Tags.</p> <h3 id="datentransformation">Datentransformation</h3> <p>Die <code class="language-plaintext highlighter-rouge">getShipmentItems</code>-Abfrage liefert Sendungsartikel im Tabellenformat, das inkompatibel mit dem für den <code class="language-plaintext highlighter-rouge">shipment_items</code>-Wert in der <code class="language-plaintext highlighter-rouge">generateDocument</code>-Abfrage erwarteten Listenformat ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/get-shipment-items-table.png" alt="Sendungsartikeltabelle mit Produktdaten"/></p> <p>Wir müssen diese tabellarischen Daten in eine Array-Struktur konvertieren, die die dynamische Produktliste in unserer Lieferscheinvorlage befüllen kann. Die Eingabe des folgenden JavaScript-Codes im Schritt <strong>Transform results</strong> konvertiert das Tabellenformat in ein Array von Objekten mit den Attributen <code class="language-plaintext highlighter-rouge">title</code> und <code class="language-plaintext highlighter-rouge">quantity</code>:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="p">{</span> <span class="nx">title</span><span class="p">,</span> <span class="nx">quantity</span> <span class="p">}</span> <span class="o">=</span> <span class="nx">data</span><span class="p">;</span>

<span class="k">return</span> <span class="nx">title</span><span class="p">.</span><span class="nf">map</span><span class="p">((</span><span class="nx">t</span><span class="p">,</span> <span class="nx">i</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">({</span>
  <span class="na">title</span><span class="p">:</span> <span class="nx">t</span><span class="p">,</span>
  <span class="na">quantity</span><span class="p">:</span> <span class="nx">quantity</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span>
<span class="p">}));</span>
</code></pre></div></div> <p>Diese Transformation stellt sicher, dass Produktinformationen aus Retools Datenbankstruktur dem Array-Format entsprechen, das von DocuGenerates Vorlagenverarbeitungs-Engine erwartet wird. Das resultierende Array kann eine beliebige Anzahl von Produkten aufnehmen und dabei konsistente Formatierung im generierten Dokument beibehalten.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/get-shipment-items-array.png" alt="Transformiertes Sendungsartikel-Array zur Vorlagenverarbeitung"/></p> <h2 id="vollstaendigen-workflow-implementieren">Vollständigen Workflow Implementieren</h2> <p>Die abschließende Implementierung verbindet alle Komponenten zu einem reibungslosen Benutzererlebnis, von der Sendungsauswahl bis zur PDF-Generierung und -Anzeige. Diese Integration stellt sicher, dass die Dokumentengenerierung sich als natürliche Erweiterung des bestehenden Lagerverwaltungsworkflows anfühlt und nicht als separater Prozess.</p> <h3 id="event-handler-konfiguration">Event-Handler-Konfiguration</h3> <p>Die <strong>View Shipping Form</strong>-Schaltfläche benötigt zwei Event-Handler für den vollständigen Workflow. Der erste Event-Handler löst die <code class="language-plaintext highlighter-rouge">generateDocument</code>-Abfrage aus, die die Sendungsdaten an DocuGenerate sendet und die generierte PDF-URL als Antwort erhält.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/click-handler-generate-document.png" alt="Click-Handler-Konfiguration für die Dokumentengenerierung"/></p> <p>Der zweite Event-Handler verwaltet die Navigation zur <code class="language-plaintext highlighter-rouge">ShippingFormPDF</code>-Seite nach erfolgreicher Dokumentengenerierung. Dies schafft ein reibungsloses Benutzererlebnis, bei dem das Klicken auf die Schaltfläche das Dokument sofort generiert und dem Benutzer anzeigt.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/click-handler-navigate-to-page.png" alt="Click-Handler-Konfiguration für die Seitennavigation"/></p> <h3 id="pdf-viewer-implementierung">PDF-Viewer-Implementierung</h3> <p>Der letzte Schritt besteht darin, das generierte Lieferschein-PDF auf der <a href="#lieferschein-seite-hinzufuegen">dedizierten Seite</a> anzuzeigen, die zu Beginn dieses Tutorials zur Anwendung hinzugefügt wurde.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/shipping-form-file-url.png" alt="Generierter Lieferschein-PDF im Viewer angezeigt"/></p> <p>Um das generierte Dokument in der <code class="language-plaintext highlighter-rouge">ShippingFormPDFViewer</code>-Komponente zu laden, müssen wir folgenden Wert im <code class="language-plaintext highlighter-rouge">File URL</code>-Eingabefeld angeben:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{{ generateDocument.data?.document_uri }}
</code></pre></div></div> <p>Diese Konfiguration zeigt automatisch das von DocuGenerates API über die <a href="#dokumentengenerierungsabfrage">Dokumentengenerierungsabfrage</a> zurückgegebene PDF an und bietet Benutzern sofortigen Zugriff auf ihre generierten Lieferscheine.</p> <h2 id="fertige-loesung-testen">Die Fertige Lösung Testen</h2> <p>Mit allen konfigurierten Komponenten bietet der vollständige Workflow ein professionelles Dokumentengenerierungserlebnis, das direkt in die Lagerverwaltungsoberfläche integriert ist. Benutzer können von der Sendungsverwaltung zur professionellen PDF-Generierung navigieren, ohne die Anwendung zu verlassen.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/demo-video-retool.gif" alt="Demovideo des vollständigen Retool-Lieferschein-Workflows"/></p> <p>Die fertige Lösung, auf die Sie <a href="https://docugenerate.retool.com/mobile/apps/Inventory%20Management" target="_blank">hier</a> zugreifen können, demonstriert mehrere wichtige Vorteile:</p> <ul> <li><strong>Workflow-Integration</strong>: Dokumentengenerierung fügt sich natürlich in bestehende Sendungsverwaltungsprozesse ein</li> <li><strong>Professioneller Output</strong>: Generierte Formulare behalten bei allen Sendungen konsistente Formatierung und Branding</li> <li><strong>Benutzererfahrung</strong>: Einfache Schaltflächenklicks lösen komplexe Dokumentengenerierung aus, ohne technische Komplexität offenzulegen</li> <li><strong>Datenkonsistenz</strong>: Alle Sendungsinformationen befüllen sich automatisch in den generierten Formularen und eliminieren manuelle Dateneingabefehler</li> </ul> <h2 id="fazit">Fazit</h2> <p>Die Integration von DocuGenerates Dokumentengenerierungsfunktionen in Retools Inventory Management App zeigt, wie bestehende No-Code-Anwendungen mit professioneller Dokumenterstellung erweitert werden können, ohne etablierte Workflows zu unterbrechen. Dieser Ansatz bietet erheblichen Mehrwert für Unternehmen, die konsistente, professionelle Versanddokumentation generieren müssen, während sie die Effizienz ihrer bestehenden Lagerverwaltungsprozesse aufrechterhalten.</p> <p>Die Kombination von Retools intuitiver Oberflächen-Builder-Funktion mit DocuGenerates robuster Vorlagenverarbeitung schafft eine Lösung, die operative Effizienz mit professionellen Dokumentationsanforderungen verbindet. Benutzer können ihre Bestände und Sendungen weiterhin über vertraute Oberflächen verwalten und dabei mit einfachen Schaltflächenklicks auf Dokumentengenerierungsfunktionen auf Unternehmensniveau zugreifen. Die Flexibilität beider Plattformen bedeutet, dass die Lösung mit sich ändernden Geschäftsanforderungen mitwachsen kann und alles von einfachen Lieferscheinen bis hin zu komplexen mehrseitigen Versandmanifesten unterstützt.</p> <p>Der schrittweise Ansatz dieses Tutorials zeigt, dass ausgefeilte Dokumentengenerierungsfunktionen zu bestehenden Anwendungen hinzugefügt werden können, ohne umfangreiche Entwicklungsressourcen zu benötigen oder aktuelle operative Workflows zu unterbrechen. Dies macht professionelle Dokumentenautomatisierung für Unternehmen jeder Größe zugänglich – von kleinen Betrieben, die Dutzende von Sendungen verwalten, bis hin zu großen Unternehmen, die täglich Tausende von Versanddokumenten verarbeiten.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://retool.com/templates/inventory-management" target="_blank" rel="nofollow noopener">Retool Inventory Management Template</a> für die Basisanwendungsstruktur.</li> <li><a href="https://api.docugenerate.com/" target="_blank">DocuGenerate API-Dokumentation</a> mit umfassenden Integrationsrichtlinien.</li> <li><a href="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/Shipping Form.docx">Lieferschein</a>-Vorlage aus diesem Tutorial.</li> <li><a href="https://docugenerate.retool.com/mobile/apps/Inventory%20Management" target="_blank">Live-Demo-Anwendung</a> mit der vollständigen Integration in Aktion.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Shipping Forms"/> <category term="Retool"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erweitern Sie Ihre Retool-Lagerverwaltungs-App mit professionellen PDF-Lieferscheinen mithilfe von DocuGenerate. Dieses Schritt-für-Schritt-Tutorial zeigt Ihnen, wie Sie die Dokumentengenerierung in bestehende Workflows integrieren und Versanddokumente für Ihre Logistikabläufe erstellen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Google Docs vs. DocuGenerate: Der Ultimative Vergleich</title> <link href="https://www.docugenerate.com/de/blog/google-docs-vs-docugenerate-der-ultimative-vergleich/" rel="alternate" type="text/html" title="Google Docs vs. DocuGenerate: Der Ultimative Vergleich"/> <published>2025-06-18T00:00:00+00:00</published> <updated>2025-06-18T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/google-docs-vs-docugenerate-der-ultimative-vergleich</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/google-docs-vs-docugenerate-der-ultimative-vergleich/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Dokumentgenerierung ist ein kritischer Prozess für Unternehmen aller Branchen. Ob Sie Rechnungen, Verträge, Zertifikate oder Berichte erstellen – die Fähigkeit, Daten effizient in professionelle Dokumente umzuwandeln, kann unzählige Stunden sparen und menschliche Fehler reduzieren. Zwei verbreitete Ansätze für die Dokumentgenerierung sind die Verwendung von Google Docs mit seiner API und spezialisierte Dokumentgenerierungsplattformen wie DocuGenerate.</p> <p>Beide Lösungen können zwar Dokumente aus Vorlagen und Daten erstellen, unterscheiden sich jedoch erheblich in ihrem Ansatz, ihrer Komplexität und ihren Fähigkeiten. <a href="https://developers.google.com/workspace/docs/api/how-tos/overview" target="_blank" rel="nofollow noopener">Google Docs</a> bietet eine vertraute Benutzeroberfläche und leistungsstarke Kollaborationsfunktionen, erfordert jedoch Programmierkenntnisse, um die Dokumentgenerierung über die einfache Textersetzung hinaus zu automatisieren. <a href="https://www.docugenerate.com/">DocuGenerate</a> hingegen ist speziell für die Dokumentenautomatisierung entwickelt worden und bietet deklarative vorlagenbasierte Generierung ohne komplexe Programmierung.</p> <p>In diesem umfassenden Vergleich werden wir die Stärken und Einschränkungen jedes Ansatzes untersuchen und Ihnen helfen zu bestimmen, welche Lösung am besten zu Ihren Dokumentgenerierungsanforderungen passt. Wir werden alles von der Vorlagenerstellung und Datenverarbeitung bis hin zu erweiterten Funktionen wie dynamischen Listen, Tabellen und Bildeinfügung untersuchen.</p> <h2 id="google-docs-verwenden">Google Docs Verwenden</h2> <p>Google Docs bietet <a href="https://developers.google.com/workspace/docs/api/how-tos/merge" target="_blank" rel="nofollow noopener">Dokumentgenerierungsfähigkeiten</a> über seine API, die es Entwicklern ermöglicht, Dokumente programmgesteuert zu erstellen und zu ändern. Der Prozess umfasst typischerweise mehrere Schritte:</p> <p><strong>1. Vorlagenerstellung</strong>: Sie beginnen damit, ein Vorlagendokument in Google Docs mit Platzhaltertext zu erstellen, der durch tatsächliche Daten ersetzt wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/google-docs-template.jpg" alt="Google-Docs-Vorlage mit Platzhaltern"/></p> <p><strong>2. Dokumentduplizierung</strong>: Wenn Sie ein neues Dokument generieren, müssen Sie zuerst eine Kopie der Vorlage mit der <a href="https://developers.google.com/workspace/drive/api/reference/rest/v3/files/copy" target="_blank" rel="nofollow noopener">files.copy</a>-Methode der Google Drive API erstellen.</p> <p><strong>3. Textersetzung</strong>: Nach dem Kopieren der Vorlage verwenden Sie die <a href="https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/batchUpdate" target="_blank" rel="nofollow noopener">batchUpdate</a>-Methode der Google Docs API mit <a href="https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#replacealltextrequest" target="_blank" rel="nofollow noopener">ReplaceAllTextRequest</a>, um Platzhaltertext durch echte Daten zu ersetzen.</p> <p><strong>4. Dokumentabruf</strong>: Schließlich rufen Sie das fertige Dokument für die Verteilung oder Speicherung ab.</p> <p>So sieht ein typischer Google-Docs-API-Workflow aus:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code>  <span class="kd">let</span> <span class="nx">date</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Date</span><span class="p">();</span>
  <span class="kd">let</span> <span class="nx">requests</span> <span class="o">=</span> <span class="p">[</span>
    <span class="p">{</span>
      <span class="na">replaceAllText</span><span class="p">:</span> <span class="p">{</span>
        <span class="na">containsText</span><span class="p">:</span> <span class="p">{</span>
          <span class="na">text</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{customer-name}}</span><span class="dl">'</span><span class="p">,</span>
          <span class="na">matchCase</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
        <span class="p">},</span>
        <span class="na">replaceText</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Alice</span><span class="dl">'</span>
      <span class="p">},</span>
    <span class="p">},</span>
    <span class="p">{</span>
      <span class="na">replaceAllText</span><span class="p">:</span> <span class="p">{</span>
        <span class="na">containsText</span><span class="p">:</span> <span class="p">{</span>
          <span class="na">text</span><span class="p">:</span> <span class="dl">'</span><span class="s1">{{date}}</span><span class="dl">'</span><span class="p">,</span>
          <span class="na">matchCase</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
        <span class="p">},</span>
        <span class="na">replaceText</span><span class="p">:</span> <span class="nx">date</span><span class="p">.</span><span class="nf">toDateString</span><span class="p">(),</span>
      <span class="p">},</span>
    <span class="p">},</span>
  <span class="p">];</span>

  <span class="nx">google</span><span class="p">.</span><span class="nf">options</span><span class="p">({</span><span class="na">auth</span><span class="p">:</span> <span class="nx">auth</span><span class="p">});</span>
  <span class="nx">google</span>
      <span class="p">.</span><span class="nf">discoverAPI</span><span class="p">(</span>
          <span class="dl">'</span><span class="s1">https://docs.googleapis.com/$discovery/rest?version=v1&amp;key={YOUR_API_KEY}</span><span class="dl">'</span><span class="p">)</span>
      <span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">docs</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">docs</span><span class="p">.</span><span class="nx">documents</span><span class="p">.</span><span class="nf">batchUpdate</span><span class="p">(</span>
            <span class="p">{</span>
              <span class="na">documentId</span><span class="p">:</span> <span class="dl">'</span><span class="s1">DOCUMENT_ID</span><span class="dl">'</span><span class="p">,</span>
              <span class="na">resource</span><span class="p">:</span> <span class="p">{</span>
                <span class="nx">requests</span><span class="p">,</span>
              <span class="p">},</span>
            <span class="p">},</span>
            <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="p">{</span><span class="nx">data</span><span class="p">})</span> <span class="o">=&gt;</span> <span class="p">{</span>
              <span class="k">if </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="k">return</span> <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">The API returned an error: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">err</span><span class="p">);</span>
              <span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
            <span class="p">});</span>
      <span class="p">});</span>
</code></pre></div></div> <h3 id="google-docs-einschraenkungen">Google-Docs-Einschränkungen</h3> <p>Obwohl Google Docs unglaublich leistungsstark für die Zusammenarbeit an Dokumenten und die Bearbeitung ist, hat es mehrere Einschränkungen bei der automatisierten Dokumentgenerierung:</p> <ul> <li> <p><strong>Nur einfache Textersetzung</strong>: Die Google Docs API unterstützt primär einfache Textersetzungsoperationen. Sie können Platzhaltertext durch tatsächliche Werte ersetzen, aber das Erstellen dynamischer Inhaltsstrukturen erfordert Programmierung.</p> </li> <li> <p><strong>Begrenzte Vorlagenlogik</strong>: Google-Docs-Vorlagen können keine bedingte Logik, Schleifen oder dynamische Strukturen innerhalb der Vorlage selbst enthalten. Die gesamte Logik muss im Anwendungscode implementiert werden.</p> </li> <li> <p><strong>Komplexität bei der Bildbehandlung</strong>: Obwohl Sie Bilder über die API einfügen können, müssen Bilder über URLs öffentlich zugänglich sein, und Sie müssen die Bildpositionierung und -skalierung per Code verwalten, anstatt über Vorlagen-Markup.</p> </li> <li> <p><strong>Mehrstufiger Prozess</strong>: Jede Dokumentgenerierung erfordert mehrere API-Aufrufe – zuerst zum Kopieren der Vorlage, dann zum Durchführen der Ersetzungen und möglicherweise zusätzliche Aufrufe für komplexe Formatierungen oder Strukturänderungen.</p> </li> <li> <p><strong>Technisches Fachwissen erforderlich</strong>: Die Implementierung einer auf Google Docs basierenden Dokumentgenerierung erfordert erhebliche Programmierkenntnisse und Verständnis sowohl der Google Docs API als auch der Google Drive API.</p> </li> </ul> <h2 id="docugenerate-verwenden">DocuGenerate Verwenden</h2> <p>DocuGenerate verfolgt einen grundlegend anderen Ansatz zur Dokumentgenerierung. Anstatt imperative Programmierung zur Dokumentänderung zu erfordern, verwendet es ein deklaratives Vorlagensystem, bei dem die gesamte Logik und Struktur direkt in der Vorlage selbst definiert werden.</p> <ul> <li> <p><strong>Vorlagenzentriertes Design</strong>: Mit DocuGenerate erstellen Sie Ihre Vorlagen mit vertrauten Word-Dokumenten und betten <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> direkt in die Vorlage ein. Diese Tags definieren nicht nur einfache Textersetzungen, sondern auch komplexe Datenstrukturen wie Listen, Tabellen und bedingte Inhalte.</p> </li> <li> <p><strong>Einzelner API-Aufruf</strong>: Die Dokumentgenerierung erfolgt mit einem <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">einzigen API-Aufruf</a> oder über die Web-Oberfläche. Sie geben Ihre Vorlagen-ID und Daten an, und DocuGenerate übernimmt intern alle Verarbeitungs-, Formatierungs- und Generierungsschritte.</p> </li> <li> <p><strong>Unterstützung für reichhaltige Datenstrukturen</strong>: DocuGenerate unterstützt nativ komplexe Datenstrukturen, einschließlich dynamischer Listen, Tabellen, bedingter Inhalte, Bildeinfügung, QR-Codes und erweiterter Formatierung.</p> </li> </ul> <p>So einfach ist der Ansatz von DocuGenerate:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">date</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">Date</span><span class="p">();</span>
<span class="kd">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="k">await</span> <span class="nf">fetch</span><span class="p">(</span><span class="dl">'</span><span class="s1">https://api.docugenerate.com/v1/document</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span>
  <span class="na">method</span><span class="p">:</span> <span class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span class="p">,</span>
  <span class="na">headers</span><span class="p">:</span> <span class="p">{</span>
    <span class="dl">'</span><span class="s1">Authorization</span><span class="dl">'</span><span class="p">:</span> <span class="dl">'</span><span class="s1">YOUR_API_KEY</span><span class="dl">'</span><span class="p">,</span>
    <span class="dl">'</span><span class="s1">Content-Type</span><span class="dl">'</span><span class="p">:</span> <span class="dl">'</span><span class="s1">application/json</span><span class="dl">'</span>
  <span class="p">},</span>
  <span class="na">body</span><span class="p">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">stringify</span><span class="p">({</span>
    <span class="na">template_id</span><span class="p">:</span> <span class="dl">'</span><span class="s1">TEMPLATE_ID</span><span class="dl">'</span><span class="p">,</span>
    <span class="na">data</span><span class="p">:</span> <span class="p">{</span>
        <span class="dl">"</span><span class="s2">customer-name</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Alice</span><span class="dl">"</span><span class="p">,</span>
        <span class="dl">"</span><span class="s2">date</span><span class="dl">"</span><span class="p">:</span> <span class="nx">date</span><span class="p">.</span><span class="nf">toDateString</span><span class="p">()</span>
    <span class="p">},</span>
    <span class="na">output_format</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.pdf</span><span class="dl">'</span>
  <span class="p">})</span>
<span class="p">});</span>

<span class="kd">const</span> <span class="nb">document</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">response</span><span class="p">.</span><span class="nf">json</span><span class="p">();</span>
<span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">Document generated:</span><span class="dl">'</span><span class="p">,</span> <span class="nb">document</span><span class="p">.</span><span class="nx">document_uri</span><span class="p">);</span>
</code></pre></div></div> <h2 id="funktionsvergleich">Funktionsvergleich</h2> <p>Um die praktischen Unterschiede zwischen Google Docs und DocuGenerate für die Dokumentgenerierung zu verstehen, haben wir die wichtigsten Funktionen in vier Hauptkategorien unterteilt. Jede Vergleichstabelle zeigt, wie die beiden Plattformen wesentliche Aspekte der Dokumentenautomatisierung handhaben, von der Vorlagenverwaltung bis zur Ausgabequalität.</p> <h3 id="vorlagenerstellung">Vorlagenerstellung</h3> <table class="table table-bordered"> <thead> <tr> <th>Funktion</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Vorlagenerstellung</strong></td> <td>Vorlagen in der Google-Docs-Oberfläche erstellt</td> <td>Vorlagen in Microsoft Word erstellt oder als DOCX-Dateien hochgeladen</td> </tr> <tr> <td><strong>Platzhaltersyntax</strong></td> <td>Einfache Textzeichenfolgen mit doppelter geschwungener Klammer</td> <td>Reichhaltige Zusammenführungs-Tag-Syntax für komplexe Datenstrukturen und <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">benutzerdefinierte Begrenzer</a></td> </tr> <tr> <td><strong>Versionskontrolle</strong></td> <td>Google-Docs-Revisionsverlauf</td> <td>Integrierte <a href="https://www.docugenerate.com/de/hilfe/articles/wie-stelle-ich-eine-vorlagenversion-wieder-her/">Vorlagenversionierung</a> und -verwaltung</td> </tr> <tr> <td><strong>Vorlagenverwaltung</strong></td> <td>Über Google Drive verwaltet</td> <td>Dedizierte Vorlagenverwaltung mit Freigabefunktionen</td> </tr> <tr> <td><strong>Zugriffskontrolle</strong></td> <td>Google-Drive-Freigabe und -Berechtigungen</td> <td>Rollenbasierte Zugriffskontrolle für <a href="https://www.docugenerate.com/de/hilfe/articles/einfuehrung-in-die-teamzusammenarbeit/">Teamzusammenarbeit</a></td> </tr> </tbody> </table> <h3 id="datenverarbeitung">Datenverarbeitung</h3> <table class="table table-bordered"> <thead> <tr> <th>Funktion</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Datenverarbeitung</strong></td> <td>Erfordert benutzerdefinierten Code zur Strukturierung und Formatierung</td> <td>Akzeptiert Daten in mehreren Formaten: <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-json-daten-generieren/">JSON</a>, <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-einer-excel-oder-csv-datei-generieren/">Excel oder CSV</a></td> </tr> <tr> <td><strong>Datenvorbereitung</strong></td> <td>Daten müssen vor API-Aufrufen verarbeitet und formatiert werden</td> <td>Automatische Datentypenerkennung und <a href="https://www.docugenerate.com/de/hilfe/articles/wie-formatiere-ich-daten-mit-filtern/">Formatierung</a></td> </tr> <tr> <td><strong>Komplexe Strukturen</strong></td> <td>Begrenzte Unterstützung ohne umfangreiche Programmierung</td> <td>Native Unterstützung für verschachtelte Datenstrukturen</td> </tr> <tr> <td><strong>Datentypbehandlung</strong></td> <td>Jeder Datentyp erfordert unterschiedliche API-Behandlung</td> <td>Einheitliche Behandlung aller Datentypen</td> </tr> <tr> <td><strong>Plattformintegration</strong></td> <td>Integrierte Integrationen mit allen wichtigen Plattformen</td> <td>Integrierte Integrationen mit <a href="https://www.docugenerate.com/de/integrationen/zapier/">Zapier</a>, <a href="https://www.docugenerate.com/de/integrationen/make/">Make</a>, <a href="https://www.docugenerate.com/de/integrationen/bubble/">Bubble</a> und weiteren</td> </tr> </tbody> </table> <h3 id="dynamische-inhalte">Dynamische Inhalte</h3> <table class="table table-bordered"> <thead> <tr> <th>Funktion</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Dynamische Listen</strong></td> <td>Erfordert programmgesteuerte <a href="https://developers.google.com/workspace/docs/api/how-tos/lists" rel="nofollow noopener">Listenmanipulation</a></td> <td><a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-listen-zu-einer-vorlage-hinzu/">Dynamische Listen</a> mit einfacher Vorlagensyntax</td> </tr> <tr> <td><strong>Variable Tabellen</strong></td> <td>Komplexe API-Aufrufe zum Einfügen und <a href="https://developers.google.com/workspace/docs/api/how-tos/tables" rel="nofollow noopener">Formatieren von Tabellen</a></td> <td><a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-tabellen-zu-einer-vorlage-hinzu/">Tabellen</a> automatisch aus Datenarrays generiert</td> </tr> <tr> <td><strong>Bedingter Inhalt</strong></td> <td>Anwendungslogik erforderlich, um zu bestimmen, was einzuschließen ist</td> <td><a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bedingungen-zu-einer-vorlage-hinzu/">Bedingte Abschnitte</a> direkt in Vorlagen definiert</td> </tr> <tr> <td><strong>Bildeinfügung</strong></td> <td><a href="https://developers.google.com/workspace/docs/api/how-tos/images" rel="nofollow noopener">Bilder</a> müssen über URL öffentlich zugänglich sein</td> <td><a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bilder-zu-einer-vorlage-hinzu/">Bildbehandlung</a> mit Skalierung und Positionierung</td> </tr> </tbody> </table> <h3 id="ausgabeformate">Ausgabeformate</h3> <table class="table table-bordered"> <thead> <tr> <th>Funktion</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Natives Format</strong></td> <td>Google-Docs-Format</td> <td><a href="https://www.docugenerate.com/de/hilfe/articles/zusammenfuehrungsformat-auswaehlen/">Mehrere Ausgabeformate</a>: PDF, DOCX, DOC, ODT, TXT, HTML, PNG</td> </tr> <tr> <td><strong>Exportoptionen</strong></td> <td>PDF, DOCX, ODT, RTF, TXT, HTML, EPUB</td> <td>Einstufige Konvertierung in das Zielformat</td> </tr> <tr> <td><strong>Ausgabequalität</strong></td> <td>Abhängig von Googles Konvertierungsalgorithmen</td> <td>Hochauflösende Generierung mit Beibehaltung der originalen Formatierung</td> </tr> <tr> <td><strong>Konsistenz</strong></td> <td>Variable Qualität bei verschiedenen Exportformaten</td> <td>Konsistente Ausgabequalität über alle Formate</td> </tr> <tr> <td><strong>Erweiterte Funktionen</strong></td> <td>Begrenzte Kontrolle über endgültige Formatierung</td> <td>Erweiterte PDF-Funktionen wie <a href="https://www.docugenerate.com/de/hilfe/articles/ein-pdf-am-ende-generierter-dokumente-anhaengen/">Zusammenführen mit vorhandenen Dateien</a></td> </tr> </tbody> </table> <h2 id="no-code-integration">No-Code-Integration</h2> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/zapier-google-docs.png" alt="Zapier-Integration für Google Docs"/></p> <p>No-Code- und Low-Code-Plattformen wie <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/">Zapier</a> haben die Art und Weise revolutioniert, wie Unternehmen Dokumentgenerierungs-Workflows automatisieren. Diese Plattformen ermöglichen es Benutzern, ausgeklügelte Automatisierungen ohne Code-Schreiben zu erstellen und machen die Dokumentgenerierung für nicht-technische Teammitglieder zugänglich. Die Integrationserfahrung variiert jedoch erheblich zwischen <a href="https://zapier.com/apps/google-docs/integrations">Google Docs</a> und <a href="https://zapier.com/apps/docugenerate/integrations">DocuGenerate</a>, insbesondere hinsichtlich der Vorlagenflexibilität und der Handhabung von Zusammenführungs-Tags.</p> <p>Zapiers Google-Docs-Integration demonstriert sowohl die Stärke als auch die Einschränkungen der Verwendung von Google Docs für die automatisierte Dokumentgenerierung. Wie in <a href="https://zapier.com/blog/create-autopopulate-google-docs-template/" target="_blank" rel="nofollow noopener">Zapiers Leitfaden</a> zur Erstellung und automatischen Befüllung von Google-Docs-Vorlagen beschrieben, erkennt die Plattform automatisch Zusammenführungs-Tags in Ihren Google-Docs-Vorlagen, die die Standard-<code class="language-plaintext highlighter-rouge">{{ }}</code>-Syntax verwenden.</p> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/template-field-names.png" alt="Feldnamen in einer Beispielvorlage" class="desktop-width-75"/></p> <p>Wenn Sie Ihren Zap konfigurieren, werden diese Platzhalter als Formularfelder erkannt, sodass Sie Daten aus Ihrer Trigger-App direkt Ihrer Vorlage zuordnen können, ohne manuelle Konfiguration. Obwohl diese automatische Erkennungsfunktion die Google-Docs-Integration nahtlos erscheinen lässt, schafft sie eine erhebliche Einschränkung: Sie sind auf die spezifische doppelte geschwungene Klammer <code class="language-plaintext highlighter-rouge">{{ }}</code>-Begrenzer-Syntax von Google festgelegt. Diese Einschränkung wird problematisch, wenn Ihre Vorlagen mit anderen Systemen koexistieren müssen, die mit dieser Syntax in Konflikt geraten könnten, oder wenn Sie andere Begrenzer verwenden möchten, die den vorhandenen Konventionen Ihrer Organisation entsprechen.</p> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/zapier-field-names.png" alt="Automatische Feldnamenerkennung in Zapier" class="desktop-width-75"/></p> <p>DocuGenerate verfolgt einen flexibleren Ansatz bei der Begrenzerkonfiguration. Obwohl es standardmäßig die doppelte geschwungene Klammer <code class="language-plaintext highlighter-rouge">{{ }}</code>-Syntax unterstützt, können Sie die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">Begrenzer anpassen</a>, um beliebige Zeichen zu verwenden, die Ihren Anforderungen entsprechen – eckige Klammern <code class="language-plaintext highlighter-rouge">[ ]</code>, einfache geschwungene Klammern <code class="language-plaintext highlighter-rouge">{ }</code> oder sogar benutzerdefinierte Zeichenfolgen wie spitze Klammern <code class="language-plaintext highlighter-rouge">&lt;&lt; &gt;&gt;</code>. Die praktischen Auswirkungen dieses Unterschieds werden in komplexen Automatisierungsszenarien deutlich. Mit Google Docs muss Ihr gesamter Workflow dem doppelten geschwungenen Klammerstandard entsprechen, was möglicherweise Vorlagenmodifikationen und sorgfältiges Inhaltsmanagement erfordert, um Konflikte zu vermeiden.</p> <h2 id="wann-was-waehlen">Wann Was Wählen</h2> <h3 id="google-docs-waehlen">Google Docs Wählen</h3> <ul> <li> <p><strong>Native Google-Workspace-Integration</strong>: Wenn Ihre Organisation stark in Google Workspace investiert ist und Sie bestehende Google-Docs-Workflows haben, kann es sinnvoll sein, auf dieser Grundlage aufzubauen.</p> </li> <li> <p><strong>Nur einfache Textersetzung</strong>: Für die grundlegende Dokumentgenerierung, die nur einfache Suchen-und-Ersetzen-Operationen ohne dynamische Inhaltsstrukturen erfordert.</p> </li> <li> <p><strong>Kollaborative Vorlagenbearbeitung</strong>: Wenn mehrere Teammitglieder an der Vorlagenerstellung zusammenarbeiten müssen und Sie die Echtzeit-Kollaborationsfunktionen von Google Docs nutzen möchten.</p> </li> <li> <p><strong>Benutzerdefinierte Dokumentenverarbeitung</strong>: Wenn Sie eine hochgradig angepasste Dokumentenverarbeitungslogik benötigen, die über die Standard-Dokumentgenerierungsmuster hinausgeht.</p> </li> </ul> <h3 id="docugenerate-waehlen">DocuGenerate Wählen</h3> <ul> <li> <p><strong>Komplexe Dokumentvorlagen</strong>: Wenn Ihre Dokumente dynamische Listen, Tabellen, bedingte Inhalte oder Bildeinfügung erfordern.</p> </li> <li> <p><strong>Schnelle Implementierung</strong>: Wenn Sie die Dokumentgenerierung schnell ohne umfangreichen Entwicklungsaufwand zum Laufen bringen müssen.</p> </li> <li> <p><strong>Massendokumentgenerierung</strong>: Für die Generierung großer Dokumentmengen aus Datensätzen (Excel, CSV, JSON).</p> </li> <li> <p><strong>Vorlagenverwaltung</strong>: Wenn Sie Versionskontrolle, Freigabe und Verwaltungsfunktionen benötigen, die speziell für Dokumentvorlagen entwickelt wurden.</p> </li> <li> <p><strong>Mehrere Ausgabeformate</strong>: Wenn Sie Dokumente in verschiedenen Formaten (PDF, Word usw.) aus derselben Vorlage generieren müssen.</p> </li> </ul> <h2 id="fazit">Fazit</h2> <p>Sowohl Google Docs als auch DocuGenerate bieten praktikable Ansätze zur Dokumentgenerierung, dienen jedoch unterschiedlichen Anforderungen und Anwendungsfällen. <a href="#google-docs-verwenden">Google Docs</a> glänzt, wenn Sie eine tiefe Integration mit Google Workspace benötigen und über die technischen Ressourcen verfügen, um benutzerdefinierte Dokumentgenerierungs- lösungen zu erstellen. Es erfordert jedoch erhebliches Programmierfachwissen und laufende Wartung für komplexe Dokumentvorlagen.</p> <p><a href="#docugenerate-verwenden">DocuGenerate</a> hingegen ist speziell für die Dokumentgenerierung entwickelt worden und bietet einen deklarativeren, vorlagenzentrierteren Ansatz, der Komplexität und Entwicklungsaufwand reduziert. Es eignet sich besonders gut für Organisationen, die komplexe Dokumente schnell generieren, mit No-Code-Plattformen integrieren oder große Dokumentgenerierungs-Workflows verwalten müssen.</p> <p>Wenn Sie derzeit Google Docs für die Dokumentgenerierung verwenden und DocuGenerate in Betracht ziehen, ist der Migrationsprozess typischerweise unkomplizierter als erwartet. Ihre bestehenden Google-Docs-Vorlagen können in das Word-Format konvertiert und mit der Zusammenführungs-Tag-Syntax von DocuGenerate erweitert werden – ein Prozess, der oft Möglichkeiten zur Vereinfachung komplexer Logik aufzeigt, die zuvor im Code eingebettet war.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://developers.google.com/workspace/docs/api/how-tos/merge" target="_blank" rel="nofollow noopener">Google Docs: Text in ein Dokument zusammenführen</a> für Googles Ansatz zur Dokumentgenerierung.</li> <li><a href="https://zapier.com/blog/create-autopopulate-google-docs-template/" target="_blank" rel="nofollow noopener">So erstellen und befüllen Sie eine Google-Docs-Vorlage automatisch</a> Zapier-Tutorial.</li> <li><a href="https://www.docugenerate.com/de/vorlagen/">Vorlagenbibliothek von DocuGenerate</a> mit gebrauchsfertigen Vorlagen für gängige Anwendungsfälle.</li> <li><a href="https://www.docugenerate.com/de/hilfe/">Help Center von DocuGenerate</a> mit erweiterten DocuGenerate-Funktionen und Integrationsleitfäden.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Compare"/> <category term="Google Docs"/> <category term="No-Code"/> <summary type="html"><![CDATA[Entdecken Sie die wesentlichen Unterschiede zwischen Google Docs und DocuGenerate für die automatisierte Dokumentgenerierung. Erfahren Sie, welche Lösung besser für die Erstellung dynamischer Vorlagen mit Listen, Tabellen, Bildern und komplexer Datenzusammenführung für Ihre Geschäftsworkflows geeignet ist.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/022-google-docs-compare/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/022-google-docs-compare/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Einführung der Vorlagen-Versionshistorie</title> <link href="https://www.docugenerate.com/de/blog/einfuehrung-der-vorlagen-versionshistorie/" rel="alternate" type="text/html" title="Einführung der Vorlagen-Versionshistorie"/> <published>2025-05-27T00:00:00+00:00</published> <updated>2025-05-27T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/einfuehrung-der-vorlagen-versionshistorie</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/einfuehrung-der-vorlagen-versionshistorie/"><![CDATA[<h2 id="was-ist-die-versionshistorie">Was ist die Vorlagen-Versionshistorie?</h2> <p>Die Vorlagen-Versionshistorie ist eine leistungsstarke neue Funktion, die frühere Versionen Ihrer Vorlagen automatisch speichert, wenn Sie Änderungen vornehmen. So erhalten Sie einen vollständigen Verlauf der Entwicklung Ihrer Vorlagen über die Zeit und können bei Bedarf frühere Versionen wiederherstellen.</p> <p>Bisher wurde bei jeder Aktualisierung einer Vorlagendatei in DocuGenerate die vorherige Version dauerhaft überschrieben. Viele unserer Nutzer umgingen diese Einschränkung, indem sie Versionen manuell verfolgten und Suffixe wie V1, V2 usw. oder andere Nummerierungsschemata zu ihren Vorlagennamen hinzufügten. Dieser Ansatz funktionierte, war jedoch umständlich und fehleranfällig.</p> <p>Basierend auf Nutzerfeedback und Feature-Anfragen haben wir ein robustes Versionsverwaltungssystem entwickelt, das alle Änderungen an Ihren Vorlagen in DocuGenerate automatisch verfolgt und so die Notwendigkeit einer manuellen Versionsverfolgung entfällt.</p> <h2 id="warum-die-versionshistorie-wichtig-ist">Warum die Versionshistorie Wichtig ist</h2> <p>Die Versionsverwaltung von Vorlagen löst mehrere kritische Herausforderungen, mit denen Dokumentenerersteller täglich konfrontiert werden. Da Unternehmen zunehmend auf Vorlagen für Konsistenz und Effizienz in ihren Dokumenten-Workflows angewiesen sind, wird die Notwendigkeit einer zuverlässigen Versionskontrolle essenziell. Mit dieser Funktion können Sie die Integrität Ihrer Vorlagen wahren und gleichzeitig notwendige Änderungen und Verbesserungen im Laufe der Zeit vornehmen.</p> <p><strong>1. Schutz vor Versehentlichen Änderungen</strong><br/> Jeder macht Fehler. Ob versehentliches Hochladen der falschen Datei oder unbeabsichtigte Änderungen an einer Vorlage – die Versionshistorie bietet ein Sicherheitsnetz, mit dem Sie schnell eine frühere Version wiederherstellen können.</p> <p><strong>2. Verfolgung der Vorlagenentwicklung</strong><br/> Wenn sich Ihre Geschäftsprozesse weiterentwickeln, tun dies auch Ihre Vorlagen. Die Versionshistorie gibt Ihnen Einblick in die Entwicklung Ihrer Vorlagen über die Zeit und hilft Ihnen, die Evolution Ihres Dokumentengenerierungsprozesses zu verstehen.</p> <p><strong>3. Compliance- und Audit-Anforderungen</strong><br/> Für Unternehmen in regulierten Branchen kann ein Nachweis über Vorlagenänderungen für Compliance- und Auditszwecke entscheidend sein. Die Versionshistorie dokumentiert, was sich geändert hat und wann.</p> <h2 id="wie-die-versionshistorie-funktioniert">Wie die Vorlagen-Versionshistorie Funktioniert</h2> <h3 id="versionierung-aktivieren">Versionierung Aktivieren</h3> <p>Diese Funktion ist ausschließlich in unseren neuen Premium- und Business-Plänen verfügbar, wie auf unserer <a href="https://www.docugenerate.com/de/preise/">Preisseite</a> beschrieben. Wenn Sie einen älteren Plan nutzen, können Sie diesen weiterhin unbegrenzt verwenden. Um jedoch von der Vorlagen-Versionshistorie zu profitieren, müssen Sie auf einen dieser neuen Pläne upgraden.</p> <p>Für bestehende Vorlagen ist die Versionierung nicht standardmäßig aktiviert, kann jedoch über die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktiviere-ich-den-versionsverlauf/">Vorlageneinstellungen</a> in der Web-App aktiviert werden:</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/enable-versioning.png" alt="Versionierung in den Vorlageneinstellungen aktivieren" class="desktop-width-75"/></p> <p>Alternativ können Sie die Versionierung über unsere API aktivieren, indem Sie den Parameter <code class="language-plaintext highlighter-rouge">versioning_enabled</code> beim <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">Aktualisieren einer Vorlage</a> auf <code class="language-plaintext highlighter-rouge">true</code> setzen:</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/update-template-api.png" alt="Parameter für den Vorlagen-Aktualisierungsendpunkt"/></p> <p>Für neue Vorlagen ist die Versionierung standardmäßig aktiviert, wenn Ihr Konto Zugang zu dieser Funktion hat. Beim <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">Erstellen einer Vorlage</a> über die API können Sie den Parameter <code class="language-plaintext highlighter-rouge">versioning_enabled</code> explizit auf <code class="language-plaintext highlighter-rouge">true</code> oder <code class="language-plaintext highlighter-rouge">false</code> setzen.</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/create-template-api.png" alt="Parameter für den Vorlagen-Erstellungsendpunkt"/></p> <h3 id="wann-neue-versionen-erstellt-werden">Wann Neue Versionen Erstellt Werden</h3> <p>Sobald die Versionierung für eine Vorlage aktiviert ist, wird automatisch eine neue Version gespeichert, wenn Sie die <strong>Vorlagendatei aktualisieren</strong>. Wichtig: Änderungen an Vorlagen-Metadaten (wie Name oder andere Einstellungen) erstellen keine neuen Versionen. Nur tatsächliche Änderungen an der Vorlagendatei selbst lösen die Erstellung einer neuen Version aus.</p> <p>Dieser fokussierte Ansatz stellt sicher, dass Ihre Versionshistorie relevant bleibt und nicht mit kleineren Metadatenänderungen überladen wird, die keine Auswirkungen auf die Dokumentengenerierung haben. Indem wir nur wesentliche Änderungen am Vorlageninhalt verfolgen, helfen wir Ihnen, eine übersichtliche und aussagekräftige Versionshistorie zu pflegen, die die tatsächliche Entwicklung Ihres Vorlagendesigns und Ihrer Funktionalität hervorhebt und es einfacher macht zu erkennen, wann und wie wichtige Änderungen vorgenommen wurden.</p> <h3 id="vorlagenversionen-verwalten">Vorlagenversionen Verwalten</h3> <p>In der Vorlagendetailansicht finden Sie ein neues <strong>Versions</strong>-Panel, das alle gespeicherten Versionen Ihrer Vorlage anzeigt. Die aktuell aktive Version ist mit einem Stern-Symbol hervorgehoben:</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/versions-panel.png" alt="Versionen-Panel in der Vorlagendetailansicht" class="desktop-width-75"/></p> <p>Wenn Sie auf eine Version in der Liste klicken, wird eine Vorschau dieser Version im linken Bereich angezeigt, sodass Sie den Inhalt vor einer Aktion überprüfen können. Für jede Version sind folgende Aktionen möglich:</p> <ul> <li> <p><strong>Restore:</strong> Diese Aktion ersetzt die aktuelle Vorlagendatei durch die ausgewählte Version und aktualisiert auch die Vorlageneinstellungen (Name, Begrenzer, Tags usw.) dieser Version. Nach der Wiederherstellung wird die ausgewählte Version zur aktuellen aktiven Version.</p> </li> <li> <p><strong>Download:</strong> Diese Aktion ermöglicht das Herunterladen einer bestimmten Version der Vorlagendatei auf Ihr lokales Gerät. Dies ist nützlich, wenn Sie eine frühere Version offline überprüfen oder bearbeiten möchten.</p> </li> <li> <p><strong>Delete:</strong> Wenn Sie eine bestimmte Version nicht mehr benötigen, können Sie sie ganz einfach aus Ihrer Historie entfernen. Beachten Sie, dass diese Aktion dauerhaft und nicht rückgängig zu machen ist – gehen Sie daher vorsichtig damit um.</p> </li> </ul> <p>Es gibt keine Begrenzung der Anzahl von Versionen, die für eine Vorlage gespeichert werden können, und bietet Ihnen so einen umfassenden historischen Überblick über die Entwicklung Ihrer Vorlage.</p> <h2 id="ueberlegungen-zur-multi-region">Überlegungen zur Multi-Region</h2> <p>Wenn Sie unsere Funktion zur <a href="https://www.docugenerate.com/de/blog/multi-region-verarbeitung-und-speicherung-vorgestellt/">Multi-Region-Verarbeitung und -Speicherung</a> nutzen, ist es wichtig zu verstehen, wie die Versionierung mit Regionseinstellungen interagiert. Diese Interaktion beeinflusst, wo Ihre historischen Vorlagenversionen gespeichert werden und wie sie verwaltet werden, wenn Sie die Region einer Vorlage ändern, was Compliance-Anforderungen und Data-Governance-Richtlinien beeinflussen kann.</p> <p>Vorlagenversionen werden immer in der aktuellen Region der Vorlage gespeichert. Wenn Sie die Region einer Vorlage ändern (z. B. von USA nach EU), wird nur die aktuelle Vorlagendatei in die neue Region verschoben. Frühere Versionen verbleiben in der ursprünglichen Region.</p> <p>Neue Versionen, die nach dem Regionswechsel gespeichert werden, werden jedoch in der neuen Region gespeichert. Das bedeutet, dass die Versionshistorie Ihrer Vorlage mit der Zeit mehrere Regionen umspannen kann. Dieser Ansatz minimiert Datentransfers und stellt gleichzeitig sicher, dass sich Ihre aktuelle Vorlage immer in der von Ihnen angegebenen Region befindet.</p> <h2 id="team-zusammenarbeit">Berechtigungen für Teammitglieder</h2> <p>Für Nutzer, die Vorlagen mit <a href="https://www.docugenerate.com/de/hilfe/articles/einfuehrung-in-die-teamzusammenarbeit/">Teammitgliedern</a> teilen, verbessert die Versionshistorie die Zusammenarbeit auf verschiedene Arten, abhängig von der Berechtigungsstufe:</p> <ul> <li> <p>Teammitglieder mit <strong>Write</strong>-Berechtigung können Vorlagen aktualisieren, frühere Versionen wiederherstellen und Versionen aus der Historie löschen. Sie haben umfassende Kontrolle über das Vorlagenmanagement, ähnlich dem Vorlageninhaber, mit der einzigen Ausnahme, dass sie die Vorlage selbst nicht löschen können.</p> </li> <li> <p>Teammitglieder mit <strong>Read</strong>-Berechtigung können Vorlagenversionen nur anzeigen und herunterladen. Sie können keine Änderungen an der aktuellen Vorlage vornehmen oder frühere Versionen wiederherstellen. Bei der Ansicht einer Vorlage mit reiner Leseberechtigung sehen sie eine vereinfachte Version des Versionen-Panels:</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/team-member-read-v2.png" alt="Versionen-Panel-Ansicht für Teammitglied mit Leseberechtigung" class="desktop-width-75"/></p> </li> </ul> <p>Dieser berechtigungsbasierte Ansatz stellt sicher, dass Teammitglieder je nach ihrer Rolle im Zusammenarbeitsprozess angemessenen Zugriff auf die Versionshistorie haben. Teamleiter können Bearbeitungsverantwortlichkeiten für Vorlagen selbstsicher delegieren und dabei die Übersicht behalten, und Teammitglieder mit reiner Leseberechtigung können weiterhin von der Entwicklungshistorie der Vorlage profitieren, ohne das Risiko unbeabsichtigter Änderungen.</p> <h2 id="api-einschraenkungen">API-Einschränkungen</h2> <p>Um unsere API einfach und fokussiert zu halten, ist das Verwalten von Vorlagenversionen nur über die Web-App möglich. Bei der Verwendung der API interagieren Sie immer mit der aktuellen Version einer Vorlage. Das bedeutet:</p> <ul> <li>Sie können Vorlagenversionen über die API nicht auflisten, wiederherstellen oder löschen.</li> <li>Die Dokumentengenerierung verwendet immer die neueste Version der Vorlage.</li> <li>Sie können die Versionierung für eine Vorlage über die API aktivieren oder deaktivieren, aber die Versionen selbst nicht verwalten.</li> </ul> <p>Diese Designentscheidung hält die API unkompliziert und bietet dennoch die Flexibilität, die Versionierung für über die API erstellte oder aktualisierte Vorlagen zu aktivieren.</p> <h2 id="anwendungsszenarien">Anwendungsszenarien</h2> <p>Lassen Sie uns einige reale Szenarien erkunden, in denen die Vorlagen-Versionshistorie erheblichen Mehrwert bieten kann:</p> <h3 id="szenario-versehentliche-aenderungen">Szenario 1: Wiederherstellung nach Versehentlichen Änderungen</h3> <p>Ein Mitglied des <strong>Marketing-Teams</strong> lädt versehentlich die falsche Datei hoch, wenn es eine kritische Kundenkommunikationsvorlage aktualisiert, und überschreibt die korrekte Version mit einem unvollständigen Entwurf.</p> <p>Der Teamleiter entdeckt den Fehler, öffnet die Vorlage in DocuGenerate, navigiert zum Versionen-Panel, findet die letzte korrekte Version und klickt auf <strong>Restore</strong>. Innerhalb von Sekunden ist die Vorlage wieder in ihrem richtigen Zustand, <strong>ohne Unterbrechung</strong> des Geschäftsbetriebs.</p> <p>Ohne Versionshistorie müsste das Team die Vorlage von Grund auf neu erstellen oder hoffen, dass jemand eine lokale Kopie der richtigen Version hat, was möglicherweise zu Verzögerungen in der Kundenkommunikation führen würde.</p> <h3 id="szenario-compliance">Szenario 2: Vorlagenentwicklung und Compliance</h3> <p>Ein Unternehmen aus dem <strong>Finanzdienstleistungsbereich</strong> muss Aufzeichnungen darüber führen, wie sich seine Kundenvertragsvorlagen im Laufe der Zeit verändert haben, um regulatorische Compliance-Anforderungen zu erfüllen.</p> <p>Mit aktivierter Versionierung kann das Compliance-Team die <strong>vollständige Historie</strong> der Vorlagenänderungen einsehen, bestimmte Versionen für <strong>Auditszwecke</strong> herunterladen und Regulatoren eine klare Zeitlinie der Vorlagenentwicklung nachweisen.</p> <p>Ohne Versionshistorie müsste das Unternehmen einen manuellen Prozess zur Verfolgung von Vorlagenänderungen einführen und möglicherweise Kopien von Vorlagen unter verschiedenen Dateinamen oder an verschiedenen Orten speichern, was den Auditprozess komplexer und fehleranfälliger machen würde.</p> <h3 id="szenario-kollaboration">Szenario 3: Kollaborative Vorlagenentwicklung</h3> <p>Ein <strong>Rechtsteam</strong> entwickelt gemeinsam eine neue Vertragsvorlage, wobei mehrere Teammitglieder über mehrere Wochen Beiträge und Verfeinerungen einbringen.</p> <p>Während Teammitglieder <strong>Änderungen vornehmen</strong>, wird jede Aktualisierung automatisch als neue Version gespeichert. Wenn eine bestimmte Änderung Probleme einführt oder den Anforderungen nicht entspricht, ist es einfach, eine <strong>frühere Version</strong> wiederherzustellen. Das Team kann außerdem die Entwicklung der Vorlage im Laufe der Zeit nachverfolgen, um zu verstehen, wie sie sich entwickelt hat.</p> <p>Ohne Versionshistorie müsste das Team Änderungen manuell koordinieren und möglicherweise mehrere Kopien der Vorlage mit verschiedenen Dateinamen pflegen, was zu Verwirrung darüber führen könnte, welche Version die neueste oder genaueste ist.</p> <h2 id="best-practices">Best Practices für die Versionsverwaltung</h2> <p>Um das Beste aus dieser Funktion herauszuholen, beachten Sie folgende Best Practices:</p> <ol> <li> <p><strong>Versionierung für Kritische Vorlagen Aktivieren</strong><br/> Obwohl Sie möglicherweise nicht für jede Vorlage eine Versionierung benötigen, ist sie besonders wertvoll für häufig verwendete Vorlagen, komplexe Logik oder kritische Geschäftsabläufe.</p> </li> <li> <p><strong>Sinnvolle Vorlagen-Updates Durchführen</strong><br/> Versuchen Sie beim Bearbeiten einer Vorlage, zusammenhängende Änderungen zu bündeln, anstatt viele kleine inkrementelle Updates vorzunehmen. Dies hält Ihre Versionshistorie übersichtlich und aussagekräftig.</p> </li> <li> <p><strong>Versionshistorie Regelmäßig Überprüfen</strong><br/> Nehmen Sie sich gelegentlich Zeit, Ihre Vorlagen-Versionshistorie zu überprüfen und unnötige Versionen zu bereinigen. Obwohl es derzeit keine Begrenzung der Versionenanzahl gibt, macht eine fokussierte Historie die Navigation einfacher.</p> </li> <li> <p><strong>Wesentliche Änderungen Dokumentieren</strong><br/> Obwohl DocuGenerate automatisch verfolgt, wann Änderungen vorgenommen wurden, erfasst es nicht den Zweck oder die Absicht hinter diesen Änderungen. Erwägen Sie, ein separates Änderungsprotokoll für wichtige Vorlagen-Updates zu führen.</p> </li> <li> <p><strong>Team-Berechtigungen Durchdacht Vergeben</strong><br/> Wenn Sie Vorlagen mit Teammitgliedern teilen, überlegen Sie sorgfältig, welche Mitglieder „Schreib”-Zugriff benötigen. Für Nutzer, die nur Dokumente generieren müssen, ist der „Lese”-Zugriff ausreichend.</p> </li> </ol> <h2 id="fazit">Fazit</h2> <p>Die Vorlagen-Versionshistorie stellt eine bedeutende Verbesserung der Vorlagenverwaltungsfähigkeiten von DocuGenerate dar. Durch automatisches Verfolgen von Änderungen und Bereitstellen von Werkzeugen zur <a href="https://www.docugenerate.com/de/hilfe/articles/wie-stelle-ich-eine-vorlagenversion-wieder-her/">Wiederherstellung früherer Versionen</a> bietet diese Funktion Sicherheit, fördert die Zusammenarbeit und trägt zur Wahrung der Integrität Ihres Dokumentengenerierungsprozesses bei.</p> <p>Wir freuen uns darauf zu sehen, wie diese Funktion Ihre Dokumentengenerierungs-Workflows verbessert und Ihrem Team hilft, effizienter und souveräner mit Vorlagen zu arbeiten. Wie immer freuen wir uns über Ihr Feedback und Ihre Vorschläge, während wir die Fähigkeiten von DocuGenerate weiter verbessern und ausbauen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktiviere-ich-den-versionsverlauf/">Wie aktiviere ich den Versionsverlauf?</a></li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-stelle-ich-eine-vorlagenversion-wieder-her/">Wie stelle ich eine Vorlagenversion wieder her?</a></li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Product Update"/> <category term="Web App"/> <category term="Templates"/> <summary type="html"><![CDATA[Die neue Vorlagen-Versionshistorie bietet die Möglichkeit, frühere Versionen Ihrer Vorlagen zu verfolgen, wiederherzustellen und zu verwalten. Diese leistungsstarke Ergänzung schützt vor versehentlichen Änderungen und bietet ein Sicherheitsnetz für Ihre wichtigen Vorlagen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/021-template-version-history/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/021-template-version-history/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Event-RSVP-Tickets mit Xano und DocuGenerate Automatisieren</title> <link href="https://www.docugenerate.com/de/blog/event-rsvp-tickets-mit-xano-und-docugenerate-automatisieren/" rel="alternate" type="text/html" title="Event-RSVP-Tickets mit Xano und DocuGenerate Automatisieren"/> <published>2025-04-13T00:00:00+00:00</published> <updated>2025-04-13T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/event-rsvp-tickets-mit-xano-und-docugenerate-automatisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/event-rsvp-tickets-mit-xano-und-docugenerate-automatisieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Die Verwaltung von Event-RSVPs ist eine häufige Herausforderung für Veranstalter, und die sofortige Bereitstellung von Bestätigungstickets verbessert das Erlebnis der Teilnehmer und hält Sie organisiert. In diesem Tutorial lernen Sie, wie Sie ein automatisiertes Event-Ticketing-System mit <a href="https://www.xano.com/" target="_blank" rel="noopener">Xano</a> für die Backend-Logik und <a href="https://www.docugenerate.com">DocuGenerate</a> für die PDF-Generierung aufbauen. Wir arbeiten mit Xanos <a href="https://gitlab.com/xano-marketplace/xano-events" target="_blank" rel="nofollow noopener">Events</a>-Vorlage aus ihrem Marketplace, die ein einsatzbereites Veranstaltungsmanagementsystem mit RSVP-Funktionalität bereitstellt.</p> <p>Am Ende dieses Tutorials generiert Ihr System automatisch personalisierte PDF-Tickets, wenn jemand eine RSVP für eine Veranstaltung einreicht – vollständig mit Veranstaltungsdetails und Teilnehmerinformationen. Dieser automatisierte Ansatz eliminiert die manuelle Ticket-Erstellung und stellt für alle Ihre Veranstaltungen konsistente, professionell aussehende Tickets sicher. Der Workflow, den Sie erstellen werden, folgt diesem Prozess:</p> <ol> <li>Ein Teilnehmer füllt über eine Demo-Anwendung ein RSVP-Formular für eine Veranstaltung aus.</li> <li>Die RSVP-Daten werden in Ihrer Xano-Datenbank gespeichert.</li> <li>Ein Datenbank-Trigger erkennt den neuen RSVP-Datensatz.</li> <li>Der Trigger ruft die Veranstaltungsdetails ab und generiert ein PDF-Ticket mit DocuGenerate.</li> <li>Das generierte Ticket ist zur Verteilung an den Teilnehmer bereit.</li> </ol> <p>Das System kann mehrere Veranstaltungen gleichzeitig verwalten, was es für Organisationen geeignet macht, die mehrere gleichzeitig laufende Veranstaltungen betreuen.</p> <h2 id="events-vorlage-installieren">Die Xano Events-Vorlage Installieren</h2> <p>Xanos Marketplace stellt vorgefertigte Vorlagen bereit, die Sie direkt in Ihren Workspace installieren können. Die <strong>Events</strong>-Vorlage bietet ein vollständiges Veranstaltungsmanagementsystem für die Sammlung und Verwaltung von Event-RSVPs. Sie enthält Funktionalität zum Veröffentlichen neuer Veranstaltungen mit Bannerbild, Beschreibung und Datum sowie für die Erfassung von RSVP-Informationen wie Teilnehmernamen und E-Mail-Adressen.</p> <p>Navigieren Sie zunächst zur <strong>Marketplace</strong>-Seite in Ihrem Workspace und suchen Sie die <strong>Events</strong>-Vorlage in den <strong>Starter templates</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/xano-events-template.png" alt="Die Events-Vorlage aus dem Xano Marketplace"/></p> <p>Klicken Sie auf <strong>Get Template</strong>, um die Vorlage in Ihrem Workspace zu installieren. Sie sollten eine Erfolgsmeldung sehen, die bestätigt, dass die Vorlage jetzt in Ihrem Workspace verfügbar ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/events-template-installed.png" alt="Events-Vorlage im Workspace installiert"/></p> <p>Nach der Installation finden Sie folgende Komponenten in Ihrem Workspace.</p> <h3 id="vorlage-datenbanktabellen">Datenbanktabellen</h3> <ul> <li><code class="language-plaintext highlighter-rouge">event</code>: Speichert Veranstaltungsinformationen einschließlich Name, Beschreibung, Titelbild, Start- und Enddatum. Die Vorlage enthält 6 Beispiel-Datensätze.</li> <li><code class="language-plaintext highlighter-rouge">RSVP</code>: Speichert Teilnehmerantworten mit Name, E-Mail und einem Verweis auf die Veranstaltung. Die Vorlage enthält 13 Beispiel-Datensätze.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/database-tables.png" alt="Die Events-Datenbanktabellen"/></p> <h3 id="vorlage-api-endpunkte">API-Endpunkte</h3> <p>Die Vorlage erstellt eine <strong>Events</strong>-API-Gruppe mit Endpunkten für die Verwaltung von Veranstaltungen und RSVPs. Diese Endpunkte verwalten alle CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) für Ihre Veranstaltungsdaten. Sie können diese Endpunkte in der <strong>events</strong>-API-Gruppe in Ihrem Xano-Workspace anzeigen, wo Sie auch eine <strong>Copy base URL</strong>-Schaltfläche finden, die nützlich ist, wenn Sie die <a href="#demo-anwendung">Demo-Anwendung</a> verbinden.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/events-api-group.png" alt="Die Events-API-Gruppe mit Endpunkten"/></p> <h3 id="vorlage-add-ons">Add-ons</h3> <p>Die Vorlage enthält ein <code class="language-plaintext highlighter-rouge">rsvp_count</code>-Add-on, das automatisch die Anzahl der RSVPs für jede Veranstaltung berechnet und so die Nachverfolgung der Teilnehmerzahlen vereinfacht.</p> <h2 id="demo-anwendung">Die Demo-Anwendung Erkunden</h2> <p>Klicken Sie nach der <a href="#events-vorlage-installieren">Installation</a> auf <strong>Explore live demo</strong>, um die Events-Vorlage in Aktion zu sehen. Xano stellt die Backend-Infrastruktur bereit, aber Sie benötigen eine Frontend-Anwendung, um mit Ihrer API zu interagieren. Die von Xano bereitgestellte <a href="https://demo.xano.com/xano-events/" target="_blank" rel="nofollow noopener">Demo-App</a> ermöglicht es Ihnen, die volle Funktionalität zu testen.</p> <p>Um die Demo-App mit Ihrem Xano-Backend zu verbinden, müssen Sie Ihre API-URL angeben. Finden Sie diese, indem Sie zur <strong>events</strong>-<a href="#vorlage-api-endpunkte">API-Gruppe</a> in Ihrem Workspace navigieren und auf <strong>Copy base URL</strong> klicken. Fügen Sie diese URL in das Konfigurationsfeld der Demo-App ein.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/xano-events-demo.png" alt="Events Demo-App"/></p> <p>Die Demo-App bietet mehrere Schlüsselfunktionen: Anzeige aller Veranstaltungen in einem Kartenlayout mit Endlos-Scroll, Suche nach Veranstaltungen nach Name, Erstellen neuer Veranstaltungen mit Titelbildern und Beschreibungen, Anzeige vollständiger Veranstaltungsdetails und Einreichen von RSVPs mit Name und E-Mail. Die App ist voll funktionsfähig und zeigt, wie die API-Endpunkte zusammenarbeiten, um ein zusammenhängendes Veranstaltungsmanagementsystem zu schaffen.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/xano-events-app.png" alt="Xano Events-App mit Veranstaltungskarten"/></p> <p>Die in der Demo-App angezeigten Veranstaltungen entsprechen direkt den Datensätzen in Ihrer <a href="#vorlage-datenbanktabellen">Datenbanktabelle</a> <code class="language-plaintext highlighter-rouge">event</code>, die bei der Installation der Vorlage vorab befüllt wurden.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/event-database-table.png" alt="Veranstaltungsdatenbank mit Beispieldatensätzen"/></p> <h2 id="rsvp-ablauf-verstehen">Den RSVP-Ablauf Verstehen</h2> <p>Klicken Sie auf eine Veranstaltung, um Details anzuzeigen. Sie sehen Informationen zur Veranstaltung zusammen mit einer <strong>Details</strong>-Schaltfläche für weitere Informationen und einer <strong>RSVP</strong>-Schaltfläche zum Einreichen Ihrer Teilnahme.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/festival-event-details.png" alt="Details der Veranstaltung &quot;Festival&quot;"/></p> <p>Das RSVP-Formular ist bewusst einfach gehalten und fragt nur nach Name und E-Mail-Adresse. Dieser minimalistische Ansatz reduziert die Hürde und fördert mehr RSVPs. Wenn jemand dieses Formular einreicht, wird ein neuer Datensatz in der <a href="#vorlage-datenbanktabellen">Datenbanktabelle</a> <code class="language-plaintext highlighter-rouge">RSVP</code> erstellt.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/festival-event-rsvp.png" alt="RSVP-Formular für die Veranstaltung &quot;Festival&quot;"/></p> <p>Sie können alle RSVP-Datensätze in Ihrem Xano-Workspace anzeigen, indem Sie zur <a href="#vorlage-datenbanktabellen">Datenbanktabelle</a> <code class="language-plaintext highlighter-rouge">RSVP</code> navigieren, die die vorausgefüllten Beispieldaten aus der Vorlageninstallation zeigt.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/rsvp-database-table.png" alt="RSVP-Datenbanktabelle mit Beispieldatensätzen"/></p> <p>Nachdem Sie verstehen, wie die Events-Vorlage funktioniert, erweitern wir sie jetzt durch die automatische Generierung von PDF-Tickets, wenn jemand eine RSVP für eine Veranstaltung einreicht.</p> <h2 id="datenbank-trigger-erstellen">Den Datenbank-Trigger Erstellen</h2> <p><a href="https://docs.xano.com/the-function-stack/building-with-visual-development/triggers" target="_blank" rel="nofollow noopener">Trigger</a> in Xano ermöglichen die Ausführung benutzerdefinierter Workflows, wenn bestimmte Datenbankereignisse eintreten. Wir erstellen einen Trigger, der ausgelöst wird, wenn ein neuer RSVP-Datensatz in die Datenbank eingefügt wird. Dieser Trigger verarbeitet die gesamte Logik für die Generierung und potenziell die Verteilung von Veranstaltungstickets. Beachten Sie, dass Datenbank-Trigger ein Premium-Feature in Xano sind und im kostenlosen Plan nicht verfügbar sind.</p> <p>Um einen Trigger zu erstellen, navigieren Sie zur <code class="language-plaintext highlighter-rouge">RSVP</code>-Tabelle in Ihrer Datenbankansicht und klicken Sie auf <strong>+ Trigger</strong>, dann wählen Sie <strong>+ Add database trigger and continue</strong>. Konfigurieren Sie Ihren Trigger mit den folgenden Einstellungen:</p> <ul> <li><strong>Name</strong>: Geben Sie zum Beispiel “New RSVP Answer” ein</li> <li><strong>Data Sources</strong>: Leer lassen (das bedeutet, der Trigger wird für alle Datenquellen ausgeführt)</li> <li><strong>Actions</strong>: Nur <strong>Inserts</strong> auswählen (der Trigger soll nur ausgelöst werden, wenn neue RSVP-Datensätze erstellt werden, nicht wenn sie aktualisiert oder gelöscht werden)</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/new-rsvp-answer-trigger-create.png" alt="Den &quot;New RSVP Answer&quot;-Trigger erstellen"/></p> <p>Nach der Erstellung des Triggers sehen Sie einen grundlegenden Workflow, der nur eine <strong>Inputs</strong>-Funktion enthält, die Daten über den neuen RSVP-Datensatz empfängt, wenn der Trigger ausgelöst wird. Sie werden auf dieser Grundlage aufbauen, indem Sie Funktionen hinzufügen, die Veranstaltungsdaten abrufen und Tickets generieren.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/rsvp-trigger-created.png" alt="Leerer &quot;New RSVP Answer&quot;-Trigger"/></p> <h2 id="docugenerate-installieren">Das DocuGenerate-Snippet Installieren</h2> <p>Um PDF-Generierungsfunktionen in Ihrem Xano-Workspace zu aktivieren, müssen Sie das <a href="https://www.xano.com/snippet/be03h9xT/" target="_blank" rel="nofollow noopener">DocuGenerate-Snippet</a> aus dem Xano Marketplace installieren. Snippets sind vorgefertigte Funktionen, die Xanos Fähigkeiten durch die Integration mit externen Diensten erweitern.</p> <p>Klicken Sie auf <strong>Add to your Xano Account</strong> und folgen Sie den Installationsschritten. Melden Sie sich bei Ihrem Xano-Konto an, wählen Sie die Instanz, der Sie das Snippet hinzufügen möchten, und klicken Sie auf <strong>Add to Instance</strong>. Nach der Bestätigung können Sie das Snippet direkt in Ihrem Workspace installieren, indem Sie es aus einer Liste verfügbarer Workspaces auswählen.</p> <p>Nach der Installation stellt das DocuGenerate-Snippet eine <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-xano-automatisieren/#generate-document">Generate Document</a>-Funktion bereit, die Sie in jedem Workflow verwenden können. Diese Funktion verbindet sich mit der DocuGenerate-API, um Dokumente aus Vorlagen zu erstellen.</p> <h3 id="api-schluessel-konfigurieren">Ihren API-Schlüssel Konfigurieren</h3> <p>Bevor Sie das DocuGenerate-Snippet verwenden können, müssen Sie Ihren <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a> in den Workspace-Einstellungen konfigurieren. Navigieren Sie zu Ihren Workspace-Einstellungen in Xano und suchen Sie den Abschnitt <strong>Environment Variables</strong>. Klicken Sie auf die <strong>Manage</strong>-Schaltfläche und geben Sie dann Ihren API-Schlüssel in der Variablen <code class="language-plaintext highlighter-rouge">docugenerate_api_key</code> ein. Vergessen Sie nicht, auf <strong>Save</strong> zu klicken, damit die Änderungen übernommen werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/docugenerate-api-key.png" alt="DocuGenerate API-Schlüssel konfigurieren"/></p> <h2 id="ticket-vorlage-erstellen">Die RSVP-Ticket-Vorlage Erstellen</h2> <p>Als nächstes müssen Sie eine Word-Vorlage für Ihre Veranstaltungstickets in DocuGenerate erstellen. Die Vorlage sollte Zusammenführungs-Tags für alle Datenpunkte enthalten, die Sie auf dem Ticket anzeigen möchten. Für dieses Tutorial verwenden wir folgende Zusammenführungs-Tags:</p> <ul> <li><code class="language-plaintext highlighter-rouge">[event_name]</code>: Name der Veranstaltung</li> <li><code class="language-plaintext highlighter-rouge">[start_at]</code>: Startdatum und -uhrzeit der Veranstaltung</li> <li><code class="language-plaintext highlighter-rouge">[end_at]</code>: Enddatum und -uhrzeit der Veranstaltung</li> <li><code class="language-plaintext highlighter-rouge">[event_photo]</code>: Titelbild der Veranstaltung</li> <li><code class="language-plaintext highlighter-rouge">[rsvp_name]</code>: Name des Teilnehmers</li> <li><code class="language-plaintext highlighter-rouge">[rsvp_email]</code>: E-Mail des Teilnehmers</li> </ul> <p>Erstellen Sie eine neue Vorlage in DocuGenerate und laden Sie Ihr Word-Dokument hoch. Stellen Sie sicher, dass Sie die <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktiviere-ich-die-erweiterte-syntax/">erweiterte Syntax</a> für diese Vorlage aktivieren, die erweiterte Funktionen wie den Bildgrößenfilter ermöglicht. Beachten Sie, dass bei Verwendung der erweiterten Syntax Zusammenführungs-Tag-Namen keine Leerzeichen enthalten dürfen, weshalb wir Unterstriche statt Leerzeichen verwenden.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/rsvp-event-ticket-template-v2.png" alt="RSVP-Ticket-Vorlage in DocuGenerate"/></p> <p>Sie können die <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/RSVP Event Ticket.docx" target="_blank">Vorlage herunterladen</a> und für Ihre eigenen Veranstaltungen anpassen. Sobald Ihre Vorlage erstellt ist, kopieren Sie ihre <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erhalte-ich-die-vorlagen-id/">Vorlagen-ID</a> aus der DocuGenerate-Oberfläche, da Sie diese beim Konfigurieren der Generate Document-Funktion in Xano benötigen.</p> <h2 id="trigger-workflow-aufbauen">Den Trigger-Workflow Aufbauen</h2> <p>Jetzt, da Ihr Trigger erstellt und DocuGenerate installiert ist, sind Sie bereit, den Workflow zu erstellen, der Tickets generiert. Dieser Workflow ruft die Veranstaltungsdetails für die RSVP ab und verwendet diese Daten, um ein personalisiertes PDF-Ticket zu generieren.</p> <h3 id="dokumentengenerierung-konfigurieren">Dokumentengenerierung Konfigurieren</h3> <p>Um die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-xano-automatisieren/#generate-document">Generate Document</a>-Funktion zu Ihrem Workflow hinzuzufügen, klicken Sie auf <strong>Add function</strong>, suchen Sie in der Funktionsbibliothek nach “DocuGenerate” und wählen Sie dann <strong>DocuGenerate/Generate Document</strong> aus den Ergebnissen.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/search-generate-document-function-v2.png" alt="Die &quot;DocuGenerate/Generate Document&quot;-Funktion zum Workflow hinzufügen"/></p> <p>Die Generate Document-Funktion erfordert mehrere Eingabefelder:</p> <ul> <li><strong>template_id</strong>: Fügen Sie die Vorlagen-ID Ihrer <a href="#ticket-vorlage-erstellen">RSVP-Ticket-Vorlage</a> ein</li> <li><strong>name</strong>: Setzen Sie dies auf einen dynamischen Wert wie <code class="language-plaintext highlighter-rouge">Ticket for %s</code> mithilfe der <code class="language-plaintext highlighter-rouge">sprintf</code>-Funktion, um den Namen des Teilnehmers aus <code class="language-plaintext highlighter-rouge">new.name</code> einzuschließen</li> <li><strong>output_format</strong>: Setzen Sie auf <code class="language-plaintext highlighter-rouge">.pdf</code>, um PDF-Tickets zu generieren</li> <li><strong>data</strong>: Wählen Sie für den <code class="language-plaintext highlighter-rouge">data</code>-Parameter zunächst den Objekttyp aus und verwenden Sie dann den <code class="language-plaintext highlighter-rouge">set</code>-Filter mehrmals, um Schlüssel-Wert-Paare hinzuzufügen. Dieses Objekt enthält die Zusammenführungs-Tag-Werte für Ihre Vorlage: <ul> <li><strong>rsvp_name</strong>: Auf <code class="language-plaintext highlighter-rouge">new.name</code> aus dem RSVP-Datensatz setzen</li> <li><strong>rsvp_email</strong>: Auf <code class="language-plaintext highlighter-rouge">new.email</code> aus dem RSVP-Datensatz setzen</li> </ul> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/configure-generate-document-function.png" alt="Konfiguration der &quot;DocuGenerate/Generate Document&quot;-Funktion"/></p> <p>Mit dieser Konfiguration wird das Ticket nur mit den Daten der Person befüllt. Wir müssen auch die Veranstaltungsdaten auf dem Ticket einbeziehen.</p> <h3 id="veranstaltungsdaten-abrufen">Veranstaltungsdaten Abrufen</h3> <p>Der RSVP-Datensatz enthält ein <code class="language-plaintext highlighter-rouge">event_id</code>-Feld, das auf die zugehörige Veranstaltung verweist. Sie müssen die vollständigen Veranstaltungsdetails abrufen, bevor Sie das Ticket generieren. Fügen Sie eine <strong>Query all Records</strong>-Funktion in Ihren Trigger-Workflow vor <a href="#dokumentengenerierung-konfigurieren">Generate Document</a> hinzu und konfigurieren Sie sie, um die <code class="language-plaintext highlighter-rouge">event</code>-Tabelle abzufragen.</p> <p>Um nur die spezifische Veranstaltung für diese RSVP abzurufen, fügen Sie einen Filter mit einer benutzerdefinierten Abfrage hinzu: <code class="language-plaintext highlighter-rouge">db:event.id==input:new.event_id</code>. Diese Bedingung gleicht die Veranstaltungs-ID aus der Datenbank mit der Veranstaltungs-ID im neuen RSVP-Datensatz ab. Ändern Sie in den <strong>Return settings</strong> den Rückgabetyp auf <strong>single</strong> statt der Standardliste, da Sie nur einen Veranstaltungsdatensatz erwarten. Setzen Sie schließlich den <strong>Return as</strong>-Wert auf <code class="language-plaintext highlighter-rouge">event</code>, sodass Sie später im Workflow auf diese Daten verweisen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/query-event-records-by-id.png" alt="Konfiguration der &quot;Query all Records&quot;-Funktion für die &quot;event&quot;-Tabelle"/></p> <h3 id="veranstaltungsdaten-hinzufuegen">Veranstaltungsdaten zum Ticket Hinzufügen</h3> <p>Nachdem die Veranstaltungsdaten in der Variablen <code class="language-plaintext highlighter-rouge">event</code> abgerufen wurden, müssen wir zur Konfiguration der <a href="#dokumentengenerierung-konfigurieren">Generate Document</a>-Funktion zurückkehren und dem <code class="language-plaintext highlighter-rouge">data</code>-Eingabefeld folgende Zuordnungen hinzufügen:</p> <ul> <li><strong>event_name</strong>: Auf <code class="language-plaintext highlighter-rouge">event.name</code> aus dem <a href="#veranstaltungsdaten-abrufen">zuvor abgerufenen</a> Veranstaltungsdatensatz setzen</li> <li><strong>start_at</strong>: Auf <code class="language-plaintext highlighter-rouge">event.start_at</code> setzen, formatiert mit dem <a href="https://docs.xano.com/the-function-stack/filters/timestamp" target="_blank" rel="nofollow noopener">format_timestamp</a>-Filter und dem Format <code class="language-plaintext highlighter-rouge">M j, Y h:i A</code>, um Datumsangaben wie “Oct 31, 2023 12:00 AM” anzuzeigen</li> <li><strong>end_at</strong>: Auf <code class="language-plaintext highlighter-rouge">event.end_at</code> setzen, ebenfalls formatiert als <code class="language-plaintext highlighter-rouge">M j, Y h:i A</code></li> <li><strong>event_photo</strong>: Auf <code class="language-plaintext highlighter-rouge">event.cover_photo.url</code> setzen, um das Titelbild der Veranstaltung in das Ticket einzuschließen</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/generate-document-all-params.png" alt="Alle Parameter für die &quot;Generate Document&quot;-Funktion konfigurieren"/></p> <p>Der <code class="language-plaintext highlighter-rouge">format_timestamp</code>-Filter ist hier besonders nützlich, da er Xanos Zeitstempelformat in ein für Menschen lesbares Format umwandelt, das auf Ihren Tickets professionell aussieht.</p> <h2 id="workflow-testen">Den Workflow Testen</h2> <p>Nachdem Ihr Trigger-Workflow vollständig ist, ist es Zeit, das gesamte System zu testen. Navigieren Sie zurück zur <a href="#demo-anwendung">Demo-Anwendung</a> und reichen Sie eine neue RSVP für eine beliebige Veranstaltung ein. Wenn Sie das Formular einreichen, wird der Trigger automatisch im Hintergrund ausgeführt.</p> <p>Versuchen Sie zum Beispiel, sich für die Veranstaltung “2 Day Pokemon Dance Party” mit Ihrem Namen und Ihrer E-Mail anzumelden. Navigieren Sie dann zu Ihrer Vorlage in DocuGenerate und zeigen Sie die <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-die-generierten-dokumente/">generierten Dokumente</a> an. Sie sollten ein neues Dokument entsprechend Ihrer RSVP-Antwort sehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/generated-ticket-example.png" alt="Generiertes Dokument &quot;Ticket for John Silver.pdf&quot; in DocuGenerate"/></p> <p>Das Ticket sollte den Namen des Teilnehmers, die E-Mail, Veranstaltungsinformationen, Daten und das Titelbild der Veranstaltung enthalten. Als Referenz können Sie das <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/Ticket for John Silver.pdf" target="_blank">Beispiel-PDF-Ticket</a> aus diesem Tutorial herunterladen.</p> <h2 id="moegliche-erweiterungen">Mögliche Erweiterungen</h2> <p>Der aktuelle Workflow generiert Tickets erfolgreich, aber es gibt verschiedene Möglichkeiten, ihn zu erweitern, um ein noch leistungsfähigeres Veranstaltungsmanagementsystem zu erstellen.</p> <p>Eine wertvolle Erweiterung wäre die automatische E-Mail-Zustellung des Tickets an den Teilnehmer. Xano unterstützt E-Mail-Integration über verschiedene Anbieter, und Sie könnten nach dem Dokumentengenerierungsschritt eine E-Mail-Funktion hinzufügen. Dies würde die Ticket-URL senden oder das PDF direkt an eine Bestätigungs-E-Mail anhängen, was Teilnehmern sofortige Rückmeldung gibt und Ihren Verwaltungsaufwand reduziert.</p> <p>Eine weitere Möglichkeit ist das Hinzufügen von QR-Codes zu Ihren Tickets mithilfe von DocuGenerates <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-qr-codes-und-barcodes-hinzu/">QR-Code-Funktion</a>. Sie könnten die RSVP-ID oder einen einzigartigen Bestätigungscode im QR-Code kodieren, was das Scannen von Tickets beim Veranstaltungs-Check-in und die Überprüfung der Anwesenheit erleichtert.</p> <p>Für Veranstaltungen mit begrenzter Kapazität könnten Sie Logik hinzufügen, um die aktuelle RSVP-Anzahl vor der Ticket-Generierung zu prüfen. Wenn die Veranstaltung ausgebucht ist, könnte der Workflow entweder neue RSVPs verhindern oder Teilnehmer auf eine Warteliste setzen, anstatt sofort Tickets zu generieren.</p> <h2 id="fazit">Fazit</h2> <p>Wir haben erfolgreich ein automatisiertes Event-Ticketing-System aufgebaut, das personalisierte PDF-Tickets generiert, wenn Teilnehmer eine RSVP für Ihre Veranstaltungen einreichen. Dieser Workflow demonstriert die Stärke der Kombination von Xanos Backend-Funktionen mit DocuGenerates Dokumentengenerierungsfähigkeiten – ganz ohne traditionellen Code.</p> <p>Das System ist sowohl praktisch als auch erweiterbar und kann sich anderen Anwendungsfällen über Veranstaltungstickets hinaus anpassen, wie zum Beispiel der Generierung von Zertifikaten, Rechnungen oder anderen Dokumenten, die automatisch basierend auf Datenbankänderungen erstellt werden müssen. Das Schlüsselkonzept der Verwendung von Datenbank-Triggern zur Initiierung von Dokumentengenerierungs-Workflows kann auf unzählige Szenarien angewendet werden.</p> <p>Wenn Sie weiter mit <a href="https://www.docugenerate.com/de/integrationen/xano/">Xano und DocuGenerate</a> arbeiten, überlegen Sie, wie Sie diesen Workflow für Ihre spezifischen Bedürfnisse anpassen könnten. Ob Sie kleine Community-Veranstaltungen oder große Konferenzen verwalten – dieses automatisierte Ticketing-System bietet eine solide Grundlage, die mit Ihren Anforderungen skalieren kann.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Das <a href="https://www.xano.com/snippet/be03h9xT/" target="_blank" rel="noopener">DocuGenerate Xano Snippet</a> für Dokumentengenerierungsfunktionen.</li> <li>Die <a href="https://demo.xano.com/xano-events/" target="_blank" rel="nofollow noopener">Events Demo-App</a> zum Testen des Veranstaltungsmanagementsystems.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/RSVP Event Ticket.docx" target="_blank">RSVP Event Ticket</a>-Word-Vorlage aus diesem Tutorial.</li> <li>Ein Beispiel eines <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/Ticket for John Silver.pdf" target="_blank">generierten PDF-Tickets</a>, das vom Workflow erstellt wurde.</li> <li>Der vollständige <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/trigger-xanoscript.txt" target="_blank">XanoScript-Workflow</a> für den Datenbank-Trigger.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Tickets"/> <category term="Xano"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie mit Xano und DocuGenerate automatisch PDF-Veranstaltungstickets generieren, wenn Teilnehmer Ihre Veranstaltungen bestätigen. Dieses Tutorial führt Sie durch die Einrichtung von Datenbank-Triggern und den Aufbau eines vollständigen Ticketing-Workflows.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">ZUGFeRD / Factur-X PDF-Rechnungen mit DocuGenerate Erstellen</title> <link href="https://www.docugenerate.com/de/blog/zugferd-factur-x-pdf-rechnungen-mit-docugenerate-erstellen/" rel="alternate" type="text/html" title="ZUGFeRD / Factur-X PDF-Rechnungen mit DocuGenerate Erstellen"/> <published>2025-03-08T00:00:00+00:00</published> <updated>2025-03-08T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/zugferd-factur-x-pdf-rechnungen-mit-docugenerate-erstellen</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/zugferd-factur-x-pdf-rechnungen-mit-docugenerate-erstellen/"><![CDATA[<h2 id="was-ist-e-rechnungsstellung">Was ist Elektronische Rechnungsstellung?</h2> <p><strong>Elektronische Rechnungsstellung (E-Rechnungsstellung)</strong> ist der Austausch von Rechnungsdokumenten zwischen Lieferanten und Käufern in einem strukturierten elektronischen Format. Im Gegensatz zu herkömmlichen Papierrechnungen oder einfachen per E-Mail gesendeten PDF-Dateien enthalten E-Rechnungen strukturierte Daten, die von Buchhaltungssystemen automatisch verarbeitet werden können, wodurch manuelle Dateneingabe reduziert und die Genauigkeit verbessert wird.</p> <p>Die Europäische Union treibt die Einführung der E-Rechnungsstellung durch verschiedene Richtlinien und Standards voran. In Deutschland wird die E-Rechnungsstellung für B2B-Transaktionen ab dem 1. Januar 2025 obligatorisch, während Frankreich dies bis September 2026 vorschreiben wird. Diese Regelungen sollen die Effizienz steigern, Kosten senken und die Steuerkonformität im europäischen Markt verbessern.</p> <p>E-Rechnungen kommen in verschiedenen Formaten vor, aber einer der beliebtesten Ansätze ist das <strong>Hybridformat</strong>, das sowohl menschenlesbare als auch maschinenlesbare Elemente in einem einzigen Dokument kombiniert. Dieser Ansatz gewährleistet die Kompatibilität mit bestehenden Workflows und ermöglicht gleichzeitig die automatisierte Verarbeitung. E-Rechnungsgenerierung kann in verschiedene Geschäfts-Workflows integriert werden:</p> <ul> <li><strong>ERP-Integration</strong>: E-Rechnung generieren, wenn Rechnungen im ERP-System genehmigt werden</li> <li><strong>E-Commerce-Plattformen</strong>: Automatisch E-Rechnungen für Online-Bestellungen erstellen</li> <li><strong>Abonnement-Systeme</strong>: Wiederkehrende E-Rechnungen für abonnementbasierte Dienste erstellen</li> <li><strong>Projektmanagement</strong>: E-Rechnungen basierend auf abgeschlossenen Projektmeilensteinen generieren</li> </ul> <h2 id="hybride-formate-verstehen">Hybride E-Rechnungsformate Verstehen</h2> <p>Hybride E-Rechnungsformate bieten das Beste beider Welten: Sie erhalten die gewohnte PDF-Darstellung, die Menschen lesen und verstehen können, und betten strukturierte XML-Daten ein, die Maschinen automatisch verarbeiten können. Die bekanntesten Beispiele sind <a href="https://www.mustangproject.org/zugferd/" target="_blank" rel="nofollow noopener">ZUGFeRD</a> (in Deutschland entwickelt) und <a href="https://fnfe-mpe.org/factur-x/" target="_blank" rel="nofollow noopener">Factur-X</a> (in Frankreich entwickelt), die harmonisiert wurden und nun im Wesentlichen denselben Standard darstellen.</p> <h3 id="schluesselkomponenten">Schlüsselkomponenten Hybrider E-Rechnungen</h3> <p>Eine hybride E-Rechnung besteht aus mehreren wesentlichen Komponenten:</p> <ul> <li> <p><strong>PDF/A-3-Dokument</strong>: Die visuelle Darstellung der Rechnung, die wie eine herkömmliche Rechnung aussieht. PDF/A-3 wird speziell gewählt, weil es eingebettete Dateianhänge unterstützt und gleichzeitig langfristige Archivierungsfähigkeiten beibehält.</p> </li> <li> <p><strong>Eingebettete XML-Datei</strong>: Maschinenlesbare strukturierte Daten, die alle Rechnungsinformationen in einem standardisierten Format enthalten. Dieses XML folgt internationalen Standards wie dem UN/CEFACT Cross Industry Invoice (CII).</p> </li> <li> <p><strong>Metadaten</strong>: Spezielle Metadaten, die im PDF eingebettet sind und das Dokument als E-Rechnung identifizieren sowie Informationen über die eingebettete XML-Struktur bereitstellen.</p> </li> <li> <p><strong>Digitale Signaturen</strong>: Optionale kryptografische Signaturen zur Sicherstellung der Dokumentintegrität und -authentizität.</p> </li> </ul> <h3 id="standards-und-namenskonventionen">Standards und Namenskonventionen</h3> <p>Verschiedene E-Rechnungsstandards erfordern spezifische Namenskonventionen für die eingebetteten XML-Dateien:</p> <ul> <li><strong>ZUGFeRD 1.0</strong>: Die XML-Datei muss <code class="language-plaintext highlighter-rouge">ZUGFeRD-invoice.xml</code> heißen</li> <li><strong>ZUGFeRD 2.0</strong>: Die XML-Datei muss <code class="language-plaintext highlighter-rouge">zugferd-invoice.xml</code> heißen</li> <li><strong>ZUGFeRD 2.1 und Factur-X</strong>: Die XML-Datei muss <code class="language-plaintext highlighter-rouge">factur-x.xml</code> heißen</li> <li><strong>Italienisches FatturaPA</strong>: Muss der Rechnungs-ID entsprechen, z. B. <code class="language-plaintext highlighter-rouge">IT01234567890_00001.xml</code></li> </ul> <p>Für die meisten europäischen Implementierungen bietet die Einhaltung des Factur-X-Standards mit dem Dateinamen <code class="language-plaintext highlighter-rouge">factur-x.xml</code> die breiteste Kompatibilität.</p> <h2 id="docugenerate-ansatz">Der DocuGenerate-Ansatz für E-Rechnungsstellung</h2> <p>DocuGenerate bietet eine praktische Lösung zur Generierung von E-Rechnungen, indem es sich auf die PDF-Generierung konzentriert und gleichzeitig <a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-pdf-dateianhaenge-hinzufuegen/">XML-Anhänge</a> über seine API unterstützt. Dieser Ansatz berücksichtigt, dass die PDF-Komponente zwar dynamisch aus Vorlagen generiert werden kann, die XML-Struktur jedoch häufig eine spezialisierte Validierung und Konformitätsprüfung erfordert, die am besten von dedizierten Systemen übernommen wird.</p> <h3 id="zweistufiger-prozess">Zweistufiger Prozess</h3> <p>Die Erstellung konformer E-Rechnungen mit DocuGenerate umfasst einen zweistufigen Prozess:</p> <p><strong>1. XML-Struktur generieren</strong>: Verwenden Sie spezialisierte E-Rechnungsbibliotheken oder -dienste, um konforme XML-Daten zu erstellen, die den erforderlichen Standards (ZUGFeRD, Factur-X usw.) entsprechen.</p> <p><strong>2. PDF mit eingebettetem XML generieren</strong>: Verwenden Sie DocuGenerate, um die PDF-Rechnung zu erstellen und die vorgenerierte XML-Datei anzufügen.</p> <p>Diese Trennung der Verantwortlichkeiten stellt sicher, dass beide Komponenten ihren jeweiligen Anforderungen gerecht werden: Das XML wahrt die strikte Konformität mit den E-Rechnungsstandards, während das PDF professionelle Präsentation und Markierungsflexibilität bietet.</p> <h3 id="ueberlegungen-xml-generierung">Überlegungen zur XML-Generierung</h3> <p>Die XML-Komponente einer E-Rechnung muss sorgfältig erstellt werden, um die Konformität mit dem gewählten Standard zu gewährleisten. Wichtige Überlegungen sind:</p> <ul> <li><strong>Datengenauigkeit</strong>: Alle Werte im XML müssen genau mit denen im PDF übereinstimmen.</li> <li><strong>Validierung</strong>: Das XML sollte gegen das entsprechende XSD-Schema und Schematron-Regeln validiert werden.</li> <li><strong>Profilauswahl</strong>: Wählen Sie das entsprechende Profil (Minimum, Basic, EN16931, Extended) basierend auf Ihren Anforderungen.</li> <li><strong>Codelisten</strong>: Verwenden Sie die korrekten Codelisten für Länder, Währungen, Steuerkategorien und andere standardisierte Werte.</li> </ul> <h2 id="implementierung">Implementierung der E-Rechnungsgenerierung</h2> <p>Lassen Sie uns eine praktische Implementierung der E-Rechnungsgenerierung mit DocuGenerates API und PDF-Anhängen durchgehen.</p> <h3 id="vorlage-vorbereiten">Schritt 1: Rechnungsvorlage Vorbereiten</h3> <p>Erstellen Sie eine professionelle Rechnungsvorlage in Microsoft Word oder einem anderen unterstützten Format. Die Vorlage sollte <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> für alle dynamischen Inhalte enthalten, die aus Ihrer Datenquelle befüllt werden. Wie in der untenstehenden Vorlage zu sehen ist, müssen Sie Zusammenführungs-Tags strategisch im gesamten Dokument platzieren, um alle notwendigen Rechnungsinformationen zu erfassen.</p> <p><img src="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/invoice-template.png" alt="Word-Vorlage der Rechnung"/></p> <p>Die in diesem Tutorial verwendete <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.docx">Rechnungsvorlage</a> enthält folgende Zusammenführungs-Tags:</p> <p><strong>Kundeninformationen:</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[Company Name]</code> – Name des Unternehmens des Kunden</li> <li><code class="language-plaintext highlighter-rouge">[Street Address]</code> – Straßenadresse des Kunden</li> <li><code class="language-plaintext highlighter-rouge">[City]</code> – Stadt des Kunden</li> <li><code class="language-plaintext highlighter-rouge">[State]</code> – Bundesland oder Region des Kunden</li> <li><code class="language-plaintext highlighter-rouge">[Zip Code]</code> – Postleitzahl des Kunden</li> </ul> <p><strong>Rechnungsdetails:</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[Invoice No]</code> – Eindeutiger Rechnungsidentifikator</li> <li><code class="language-plaintext highlighter-rouge">[Invoice Date]</code> – Ausstellungsdatum der Rechnung</li> </ul> <p><strong>Positionen (mit Listen-Syntax):</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[#Items]...[/]</code> – Schleifenstruktur für mehrere Rechnungspositionen</li> <li><code class="language-plaintext highlighter-rouge">[Description]</code> – Produkt- oder Dienstleistungsbeschreibung</li> <li><code class="language-plaintext highlighter-rouge">[Quantity]</code> – Anzahl der Artikel</li> <li><code class="language-plaintext highlighter-rouge">[Price]</code> – Stückpreis pro Artikel</li> <li><code class="language-plaintext highlighter-rouge">[Amount]</code> – Gesamtbetrag für die Position</li> </ul> <p><strong>Summen:</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[Sub Total]</code> – Summe aller Positionen vor Steuer</li> <li><code class="language-plaintext highlighter-rouge">[Tax Rate]</code> – Steuerprozentsatz</li> <li><code class="language-plaintext highlighter-rouge">[Tax Total]</code> – Gesamtsteuerbetrag</li> <li><code class="language-plaintext highlighter-rouge">[Total]</code> – Gesamtrechnungsbetrag inklusive Steuer</li> </ul> <h3 id="daten-vorbereiten">Schritt 2: Rechnungsdaten Vorbereiten</h3> <p>Vor der Erstellung der Rechnung müssen Sie Ihre Daten im JSON-Format vorbereiten. Die JSON-Schlüssel müssen genau mit den Zusammenführungs-Tags in Ihrer Vorlage übereinstimmen, damit die Substitution korrekt funktioniert. Jeder Schlüssel entspricht einem Zusammenführungs-Tag in der Vorlage – zum Beispiel ersetzt der JSON-Schlüssel <code class="language-plaintext highlighter-rouge">"Company Name"</code> das Tag <code class="language-plaintext highlighter-rouge">[Company Name]</code> im Dokument.</p> <p>Hier sind die <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/invoice-data.json">JSON-Beispieldaten</a>, die unserer Rechnungsvorlage entsprechen:</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"Company Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"TechGear Solutions"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Invoice No"</span><span class="p">:</span><span class="w"> </span><span class="s2">"INV-2025-001"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Street Address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"82 Bashford Avenue"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"City"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Chicago"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"State"</span><span class="p">:</span><span class="w"> </span><span class="s2">"IL"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Zip Code"</span><span class="p">:</span><span class="w"> </span><span class="s2">"60652"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Invoice Date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"March 8, 2025"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Items"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
      </span><span class="p">{</span><span class="w">
        </span><span class="nl">"Description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wireless Mouse"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Quantity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"5"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Price"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$29.99"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Amount"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$149.95"</span><span class="w">
      </span><span class="p">},</span><span class="w">
      </span><span class="p">{</span><span class="w">
        </span><span class="nl">"Description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"USB-C Cable (2m)"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Quantity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"10"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Price"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$12.50"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Amount"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$125.00"</span><span class="w">
      </span><span class="p">},</span><span class="w">
      </span><span class="p">{</span><span class="w">
        </span><span class="nl">"Description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Laptop Stand"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Quantity"</span><span class="p">:</span><span class="w"> </span><span class="s2">"3"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Price"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$45.00"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Amount"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$135.00"</span><span class="w">
      </span><span class="p">}</span><span class="w">
    </span><span class="p">],</span><span class="w">
    </span><span class="nl">"Sub Total"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$409.95"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Tax Rate"</span><span class="p">:</span><span class="w"> </span><span class="s2">"20"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Tax Total"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$81.99"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Total"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$491.94"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span></code></pre></div></div> <p>Beachten Sie, dass das <code class="language-plaintext highlighter-rouge">Items</code>-Array mehrere Objekte enthält, von denen jedes eine Position auf der Rechnung darstellt. Diese Struktur arbeitet mit der <code class="language-plaintext highlighter-rouge">[#Items]...[/]</code>-Schleifensyntax in der Vorlage zusammen, um <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-tabellen-zu-einer-vorlage-hinzu/">mehrere Zeilen</a> in der Rechnungstabelle zu generieren.</p> <h3 id="xml-generieren">Schritt 3: Konformes XML Generieren</h3> <p>Vor der Erstellung des PDFs müssen Sie die XML-Struktur generieren, die in das PDF eingebettet wird. Alle Werte in der XML-Datei müssen mit den entsprechenden Werten in Ihrem JSON-Datensatz übereinstimmen, der das PDF befüllt, wie Rechnungsnummern, Beträge, Daten, Positionen und Summen. Jede Abweichung zwischen den PDF- und XML-Daten kann zu Validierungsfehlern oder Verarbeitungsproblemen bei Empfängersystemen führen.</p> <p>Hier ist ein vereinfachtes Beispiel einer Factur-X XML-Struktur:</p> <div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
<span class="nt">&lt;rsm:CrossIndustryInvoice</span> <span class="na">xmlns:rsm=</span><span class="s">"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100"</span>
                          <span class="na">xmlns:a=</span><span class="s">"urn:un:unece:uncefact:data:standard:QualifiedDataType:100"</span>
                          <span class="na">xmlns:qdt=</span><span class="s">"urn:un:unece:uncefact:data:standard:QualifiedDataType:10"</span>
                          <span class="na">xmlns:ram=</span><span class="s">"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"</span>
                          <span class="na">xmlns:udt=</span><span class="s">"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"</span>
                          <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;rsm:ExchangedDocumentContext&gt;</span>
        <span class="nt">&lt;ram:GuidelineSpecifiedDocumentContextParameter&gt;</span>
            <span class="nt">&lt;ram:ID&gt;</span>urn:cen.eu:en16931:2017<span class="nt">&lt;/ram:ID&gt;</span>
        <span class="nt">&lt;/ram:GuidelineSpecifiedDocumentContextParameter&gt;</span>
    <span class="nt">&lt;/rsm:ExchangedDocumentContext&gt;</span>
    <span class="nt">&lt;rsm:ExchangedDocument&gt;</span>
        <span class="nt">&lt;ram:ID&gt;</span>INV-2025-001<span class="nt">&lt;/ram:ID&gt;</span>
        <span class="nt">&lt;ram:TypeCode&gt;</span>380<span class="nt">&lt;/ram:TypeCode&gt;</span>
        <span class="nt">&lt;ram:IssueDateTime&gt;</span>
            <span class="nt">&lt;udt:DateTimeString</span> <span class="na">format=</span><span class="s">"102"</span><span class="nt">&gt;</span>20250308<span class="nt">&lt;/udt:DateTimeString&gt;</span>
        <span class="nt">&lt;/ram:IssueDateTime&gt;</span>
    <span class="nt">&lt;/rsm:ExchangedDocument&gt;</span>
    <span class="nt">&lt;rsm:SupplyChainTradeTransaction&gt;</span>
        <span class="nt">&lt;ram:IncludedSupplyChainTradeLineItem&gt;</span>
            <span class="nt">&lt;ram:AssociatedDocumentLineDocument&gt;</span>
                <span class="nt">&lt;ram:LineID&gt;</span>1<span class="nt">&lt;/ram:LineID&gt;</span>
            <span class="nt">&lt;/ram:AssociatedDocumentLineDocument&gt;</span>
            <span class="nt">&lt;ram:SpecifiedTradeProduct&gt;</span>
                <span class="nt">&lt;ram:Name&gt;</span>Wireless Mouse<span class="nt">&lt;/ram:Name&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedTradeProduct&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeAgreement&gt;</span>
                <span class="nt">&lt;ram:NetPriceProductTradePrice&gt;</span>
                    <span class="nt">&lt;ram:ChargeAmount&gt;</span>29.99<span class="nt">&lt;/ram:ChargeAmount&gt;</span>
                <span class="nt">&lt;/ram:NetPriceProductTradePrice&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeAgreement&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeDelivery&gt;</span>
                <span class="nt">&lt;ram:BilledQuantity</span> <span class="na">unitCode=</span><span class="s">"C62"</span><span class="nt">&gt;</span>5.0000<span class="nt">&lt;/ram:BilledQuantity&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeDelivery&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeSettlement&gt;</span>
                <span class="nt">&lt;ram:ApplicableTradeTax&gt;</span>
                    <span class="nt">&lt;ram:TypeCode&gt;</span>VAT<span class="nt">&lt;/ram:TypeCode&gt;</span>
                    <span class="nt">&lt;ram:CategoryCode&gt;</span>S<span class="nt">&lt;/ram:CategoryCode&gt;</span>
                    <span class="nt">&lt;ram:RateApplicablePercent&gt;</span>20<span class="nt">&lt;/ram:RateApplicablePercent&gt;</span>
                <span class="nt">&lt;/ram:ApplicableTradeTax&gt;</span>
                <span class="nt">&lt;ram:SpecifiedTradeSettlementLineMonetarySummation&gt;</span>
                    <span class="nt">&lt;ram:LineTotalAmount&gt;</span>149.95<span class="nt">&lt;/ram:LineTotalAmount&gt;</span>
                <span class="nt">&lt;/ram:SpecifiedTradeSettlementLineMonetarySummation&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeSettlement&gt;</span>
        <span class="nt">&lt;/ram:IncludedSupplyChainTradeLineItem&gt;</span>
        <span class="nt">&lt;ram:IncludedSupplyChainTradeLineItem&gt;</span>
            <span class="nt">&lt;ram:AssociatedDocumentLineDocument&gt;</span>
                <span class="nt">&lt;ram:LineID&gt;</span>2<span class="nt">&lt;/ram:LineID&gt;</span>
            <span class="nt">&lt;/ram:AssociatedDocumentLineDocument&gt;</span>
            <span class="nt">&lt;ram:SpecifiedTradeProduct&gt;</span>
                <span class="nt">&lt;ram:Name&gt;</span>USB-C Cable (2m)<span class="nt">&lt;/ram:Name&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedTradeProduct&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeAgreement&gt;</span>
                <span class="nt">&lt;ram:NetPriceProductTradePrice&gt;</span>
                    <span class="nt">&lt;ram:ChargeAmount&gt;</span>12.50<span class="nt">&lt;/ram:ChargeAmount&gt;</span>
                <span class="nt">&lt;/ram:NetPriceProductTradePrice&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeAgreement&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeDelivery&gt;</span>
                <span class="nt">&lt;ram:BilledQuantity</span> <span class="na">unitCode=</span><span class="s">"C62"</span><span class="nt">&gt;</span>10.0000<span class="nt">&lt;/ram:BilledQuantity&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeDelivery&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeSettlement&gt;</span>
                <span class="nt">&lt;ram:ApplicableTradeTax&gt;</span>
                    <span class="nt">&lt;ram:TypeCode&gt;</span>VAT<span class="nt">&lt;/ram:TypeCode&gt;</span>
                    <span class="nt">&lt;ram:CategoryCode&gt;</span>S<span class="nt">&lt;/ram:CategoryCode&gt;</span>
                    <span class="nt">&lt;ram:RateApplicablePercent&gt;</span>20<span class="nt">&lt;/ram:RateApplicablePercent&gt;</span>
                <span class="nt">&lt;/ram:ApplicableTradeTax&gt;</span>
                <span class="nt">&lt;ram:SpecifiedTradeSettlementLineMonetarySummation&gt;</span>
                    <span class="nt">&lt;ram:LineTotalAmount&gt;</span>125.00<span class="nt">&lt;/ram:LineTotalAmount&gt;</span>
                <span class="nt">&lt;/ram:SpecifiedTradeSettlementLineMonetarySummation&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeSettlement&gt;</span>
        <span class="nt">&lt;/ram:IncludedSupplyChainTradeLineItem&gt;</span>
        <span class="nt">&lt;ram:IncludedSupplyChainTradeLineItem&gt;</span>
            <span class="nt">&lt;ram:AssociatedDocumentLineDocument&gt;</span>
                <span class="nt">&lt;ram:LineID&gt;</span>3<span class="nt">&lt;/ram:LineID&gt;</span>
            <span class="nt">&lt;/ram:AssociatedDocumentLineDocument&gt;</span>
            <span class="nt">&lt;ram:SpecifiedTradeProduct&gt;</span>
                <span class="nt">&lt;ram:Name&gt;</span>Laptop Stand<span class="nt">&lt;/ram:Name&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedTradeProduct&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeAgreement&gt;</span>
                <span class="nt">&lt;ram:NetPriceProductTradePrice&gt;</span>
                    <span class="nt">&lt;ram:ChargeAmount&gt;</span>45.00<span class="nt">&lt;/ram:ChargeAmount&gt;</span>
                <span class="nt">&lt;/ram:NetPriceProductTradePrice&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeAgreement&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeDelivery&gt;</span>
                <span class="nt">&lt;ram:BilledQuantity</span> <span class="na">unitCode=</span><span class="s">"C62"</span><span class="nt">&gt;</span>3.0000<span class="nt">&lt;/ram:BilledQuantity&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeDelivery&gt;</span>
            <span class="nt">&lt;ram:SpecifiedLineTradeSettlement&gt;</span>
                <span class="nt">&lt;ram:ApplicableTradeTax&gt;</span>
                    <span class="nt">&lt;ram:TypeCode&gt;</span>VAT<span class="nt">&lt;/ram:TypeCode&gt;</span>
                    <span class="nt">&lt;ram:CategoryCode&gt;</span>S<span class="nt">&lt;/ram:CategoryCode&gt;</span>
                    <span class="nt">&lt;ram:RateApplicablePercent&gt;</span>20<span class="nt">&lt;/ram:RateApplicablePercent&gt;</span>
                <span class="nt">&lt;/ram:ApplicableTradeTax&gt;</span>
                <span class="nt">&lt;ram:SpecifiedTradeSettlementLineMonetarySummation&gt;</span>
                    <span class="nt">&lt;ram:LineTotalAmount&gt;</span>135.00<span class="nt">&lt;/ram:LineTotalAmount&gt;</span>
                <span class="nt">&lt;/ram:SpecifiedTradeSettlementLineMonetarySummation&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedLineTradeSettlement&gt;</span>
        <span class="nt">&lt;/ram:IncludedSupplyChainTradeLineItem&gt;</span>
        <span class="nt">&lt;ram:ApplicableHeaderTradeAgreement&gt;</span>
            <span class="nt">&lt;ram:SellerTradeParty&gt;</span>
                <span class="nt">&lt;ram:Name&gt;</span>DocuGenerate<span class="nt">&lt;/ram:Name&gt;</span>
                <span class="nt">&lt;ram:PostalTradeAddress&gt;</span>
                    <span class="nt">&lt;ram:PostcodeCode&gt;</span>90013<span class="nt">&lt;/ram:PostcodeCode&gt;</span>
                    <span class="nt">&lt;ram:LineOne&gt;</span>93 East Lassen Street<span class="nt">&lt;/ram:LineOne&gt;</span>
                    <span class="nt">&lt;ram:CityName&gt;</span>Los Angeles<span class="nt">&lt;/ram:CityName&gt;</span>
                    <span class="nt">&lt;ram:CountryID&gt;</span>US<span class="nt">&lt;/ram:CountryID&gt;</span>
                <span class="nt">&lt;/ram:PostalTradeAddress&gt;</span>
                <span class="nt">&lt;ram:SpecifiedTaxRegistration&gt;</span>
                    <span class="nt">&lt;ram:ID</span> <span class="na">schemeID=</span><span class="s">"VA"</span><span class="nt">&gt;</span>US12367623<span class="nt">&lt;/ram:ID&gt;</span>
                <span class="nt">&lt;/ram:SpecifiedTaxRegistration&gt;</span>
            <span class="nt">&lt;/ram:SellerTradeParty&gt;</span>
            <span class="nt">&lt;ram:BuyerTradeParty&gt;</span>
                <span class="nt">&lt;ram:Name&gt;</span>TechGear Solutions<span class="nt">&lt;/ram:Name&gt;</span>
                <span class="nt">&lt;ram:PostalTradeAddress&gt;</span>
                    <span class="nt">&lt;ram:PostcodeCode&gt;</span>60652<span class="nt">&lt;/ram:PostcodeCode&gt;</span>
                    <span class="nt">&lt;ram:LineOne&gt;</span>82 Bashford Avenue<span class="nt">&lt;/ram:LineOne&gt;</span>
                    <span class="nt">&lt;ram:CityName&gt;</span>Chicago<span class="nt">&lt;/ram:CityName&gt;</span>
                    <span class="nt">&lt;ram:CountryID&gt;</span>US<span class="nt">&lt;/ram:CountryID&gt;</span>
                <span class="nt">&lt;/ram:PostalTradeAddress&gt;</span>
            <span class="nt">&lt;/ram:BuyerTradeParty&gt;</span>
        <span class="nt">&lt;/ram:ApplicableHeaderTradeAgreement&gt;</span>
        <span class="nt">&lt;ram:ApplicableHeaderTradeDelivery&gt;</span>
            <span class="nt">&lt;ram:ActualDeliverySupplyChainEvent&gt;</span>
                <span class="nt">&lt;ram:OccurrenceDateTime&gt;</span>
                    <span class="nt">&lt;udt:DateTimeString</span> <span class="na">format=</span><span class="s">"102"</span><span class="nt">&gt;</span>20250308<span class="nt">&lt;/udt:DateTimeString&gt;</span>
                <span class="nt">&lt;/ram:OccurrenceDateTime&gt;</span>
            <span class="nt">&lt;/ram:ActualDeliverySupplyChainEvent&gt;</span>
        <span class="nt">&lt;/ram:ApplicableHeaderTradeDelivery&gt;</span>
        <span class="nt">&lt;ram:ApplicableHeaderTradeSettlement&gt;</span>
            <span class="nt">&lt;ram:InvoiceCurrencyCode&gt;</span>USD<span class="nt">&lt;/ram:InvoiceCurrencyCode&gt;</span>
            <span class="nt">&lt;ram:ApplicableTradeTax&gt;</span>
                <span class="nt">&lt;ram:CalculatedAmount&gt;</span>81.99<span class="nt">&lt;/ram:CalculatedAmount&gt;</span>
                <span class="nt">&lt;ram:TypeCode&gt;</span>VAT<span class="nt">&lt;/ram:TypeCode&gt;</span>
                <span class="nt">&lt;ram:BasisAmount&gt;</span>409.95<span class="nt">&lt;/ram:BasisAmount&gt;</span>
                <span class="nt">&lt;ram:CategoryCode&gt;</span>S<span class="nt">&lt;/ram:CategoryCode&gt;</span>
                <span class="nt">&lt;ram:RateApplicablePercent&gt;</span>20<span class="nt">&lt;/ram:RateApplicablePercent&gt;</span>
            <span class="nt">&lt;/ram:ApplicableTradeTax&gt;</span>
            <span class="nt">&lt;ram:SpecifiedTradePaymentTerms&gt;</span>
                <span class="nt">&lt;ram:DueDateDateTime&gt;</span>
                    <span class="nt">&lt;udt:DateTimeString</span> <span class="na">format=</span><span class="s">"102"</span><span class="nt">&gt;</span>20250308<span class="nt">&lt;/udt:DateTimeString&gt;</span>
                <span class="nt">&lt;/ram:DueDateDateTime&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedTradePaymentTerms&gt;</span>
            <span class="nt">&lt;ram:SpecifiedTradeSettlementHeaderMonetarySummation&gt;</span>
                <span class="nt">&lt;ram:LineTotalAmount&gt;</span>409.95<span class="nt">&lt;/ram:LineTotalAmount&gt;</span>
                <span class="nt">&lt;ram:TaxBasisTotalAmount&gt;</span>409.95<span class="nt">&lt;/ram:TaxBasisTotalAmount&gt;</span>
                <span class="nt">&lt;ram:TaxTotalAmount</span> <span class="na">currencyID=</span><span class="s">"USD"</span><span class="nt">&gt;</span>81.99<span class="nt">&lt;/ram:TaxTotalAmount&gt;</span>
                <span class="nt">&lt;ram:GrandTotalAmount&gt;</span>491.94<span class="nt">&lt;/ram:GrandTotalAmount&gt;</span>
                <span class="nt">&lt;ram:DuePayableAmount&gt;</span>491.94<span class="nt">&lt;/ram:DuePayableAmount&gt;</span>
            <span class="nt">&lt;/ram:SpecifiedTradeSettlementHeaderMonetarySummation&gt;</span>
        <span class="nt">&lt;/ram:ApplicableHeaderTradeSettlement&gt;</span>
    <span class="nt">&lt;/rsm:SupplyChainTradeTransaction&gt;</span>
<span class="nt">&lt;/rsm:CrossIndustryInvoice&gt;</span>
</code></pre></div></div> <p>Sie können sowohl Ihre Vorlage als auch das XML mit zusätzlichen Geschäftsinformationen erweitern, wie zum Beispiel:</p> <ul> <li><strong>Zahlungsinformationen</strong>: IBAN-Kontodetails, ACH-Routing-Nummern, Zahlungsbedingungen</li> <li><strong>Kontaktdaten</strong>: Ansprechpartner für Käufer- und Verkäuferseite</li> <li><strong>Referenznummern</strong>: Bestellnummern, Lieferscheinreferenzen, Vertragsnummern</li> <li><strong>Zusätzliche Adressen</strong>: Lieferadressen, von der Unternehmensadresse abweichende Rechnungsadressen</li> <li><strong>Steuerdetails</strong>: Mehrere Steuersätze, Steuerbefreiungen, Reverse-Charge-Indikatoren</li> </ul> <h3 id="pdf-mit-xml-erstellen">Schritt 4: PDF mit Eingebettetem XML Erstellen</h3> <p>Sobald Ihre XML-Datei fertig ist, können Sie sie über die <a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-pdf-dateianhaenge-hinzufuegen/">PDF-Anhänge-Funktion</a> von DocuGenerate an das PDF anhängen. Die API unterstützt zwei Methoden für die Bereitstellung der XML-Datei:</p> <ol> <li><strong>Direkte URL</strong>: Wenn Ihre XML-Datei online gehostet ist, können Sie die direkte URL angeben.</li> <li><strong>Base64-Daten-URI</strong>: Für lokale Dateien oder wenn Sie den Inhalt direkt einbetten möchten.</li> </ol> <p>Für den Base64-Ansatz sollte das Daten-URI-Format <code class="language-plaintext highlighter-rouge">data:text/xml;name=factur-x.xml;base64,{BASE64_KODIERTES_XML}</code> sein. Sie können verschiedene <a href="https://www.base64encode.org/" target="_blank" rel="nofollow noopener">Online-Tools</a> oder Befehlszeilenprogramme verwenden, um Ihre XML-Datei in Base64 umzuwandeln. Für das obige XML-Beispiel können Sie die vorab kodierte <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/factur-x-base64.txt">Base64-XML-Datei</a> verwenden.</p> <p>So verwenden Sie die API von DocuGenerate, um die PDF-Rechnung mit dem angehängten XML zu generieren:</p> <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl <span class="nt">-X</span> <span class="s1">'POST'</span> <span class="se">\</span>
  <span class="s1">'https://api.docugenerate.com/v1/document'</span> <span class="se">\</span>
  <span class="nt">-H</span> <span class="s1">'accept: application/json'</span> <span class="se">\</span>
  <span class="nt">-H</span> <span class="s1">'Authorization: 491c000c5fad32ed7787005b0723ad55'</span> <span class="se">\</span>
  <span class="nt">-H</span> <span class="s1">'Content-Type: application/json'</span> <span class="se">\</span>
  <span class="nt">-d</span> <span class="s1">'{
  "template_id": "7VYocxLnIupLU3YT4iLr",
  "data": [{
    "Company Name": "TechGear Solutions",
    "Invoice No": "INV-2025-001",
    "Street Address": "82 Bashford Avenue",
    "City": "Chicago",
    "State": "IL",
    "Zip Code": "60652",
    "Invoice Date": "March 8, 2025",
    "Items": [
      {
        "Description": "Wireless Mouse",
        "Quantity": "5",
        "Price": "$29.99",
        "Amount": "$149.95"
      },
      {
        "Description": "USB-C Cable (2m)",
        "Quantity": "10",
        "Price": "$12.50",
        "Amount": "$125.00"
      },
      {
        "Description": "Laptop Stand",
        "Quantity": "3",
        "Price": "$45.00",
        "Amount": "$135.00"
      }
    ],
    "Sub Total": "$409.95",
    "Tax Rate": "20",
    "Tax Total": "$81.99",
    "Total": "$491.94"
  }],
  "output_format": ".pdf/a-3b",
  "attach": "data:text/xml;name=factur-x.xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJzbTpDcm9zc0luZHVzdHJ5SW52b2ljZSB4bWxuczpyc209InVybjp1bjp1bmVjZTp1bmNlZmFjdDpkYXRhOnN0YW5kYXJkOkNyb3NzSW5kdXN0cnlJbnZvaWNlOjEwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczphPSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpRdWFsaWZpZWREYXRhVHlwZToxMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6cWR0PSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpRdWFsaWZpZWREYXRhVHlwZToxMCIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczpyYW09InVybjp1bjp1bmVjZTp1bmNlZmFjdDpkYXRhOnN0YW5kYXJkOlJldXNhYmxlQWdncmVnYXRlQnVzaW5lc3NJbmZvcm1hdGlvbkVudGl0eToxMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM6dWR0PSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpVbnF1YWxpZmllZERhdGFUeXBlOjEwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIj4KICAgIDxyc206RXhjaGFuZ2VkRG9jdW1lbnRDb250ZXh0PgogICAgICAgIDxyYW06R3VpZGVsaW5lU3BlY2lmaWVkRG9jdW1lbnRDb250ZXh0UGFyYW1ldGVyPgogICAgICAgICAgICA8cmFtOklEPnVybjpjZW4uZXU6ZW4xNjkzMToyMDE3PC9yYW06SUQ+CiAgICAgICAgPC9yYW06R3VpZGVsaW5lU3BlY2lmaWVkRG9jdW1lbnRDb250ZXh0UGFyYW1ldGVyPgogICAgPC9yc206RXhjaGFuZ2VkRG9jdW1lbnRDb250ZXh0PgogICAgPHJzbTpFeGNoYW5nZWREb2N1bWVudD4KICAgICAgICA8cmFtOklEPklOVi0yMDI1LTAwMTwvcmFtOklEPgogICAgICAgIDxyYW06VHlwZUNvZGU+MzgwPC9yYW06VHlwZUNvZGU+CiAgICAgICAgPHJhbTpJc3N1ZURhdGVUaW1lPgogICAgICAgICAgICA8dWR0OkRhdGVUaW1lU3RyaW5nIGZvcm1hdD0iMTAyIj4yMDI1MDMwODwvdWR0OkRhdGVUaW1lU3RyaW5nPgogICAgICAgIDwvcmFtOklzc3VlRGF0ZVRpbWU+CiAgICA8L3JzbTpFeGNoYW5nZWREb2N1bWVudD4KICAgIDxyc206U3VwcGx5Q2hhaW5UcmFkZVRyYW5zYWN0aW9uPgogICAgICAgIDxyYW06SW5jbHVkZWRTdXBwbHlDaGFpblRyYWRlTGluZUl0ZW0+CiAgICAgICAgICAgIDxyYW06QXNzb2NpYXRlZERvY3VtZW50TGluZURvY3VtZW50PgogICAgICAgICAgICAgICAgPHJhbTpMaW5lSUQ+MTwvcmFtOkxpbmVJRD4KICAgICAgICAgICAgPC9yYW06QXNzb2NpYXRlZERvY3VtZW50TGluZURvY3VtZW50PgogICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRyYWRlUHJvZHVjdD4KICAgICAgICAgICAgICAgIDxyYW06TmFtZT5XaXJlbGVzcyBNb3VzZTwvcmFtOk5hbWU+CiAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZFRyYWRlUHJvZHVjdD4KICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRMaW5lVHJhZGVBZ3JlZW1lbnQ+CiAgICAgICAgICAgICAgICA8cmFtOk5ldFByaWNlUHJvZHVjdFRyYWRlUHJpY2U+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpDaGFyZ2VBbW91bnQ+MjkuOTk8L3JhbTpDaGFyZ2VBbW91bnQ+CiAgICAgICAgICAgICAgICA8L3JhbTpOZXRQcmljZVByb2R1Y3RUcmFkZVByaWNlPgogICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMaW5lVHJhZGVBZ3JlZW1lbnQ+CiAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkTGluZVRyYWRlRGVsaXZlcnk+CiAgICAgICAgICAgICAgICA8cmFtOkJpbGxlZFF1YW50aXR5IHVuaXRDb2RlPSJDNjIiPjUuMDAwMDwvcmFtOkJpbGxlZFF1YW50aXR5PgogICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMaW5lVHJhZGVEZWxpdmVyeT4KICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRMaW5lVHJhZGVTZXR0bGVtZW50PgogICAgICAgICAgICAgICAgPHJhbTpBcHBsaWNhYmxlVHJhZGVUYXg+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpUeXBlQ29kZT5WQVQ8L3JhbTpUeXBlQ29kZT4KICAgICAgICAgICAgICAgICAgICA8cmFtOkNhdGVnb3J5Q29kZT5TPC9yYW06Q2F0ZWdvcnlDb2RlPgogICAgICAgICAgICAgICAgICAgIDxyYW06UmF0ZUFwcGxpY2FibGVQZXJjZW50PjIwPC9yYW06UmF0ZUFwcGxpY2FibGVQZXJjZW50PgogICAgICAgICAgICAgICAgPC9yYW06QXBwbGljYWJsZVRyYWRlVGF4PgogICAgICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRUcmFkZVNldHRsZW1lbnRMaW5lTW9uZXRhcnlTdW1tYXRpb24+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpMaW5lVG90YWxBbW91bnQ+MTQ5Ljk1PC9yYW06TGluZVRvdGFsQW1vdW50PgogICAgICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkVHJhZGVTZXR0bGVtZW50TGluZU1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMaW5lVHJhZGVTZXR0bGVtZW50PgogICAgICAgIDwvcmFtOkluY2x1ZGVkU3VwcGx5Q2hhaW5UcmFkZUxpbmVJdGVtPgogICAgICAgIDxyYW06SW5jbHVkZWRTdXBwbHlDaGFpblRyYWRlTGluZUl0ZW0+CiAgICAgICAgICAgIDxyYW06QXNzb2NpYXRlZERvY3VtZW50TGluZURvY3VtZW50PgogICAgICAgICAgICAgICAgPHJhbTpMaW5lSUQ+MjwvcmFtOkxpbmVJRD4KICAgICAgICAgICAgPC9yYW06QXNzb2NpYXRlZERvY3VtZW50TGluZURvY3VtZW50PgogICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRyYWRlUHJvZHVjdD4KICAgICAgICAgICAgICAgIDxyYW06TmFtZT5VU0ItQyBDYWJsZSAoMm0pPC9yYW06TmFtZT4KICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkVHJhZGVQcm9kdWN0PgogICAgICAgICAgICA8cmFtOlNwZWNpZmllZExpbmVUcmFkZUFncmVlbWVudD4KICAgICAgICAgICAgICAgIDxyYW06TmV0UHJpY2VQcm9kdWN0VHJhZGVQcmljZT4KICAgICAgICAgICAgICAgICAgICA8cmFtOkNoYXJnZUFtb3VudD4xMi41MDwvcmFtOkNoYXJnZUFtb3VudD4KICAgICAgICAgICAgICAgIDwvcmFtOk5ldFByaWNlUHJvZHVjdFRyYWRlUHJpY2U+CiAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZExpbmVUcmFkZUFncmVlbWVudD4KICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRMaW5lVHJhZGVEZWxpdmVyeT4KICAgICAgICAgICAgICAgIDxyYW06QmlsbGVkUXVhbnRpdHkgdW5pdENvZGU9IkM2MiI+MTAuMDAwMDwvcmFtOkJpbGxlZFF1YW50aXR5PgogICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMaW5lVHJhZGVEZWxpdmVyeT4KICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRMaW5lVHJhZGVTZXR0bGVtZW50PgogICAgICAgICAgICAgICAgPHJhbTpBcHBsaWNhYmxlVHJhZGVUYXg+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpUeXBlQ29kZT5WQVQ8L3JhbTpUeXBlQ29kZT4KICAgICAgICAgICAgICAgICAgICA8cmFtOkNhdGVnb3J5Q29kZT5TPC9yYW06Q2F0ZWdvcnlDb2RlPgogICAgICAgICAgICAgICAgICAgIDxyYW06UmF0ZUFwcGxpY2FibGVQZXJjZW50PjIwPC9yYW06UmF0ZUFwcGxpY2FibGVQZXJjZW50PgogICAgICAgICAgICAgICAgPC9yYW06QXBwbGljYWJsZVRyYWRlVGF4PgogICAgICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRUcmFkZVNldHRsZW1lbnRMaW5lTW9uZXRhcnlTdW1tYXRpb24+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpMaW5lVG90YWxBbW91bnQ+MTI1LjAwPC9yYW06TGluZVRvdGFsQW1vdW50PgogICAgICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkVHJhZGVTZXR0bGVtZW50TGluZU1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMaW5lVHJhZGVTZXR0bGVtZW50PgogICAgICAgIDwvcmFtOkluY2x1ZGVkU3VwcGx5Q2hhaW5UcmFkZUxpbmVJdGVtPgogICAgICAgIDxyYW06SW5jbHVkZWRTdXBwbHlDaGFpblRyYWRlTGluZUl0ZW0+CiAgICAgICAgICAgIDxyYW06QXNzb2NpYXRlZERvY3VtZW50TGluZURvY3VtZW50PgogICAgICAgICAgICAgICAgPHJhbTpMaW5lSUQ+MzwvcmFtOkxpbmVJRD4KICAgICAgICAgICAgPC9yYW06QXNzb2NpYXRlZERvY3VtZW50TGluZURvY3VtZW50PgogICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRyYWRlUHJvZHVjdD4KICAgICAgICAgICAgICAgIDxyYW06TmFtZT5MYXB0b3AgU3RhbmQ8L3JhbTpOYW1lPgogICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRUcmFkZVByb2R1Y3Q+CiAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkTGluZVRyYWRlQWdyZWVtZW50PgogICAgICAgICAgICAgICAgPHJhbTpOZXRQcmljZVByb2R1Y3RUcmFkZVByaWNlPgogICAgICAgICAgICAgICAgICAgIDxyYW06Q2hhcmdlQW1vdW50PjQ1LjAwPC9yYW06Q2hhcmdlQW1vdW50PgogICAgICAgICAgICAgICAgPC9yYW06TmV0UHJpY2VQcm9kdWN0VHJhZGVQcmljZT4KICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkTGluZVRyYWRlQWdyZWVtZW50PgogICAgICAgICAgICA8cmFtOlNwZWNpZmllZExpbmVUcmFkZURlbGl2ZXJ5PgogICAgICAgICAgICAgICAgPHJhbTpCaWxsZWRRdWFudGl0eSB1bml0Q29kZT0iQzYyIj4zLjAwMDA8L3JhbTpCaWxsZWRRdWFudGl0eT4KICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkTGluZVRyYWRlRGVsaXZlcnk+CiAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkTGluZVRyYWRlU2V0dGxlbWVudD4KICAgICAgICAgICAgICAgIDxyYW06QXBwbGljYWJsZVRyYWRlVGF4PgogICAgICAgICAgICAgICAgICAgIDxyYW06VHlwZUNvZGU+VkFUPC9yYW06VHlwZUNvZGU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpDYXRlZ29yeUNvZGU+UzwvcmFtOkNhdGVnb3J5Q29kZT4KICAgICAgICAgICAgICAgICAgICA8cmFtOlJhdGVBcHBsaWNhYmxlUGVyY2VudD4yMDwvcmFtOlJhdGVBcHBsaWNhYmxlUGVyY2VudD4KICAgICAgICAgICAgICAgIDwvcmFtOkFwcGxpY2FibGVUcmFkZVRheD4KICAgICAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkVHJhZGVTZXR0bGVtZW50TGluZU1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxyYW06TGluZVRvdGFsQW1vdW50PjEzNS4wMDwvcmFtOkxpbmVUb3RhbEFtb3VudD4KICAgICAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudExpbmVNb25ldGFyeVN1bW1hdGlvbj4KICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkTGluZVRyYWRlU2V0dGxlbWVudD4KICAgICAgICA8L3JhbTpJbmNsdWRlZFN1cHBseUNoYWluVHJhZGVMaW5lSXRlbT4KICAgICAgICA8cmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZUFncmVlbWVudD4KICAgICAgICAgICAgPHJhbTpTZWxsZXJUcmFkZVBhcnR5PgogICAgICAgICAgICAgICAgPHJhbTpOYW1lPkRvY3VHZW5lcmF0ZTwvcmFtOk5hbWU+CiAgICAgICAgICAgICAgICA8cmFtOlBvc3RhbFRyYWRlQWRkcmVzcz4KICAgICAgICAgICAgICAgICAgICA8cmFtOlBvc3Rjb2RlQ29kZT45MDAxMzwvcmFtOlBvc3Rjb2RlQ29kZT4KICAgICAgICAgICAgICAgICAgICA8cmFtOkxpbmVPbmU+OTMgRWFzdCBMYXNzZW4gU3RyZWV0PC9yYW06TGluZU9uZT4KICAgICAgICAgICAgICAgICAgICA8cmFtOkNpdHlOYW1lPkxvcyBBbmdlbGVzPC9yYW06Q2l0eU5hbWU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpDb3VudHJ5SUQ+VVM8L3JhbTpDb3VudHJ5SUQ+CiAgICAgICAgICAgICAgICA8L3JhbTpQb3N0YWxUcmFkZUFkZHJlc3M+CiAgICAgICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRheFJlZ2lzdHJhdGlvbj4KICAgICAgICAgICAgICAgICAgICA8cmFtOklEIHNjaGVtZUlEPSJWQSI+VVMxMjM2NzYyMzwvcmFtOklEPgogICAgICAgICAgICAgICAgPC9yYW06U3BlY2lmaWVkVGF4UmVnaXN0cmF0aW9uPgogICAgICAgICAgICA8L3JhbTpTZWxsZXJUcmFkZVBhcnR5PgogICAgICAgICAgICA8cmFtOkJ1eWVyVHJhZGVQYXJ0eT4KICAgICAgICAgICAgICAgIDxyYW06TmFtZT5UZWNoR2VhciBTb2x1dGlvbnM8L3JhbTpOYW1lPgogICAgICAgICAgICAgICAgPHJhbTpQb3N0YWxUcmFkZUFkZHJlc3M+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpQb3N0Y29kZUNvZGU+NjA2NTI8L3JhbTpQb3N0Y29kZUNvZGU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpMaW5lT25lPjgyIEJhc2hmb3JkIEF2ZW51ZTwvcmFtOkxpbmVPbmU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpDaXR5TmFtZT5DaGljYWdvPC9yYW06Q2l0eU5hbWU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpDb3VudHJ5SUQ+VVM8L3JhbTpDb3VudHJ5SUQ+CiAgICAgICAgICAgICAgICA8L3JhbTpQb3N0YWxUcmFkZUFkZHJlc3M+CiAgICAgICAgICAgIDwvcmFtOkJ1eWVyVHJhZGVQYXJ0eT4KICAgICAgICA8L3JhbTpBcHBsaWNhYmxlSGVhZGVyVHJhZGVBZ3JlZW1lbnQ+CiAgICAgICAgPHJhbTpBcHBsaWNhYmxlSGVhZGVyVHJhZGVEZWxpdmVyeT4KICAgICAgICAgICAgPHJhbTpBY3R1YWxEZWxpdmVyeVN1cHBseUNoYWluRXZlbnQ+CiAgICAgICAgICAgICAgICA8cmFtOk9jY3VycmVuY2VEYXRlVGltZT4KICAgICAgICAgICAgICAgICAgICA8dWR0OkRhdGVUaW1lU3RyaW5nIGZvcm1hdD0iMTAyIj4yMDI1MDMwODwvdWR0OkRhdGVUaW1lU3RyaW5nPgogICAgICAgICAgICAgICAgPC9yYW06T2NjdXJyZW5jZURhdGVUaW1lPgogICAgICAgICAgICA8L3JhbTpBY3R1YWxEZWxpdmVyeVN1cHBseUNoYWluRXZlbnQ+CiAgICAgICAgPC9yYW06QXBwbGljYWJsZUhlYWRlclRyYWRlRGVsaXZlcnk+CiAgICAgICAgPHJhbTpBcHBsaWNhYmxlSGVhZGVyVHJhZGVTZXR0bGVtZW50PgogICAgICAgICAgICA8cmFtOkludm9pY2VDdXJyZW5jeUNvZGU+VVNEPC9yYW06SW52b2ljZUN1cnJlbmN5Q29kZT4KICAgICAgICAgICAgPHJhbTpBcHBsaWNhYmxlVHJhZGVUYXg+CiAgICAgICAgICAgICAgICA8cmFtOkNhbGN1bGF0ZWRBbW91bnQ+ODEuOTk8L3JhbTpDYWxjdWxhdGVkQW1vdW50PgogICAgICAgICAgICAgICAgPHJhbTpUeXBlQ29kZT5WQVQ8L3JhbTpUeXBlQ29kZT4KICAgICAgICAgICAgICAgIDxyYW06QmFzaXNBbW91bnQ+NDA5Ljk1PC9yYW06QmFzaXNBbW91bnQ+CiAgICAgICAgICAgICAgICA8cmFtOkNhdGVnb3J5Q29kZT5TPC9yYW06Q2F0ZWdvcnlDb2RlPgogICAgICAgICAgICAgICAgPHJhbTpSYXRlQXBwbGljYWJsZVBlcmNlbnQ+MjA8L3JhbTpSYXRlQXBwbGljYWJsZVBlcmNlbnQ+CiAgICAgICAgICAgIDwvcmFtOkFwcGxpY2FibGVUcmFkZVRheD4KICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRUcmFkZVBheW1lbnRUZXJtcz4KICAgICAgICAgICAgICAgIDxyYW06RHVlRGF0ZURhdGVUaW1lPgogICAgICAgICAgICAgICAgICAgIDx1ZHQ6RGF0ZVRpbWVTdHJpbmcgZm9ybWF0PSIxMDIiPjIwMjUwMzA4PC91ZHQ6RGF0ZVRpbWVTdHJpbmc+CiAgICAgICAgICAgICAgICA8L3JhbTpEdWVEYXRlRGF0ZVRpbWU+CiAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZFRyYWRlUGF5bWVudFRlcm1zPgogICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudEhlYWRlck1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgICAgICAgPHJhbTpMaW5lVG90YWxBbW91bnQ+NDA5Ljk1PC9yYW06TGluZVRvdGFsQW1vdW50PgogICAgICAgICAgICAgICAgPHJhbTpUYXhCYXNpc1RvdGFsQW1vdW50PjQwOS45NTwvcmFtOlRheEJhc2lzVG90YWxBbW91bnQ+CiAgICAgICAgICAgICAgICA8cmFtOlRheFRvdGFsQW1vdW50IGN1cnJlbmN5SUQ9IlVTRCI+ODEuOTk8L3JhbTpUYXhUb3RhbEFtb3VudD4KICAgICAgICAgICAgICAgIDxyYW06R3JhbmRUb3RhbEFtb3VudD40OTEuOTQ8L3JhbTpHcmFuZFRvdGFsQW1vdW50PgogICAgICAgICAgICAgICAgPHJhbTpEdWVQYXlhYmxlQW1vdW50PjQ5MS45NDwvcmFtOkR1ZVBheWFibGVBbW91bnQ+CiAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudEhlYWRlck1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgIDwvcmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZVNldHRsZW1lbnQ+CiAgICA8L3JzbTpTdXBwbHlDaGFpblRyYWRlVHJhbnNhY3Rpb24+CjwvcnNtOkNyb3NzSW5kdXN0cnlJbnZvaWNlPg=="
}'</span>
</code></pre></div></div> <p>Der <code class="language-plaintext highlighter-rouge">name=factur-x.xml</code>-Wert ist ein wichtiger Teil des <code class="language-plaintext highlighter-rouge">attach</code>-Parameters, da er den Dateinamen des Anhangs angibt, um dem Factur-X-<a href="#standards-und-namenskonventionen">Namensschema</a> zu entsprechen, das der Standard vorschreibt. Darüber hinaus ist die Verwendung des <code class="language-plaintext highlighter-rouge">.pdf/a-3b</code>-Ausgabeformats notwendig, um ein PDF/A-3-konformes Dokument zu erstellen, das für E-Rechnungsstandards erforderlich ist, da es eingebettete Dateianhänge unterstützt und gleichzeitig langfristige Archivierungsfähigkeiten beibehält.</p> <h3 id="ergebnis-validieren">Schritt 5: Ergebnis Validieren</h3> <p>Nach der Generierung enthält die <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.pdf">resultierende PDF</a> eine professionelle Rechnung entsprechend Ihrer Vorlage sowie die eingebettete XML-Datei. Sie können den Anhang prüfen, indem Sie die PDF in einem Viewer öffnen, der Anhänge unterstützt, wie z. B. Adobe Acrobat Reader, wo die <code class="language-plaintext highlighter-rouge">factur-x.xml</code>-Datei im <strong>Attachments</strong>-Panel aufgelistet wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/generated-invoice.png" alt="Generierte PDF mit sichtbarem XML-Anhang"/></p> <h2 id="best-practices">Best Practices für die E-Rechnungsimplementierung</h2> <h3 id="datenkonsistenz">Datenkonsistenz</h3> <p>Die perfekte Synchronisation zwischen Ihrer PDF-Darstellung und den eingebetteten XML-Daten aufrechtzuerhalten ist einer der kritischsten Aspekte der E-Rechnungsimplementierung. Da Empfänger entweder das visuelle PDF oder das strukturierte XML zur Verarbeitung verwenden können, können Inkonsistenzen zu Zahlungsverzögerungen, Konformitätsproblemen oder der direkten Ablehnung durch automatisierte Systeme führen.</p> <p>Stellen Sie sicher, dass alle Beträge, Daten und andere kritische Informationen zwischen der PDF-Darstellung und dem eingebetteten XML identisch sind. Schenken Sie Berechnungen, Steuerbeträgen und Summen besondere Aufmerksamkeit, da diese häufig die ersten Elemente sind, die von Empfängersystemen validiert werden. Jede Abweichung kann zu Validierungsfehlern oder Verarbeitungsproblemen führen.</p> <h3 id="fehlerbehandlung">Fehlerbehandlung</h3> <p>Eine robuste Fehlerbehandlung ist unerlässlich für die Aufrechterhaltung der Systemzuverlässigkeit und reibungslose Abläufe bei der Verarbeitung hoher Rechnungsvolumina. E-Rechnungssysteme stehen vor besonderen Herausforderungen, da sie mehrere Komponenten (XML-Generierung, PDF-Erstellung und Anhangsprozesse) koordinieren müssen und dabei strenge Konformitätsanforderungen einhalten müssen. Implementieren Sie eine umfassende Fehlerbehandlung für die XML-Generierung und PDF-Erstellung mit entsprechender Protokollierung und Wiederherstellungsmechanismen. Häufige Probleme sind:</p> <ul> <li>Ungültige XML-Struktur oder fehlende Pflichtfelder</li> <li>Berechnungsfehler zwischen PDF- und XML-Beträgen</li> <li>Falsche Dateibenennung oder Anhangparameter</li> <li>Fehler beim Rendern von Vorlagen</li> </ul> <h3 id="tests-und-validierung">Tests und Validierung</h3> <p>Gründliches Testen ist für E-Rechnungssysteme entscheidend, da Konformitätsfehler zu rechtlichen Problemen, Zahlungsverzögerungen und geschädigten Geschäftsbeziehungen führen können. Im Gegensatz zur herkömmlichen Dokumentengenerierung müssen E-Rechnungen mehrere Validierungsebenen durchlaufen, darunter technische XML-Validierung, Geschäftsregelprüfung und Überprüfung der regulatorischen Konformität. Bevor Sie Ihr E-Rechnungssystem in Betrieb nehmen, etablieren Sie eine umfassende Teststrategie, die sowohl technische als auch geschäftliche Szenarien abdeckt:</p> <ul> <li>XML-Dateien gegen offizielle XSD-Schemata und Schematron-Regeln validieren</li> <li>Verschiedene Rechnungsszenarien testen (unterschiedliche Währungen, Steuersätze, Positionen)</li> <li>PDF/A-3b-Konformität mit Validierungstools prüfen</li> <li>Mit Empfängersystemen testen, um eine korrekte Verarbeitung sicherzustellen</li> </ul> <h2 id="zukunftssicherheit">Zukunftssicherheit Ihres E-Rechnungssystems</h2> <h3 id="standardentwicklung">Standardentwicklung</h3> <p>E-Rechnungsstandards entwickeln sich rasch weiter, da Regierungen und internationale Organisationen ihre Anforderungen verfeinern. Regelmäßige Aktualisierungen von Codelisten und Validierungsregeln finden in vielen Ländern halbjährlich statt, während neue Profilanforderungen und optionale Funktionen eingeführt werden, um Branchenbedürfnisse und grenzüberschreitende Interoperabilität zu unterstützen. Digitale Signatur- und Sicherheitsverbesserungen werden ebenfalls entwickelt, um Cybersicherheitsbedrohungen zu begegnen und die Dokumentauthentizität zu gewährleisten.</p> <h3 id="regulatorische-aenderungen">Regulatorische Änderungen</h3> <p>Regierungen weltweit führen E-Rechnungsmandate mit unterschiedlichem Tempo ein: In Deutschland gilt die B2B-Anforderung ab 2025, Frankreich folgt 2026. Änderungen der Steuermeldeanforderungen begleiten diese Mandate häufig und erfordern die Echtzeit-Übermittlung von Rechnungsdaten an Steuerbehörden. Neue Konformitäts- und Archivierungspflichten werden eingeführt, während Maßnahmen zur Erleichterung des grenzüberschreitenden Handels erfordern, dass Systeme mehrere Standards gleichzeitig unterstützen.</p> <h3 id="technologische-fortschritte">Technologische Fortschritte</h3> <p>Neue Technologien gestalten die E-Rechnungslandschaft mit neuen Automatisierungs-, Sicherheits- und Effizienzchancen um. Blockchain-basierte Verifizierungssysteme bieten unveränderliche Prüfpfade, während KI-gestützte Datenextraktionswerkzeuge die Verarbeitungsgenauigkeit verbessern und manuelle Eingriffe reduzieren. Echtzeit-Steuerberechnungsfähigkeiten ermöglichen die automatische Konformität über mehrere Rechtsgebiete hinweg, und verbesserte mobile Lösungen bieten flexiblere Rechnungsstellungsoptionen. Ein erweiterungsorientiertes Systemdesign erleichtert die spätere Integration dieser Fortschritte, sobald sie ausgereift sind.</p> <h2 id="fazit">Fazit</h2> <p>Der Aufbau eines robusten E-Rechnungssystems mit DocuGenerate bietet einen praktischen Weg zur Einhaltung europäischer und globaler E-Rechnungsanforderungen. Durch die Trennung der <a href="#xml-generieren">XML-Erstellung</a> von der <a href="#pdf-mit-xml-erstellen">PDF-Generierung</a> können Sie sowohl technische Konformität als auch Darstellungsflexibilität gewährleisten. Dieser hybride Ansatz, der strukturierte XML-Daten mit professioneller PDF-Darstellung kombiniert, bietet die beste Benutzererfahrung und erfüllt gleichzeitig die regulatorischen Anforderungen.</p> <p>Ob Sie E-Rechnungsstellung für ein kleines Unternehmen oder einen großen Konzern implementieren – die in diesem Leitfaden beschriebenen Prinzipien und Muster bieten eine solide Grundlage für den Erfolg. Da die E-Rechnungsstellung in immer mehr Märkten obligatorisch wird, verschafft ein skalierbares und konformes System erhebliche Wettbewerbsvorteile. Denken Sie daran, mit den sich entwickelnden Standards Schritt zu halten, Ihre Implementierungen gründlich zu validieren und von Anfang an auf Skalierbarkeit zu setzen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.docx">Rechnungsvorlage</a> – Word-Vorlage aus diesem Tutorial herunterladen.</li> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/invoice-data.json">JSON-Beispieldaten</a> – Beispiel-Rechnungsdaten aus diesem Tutorial herunterladen.</li> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/factur-x.xml">Beispiel-XML-Datei</a> – XML-Datei aus diesem Tutorial herunterladen.</li> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.pdf">Generiertes PDF-Beispiel</a> – Vollständige PDF mit eingebettetem XML-Anhang herunterladen.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-pdf-dateianhaenge-hinzufuegen/">PDF-Anhänge-Dokumentation</a> – So betten Sie Dateien in PDFs ein.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-factur-x-konforme-pdfs-erstellen/">Factur-X-PDF-Dokumentation</a> – So erstellen Sie Factur-X-konforme PDFs.</li> <li><a href="https://www.mustangproject.org/zugferd/" target="_blank" rel="nofollow noopener">ZUGFeRD-Spezifikation</a> – Offizielle ZUGFeRD-Dokumentation.</li> <li><a href="https://fnfe-mpe.org/factur-x/" target="_blank" rel="nofollow noopener">Factur-X-Standard</a> – Französisch-deutscher Hybridformat-Standard.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Invoices"/> <category term="E-Invoicing"/> <category term="XML"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie konforme Factur-X-Hybrid-PDF-Rechnungen mit eingebetteten XML-Dateien erstellen. Entdecken Sie die Anforderungen, Standards und Implementierungsansätze für ZUGFeRD, Factur-X und andere E-Rechnungsformate in Europa und weltweit.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Erstellung von Schriftsätzen mit Make und DocuGenerate Automatisieren</title> <link href="https://www.docugenerate.com/de/blog/erstellung-von-schriftsaetzen-mit-make-und-docugenerate-automatisieren/" rel="alternate" type="text/html" title="Erstellung von Schriftsätzen mit Make und DocuGenerate Automatisieren"/> <published>2025-02-21T00:00:00+00:00</published> <updated>2025-02-21T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/erstellung-von-schriftsaetzen-mit-make-und-docugenerate-automatisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/erstellung-von-schriftsaetzen-mit-make-und-docugenerate-automatisieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Rechtsanwälte stehen vor einer ständigen Herausforderung: der zeitaufwendige Prozess, Mandanteninformationen in korrekt formatierte Gerichtsdokumente umzuwandeln. Eines der grundlegendsten Dokumente in Zivilrechtsstreitigkeiten ist der Schriftsatz (<em>Pleading Paper</em>), der die Grundlage für die Darlegung von Fällen vor Gericht bildet. Die manuelle Erstellung dieser Dokumente aus Mandantenaufnahmeformularen erfordert repetitive Dateneingabe, Formatierung und birgt ein erhebliches Fehlerrisiko.</p> <p>Ein Schriftsatz ist ein zu Beginn eines Falls eingereichtes Gerichtsdokument, das die Position Ihres Mandanten darlegt – ob als Klage oder Verteidigung. Dieses Dokument demonstriert dem Gericht und den Gegenparteien, was angeblich geschehen ist, und liefert die sachliche Grundlage für den Fall. Schriftsätze enthalten zwar nicht alle Beweise, die Sie in der Hauptverhandlung vorlegen werden, aber sie legen den wesentlichen Rahmen fest, der bestimmt, was bewiesen werden muss, sollte die Angelegenheit vor Gericht gehen.</p> <p>Dieses Tutorial zeigt, wie Sie einen automatisierten Workflow erstellen, der Mandantenaufnahmedaten direkt in professionell formatierte Schriftsätze umwandelt. Wir verwenden drei leistungsstarke Tools: <a href="https://www.typeform.com/" target="_blank" rel="nofollow noopener">Typeform</a> für die Datenerfassung, <a href="https://www.make.com/en?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Make</a> für die Workflow-Automatisierung und <a href="https://www.docugenerate.com/">DocuGenerate</a> für die Dokumentengenerierung. Das System erstellt automatisch PDF-Schriftsätze und speichert diese in Dropbox für einfachen Zugriff und die Verteilung an Mandanten.</p> <p>Obwohl reale Implementierungen möglicherweise mit spezialisierten Rechtsfallmanagementsystemen integriert werden, verwendet dieses Tutorial zugängliche Tools, die die Kernprinzipien demonstrieren. Der von uns aufgebaute Automatisierungsworkflow kann leicht angepasst werden, um mit anspruchsvolleren Rechtsanwalts-Software-Plattformen zu arbeiten oder Dokumente in verschiedene Speichersysteme auszugeben, je nach den spezifischen Anforderungen Ihrer Kanzlei.</p> <h2 id="grundlagen-von-schriftsaetzen">Grundlagen von Schriftsätzen</h2> <p>Bevor wir mit der Automatisierung beginnen, ist es wichtig, die verschiedenen Arten von Schriftsätzen und ihren Einsatz in Zivilrechtsstreitigkeiten zu verstehen. Verschiedene Prozessphasen erfordern unterschiedliche Schriftsatzdokumente, die jeweils einen bestimmten rechtlichen Zweck erfüllen.</p> <p>Zu den häufigsten Schriftsatzarten gehören <strong>Klageschriften</strong>, die den Fall des Klägers mit detaillierten Beschreibungen der Handlungen des Beklagten und Schadensersatzforderungen darstellen; <strong>Antwortschriften</strong>, die innerhalb festgelegter Fristen auf Klageschriften reagieren und affirmative Verteidigungen beinhalten können; <strong>Widerklagen</strong>, bei denen Beklagte eigene Ansprüche aus demselben Vorfall verfolgen; sowie verschiedene <strong>Vorverhandlungsanträge</strong>, die Beweisfragen klären oder eine Klageabweisung anstreben.</p> <p>Jeder Schriftsatz muss strenge Formatierungsanforderungen erfüllen, die je nach Gerichtsbarkeit variieren, aber in der Regel spezifische <strong>Schriftart</strong> (Times New Roman), <strong>Seitenränder</strong> (2,5 cm auf allen Seiten für ausreichenden Abstand), <strong>Zeilenabstand</strong> (doppelt für einfaches Lesen und Annotieren) und andere strukturelle Elemente wie <strong>Zeilennummern</strong> umfassen. Das Verstehen dieser Anforderungen ist entscheidend für die Erstellung von Vorlagen, die vom Gericht akzeptiert werden.</p> <h2 id="vorlage-erstellen">Die Schriftsatz-Vorlage Erstellen</h2> <p>Die Grundlage unseres automatisierten Systems ist eine korrekt strukturierte Schriftsatz-Vorlage mit <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> für die dynamische Dateneinfügung. Die Erstellung dieser Vorlage erfordert Aufmerksamkeit sowohl für rechtliche Formatierungsstandards als auch für technische Implementierungsdetails.</p> <p>Für dieses Tutorial verwenden wir ein standardmäßiges Microsoft-Word-<a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/Pleading Paper.docx">Schriftsatz-Dokument</a>, das manuell hochgeladen wird, um eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">Vorlage zu erstellen</a> auf DocuGenerate.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/pleading-paper-template.png" alt="Struktur der Schriftsatz-Vorlage"/></p> <p>Die Vorlage enthält spezifische Zusammenführungs-Tags, die mit Daten aus unserem Mandantenaufnahmeformular befüllt werden. Die Schlüssel-Tags in unserer Vorlage umfassen:</p> <ul> <li><code class="language-plaintext highlighter-rouge">[ATTORNEY NAME]</code>, <code class="language-plaintext highlighter-rouge">[ATTORNEY ADDRESS]</code>, <code class="language-plaintext highlighter-rouge">[ZIP CODE]</code>, <code class="language-plaintext highlighter-rouge">[COUNTY]</code>, <code class="language-plaintext highlighter-rouge">[EMAIL]</code>, <code class="language-plaintext highlighter-rouge">[PHONE]</code> und <code class="language-plaintext highlighter-rouge">[FAX]</code> für die Anwaltskontaktdaten;</li> <li><code class="language-plaintext highlighter-rouge">[COURT NAME]</code> und <code class="language-plaintext highlighter-rouge">[JURISDICTION]</code> für die Gerichtsdetails;</li> <li><code class="language-plaintext highlighter-rouge">[PLAINTIFFS NAME]</code> und <code class="language-plaintext highlighter-rouge">[DEFENDANTS NAME]</code> für die Parteiidentifikation;</li> <li><code class="language-plaintext highlighter-rouge">[NUMBER]</code> für die Aktenzeichen;</li> <li><code class="language-plaintext highlighter-rouge">[PLEADING TITLE]</code> für die Art des Schriftsatzes;</li> <li><code class="language-plaintext highlighter-rouge">[BODY OF PLEADING]</code> für den Hauptinhalt;</li> <li><code class="language-plaintext highlighter-rouge">[DATE]</code> für das Einreichungsdatum.</li> </ul> <p>Diese Vorlagenstruktur stellt sicher, dass alle wesentlichen rechtlichen Dokumentelemente vorhanden sind, während die Flexibilität erhalten bleibt, verschiedene Arten von Schriftsätzen zu bearbeiten. Die Anwaltsinformationsfelder enthalten in der Regel statische Daten, die über alle von Ihrer Kanzlei generierten Dokumente hinweg konsistent bleiben, während die fallspezifischen Felder dynamisch aus den Antworten des Mandantenaufnahmeformulars befüllt werden.</p> <h2 id="typeform-einrichten">Das Mandantenaufnahmeformular mit Typeform Einrichten</h2> <p>Der nächste Schritt in unserem Automatisierungsworkflow ist die Erstellung eines Mandantenaufnahmeformulars, das alle für die Generierung von Schriftsätzen benötigten Informationen erfasst. Wir verwenden Typeforms KI-gestütztes Formularerstellungs-Feature, um schnell ein professionelles Aufnahmeformular zu erstellen, das den Zusammenführungs-Tags unserer Vorlage entspricht.</p> <h3 id="typeform-ki-ersteller">Typeforms KI-Formularersteller Verwenden</h3> <p>Typeform bietet ein <a href="https://help.typeform.com/hc/en-us/articles/14955071444244-Use-AI-to-create-forms" target="_blank" rel="nofollow noopener">KI-Formularerstellungstool</a> an, das Formulare basierend auf natürlichsprachlichen Beschreibungen generieren kann. Dieser Ansatz ist besonders nützlich für Juristen, die sich auf Inhalte statt auf Formulardesign konzentrieren möchten. Der KI-Formularerstellungsprozess umfasst drei Schritte, in denen Sie Ihre Anforderungen durch beschreibende Eingaben festlegen können.</p> <p>Für den ersten Schritt, <strong>Describe your form</strong>, verwenden wir folgende Eingabe: <em>“I want to create a Client Intake Form for my law firm. The form will be used to create a Pleading Paper based on the input values.”</em> Dies gibt der KI den Kontext, den sie benötigt, um den rechtlichen Zweck und den beabsichtigten Anwendungsfall des Formulars zu verstehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/typeform-ai-form-v2.png" alt="Typeform KI-Formularerstellungs-Interface"/></p> <p>Im zweiten Schritt, <strong>Add important topics</strong>, geben wir die genauen benötigten Felder an: <em>“The Pleading Paper template will have the following fields: PLEADING TITLE, COURT NAME, JURISDICTION, PLAINTIFFS NAME, DEFENDANTS NAME, NUMBER, BODY OF PLEADING, DATE. Can you make the form to have inputs/questions for each one of these fields?”</em></p> <p>Beachten Sie, dass wir die Anwaltskontaktinformationsfelder bewusst aus dem Aufnahmeformular ausschließen. Diese Informationen bleiben für jede Kanzlei in der Regel statisch und können in unseren Automatisierungsworkflow hardcodiert werden, anstatt von Mandanten erfasst zu werden. Das reduziert die Formularkomplexität und erhöht gleichzeitig die Datengenauigkeit.</p> <h3 id="formularstruktur-und-tests">Formularstruktur und Tests</h3> <p>Typeforms KI generiert erfolgreich ein umfassendes Aufnahmeformular mit geeigneten Feldtypen für jeden Datenpunkt. Die meisten Felder verwenden <strong>Short Text</strong>-Eingabetypen für Namen, Nummern und Titel, während das Feld <strong>Body of Pleading</strong> einen <strong>Long Text</strong>-Eingabetyp verwendet, um mehrzähligen Rechtsinhalt aufzunehmen, der sich über mehrere Zeilen erstrecken kann.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/client-intake-form.png" alt="Generiertes Mandantenaufnahmeformular"/></p> <p>Das resultierende Formular bietet eine benutzerfreundliche Oberfläche für Mandanten, um ihre Fallinformationen einzureichen. Jede Frage ist klar beschriftet und entspricht direkt den Zusammenführungs-Tags in unserer Schriftsatz-Vorlage. Sie können das Formular über diesen <a href="https://form.typeform.com/to/U7qVSqcZ" target="_blank" rel="nofollow noopener">Client Intake Form</a>-Link testen.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/client-intake-form-v2.gif" alt="Ausfüllen des Mandantenaufnahmeformulars"/></p> <p>Das Design des Formulars betont Übersichtlichkeit und Benutzerfreundlichkeit, was entscheidend ist, wenn Informationen von Mandanten gesammelt werden, die möglicherweise nicht mit der Rechtsterminologie vertraut sind. Jedes Feld enthält hilfreichen Kontext, um sicherzustellen, dass Mandanten die Informationen im richtigen Format angeben, wie es das Gerichtssystem erwartet.</p> <h2 id="make-szenario">Das Make-Automatisierungsszenario Aufbauen</h2> <p>Jetzt erstellen wir das Make-Automatisierungsszenario, das alle unsere Komponenten verbindet. Dieser Workflow erkennt automatisch neue Typeform-Einsendungen, generiert Schriftsätze mithilfe von DocuGenerate und speichert die resultierenden Dokumente in Dropbox. Das vollständige Szenario umfasst vier Hauptkomponenten, die sequenziell arbeiten, um eine vollständig automatisierte Dokumentengenerierungspipeline zu erstellen.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/make-scenario.png" alt="Vollständiges Make-Automatisierungsszenario"/></p> <h3 id="typeform-trigger">Den Typeform-Trigger Einrichten</h3> <p>Die Automatisierung beginnt mit dem <strong>Watch Responses</strong>-Trigger der <a href="https://www.make.com/en/integrations/typeform?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Typeform-Integration</a>. Dieser Trigger überwacht Ihr <a href="#formularstruktur-und-tests">Mandantenaufnahmeformular</a> auf neue Einsendungen und startet den Workflow, wenn ein Mandant das Formular ausfüllt. Die Einrichtung dieses Triggers ist unkompliziert und erfordert die Verbindung Ihres Typeform-Kontos mit Make.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/typeform-trigger-add.png" alt="Typeform-Trigger zu Make-Szenario hinzufügen"/></p> <p>Nachdem Sie die Typeform-Verbindung hergestellt haben, konfigurieren Sie den <strong>Watch Responses</strong>-Trigger, indem Sie Ihr <strong>Client Intake Form</strong> aus dem <strong>Form ID</strong>-Dropdown auswählen. Die anderen Parameter können auf ihren Standardwerten belassen werden, die auf neue Antworten in Echtzeit überwachen. Klicken Sie auf <strong>Save</strong>, um die Trigger-Konfiguration abzuschließen.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/typeform-trigger-configure.png" alt="Typeform Watch Responses-Trigger konfigurieren"/></p> <h3 id="docugenerate-einrichten">Die Dokumentengenerierungsaktion Konfigurieren</h3> <p>Die nächste Komponente in unserem Workflow ist die <strong>Generate Document</strong>-Aktion des <a href="https://www.make.com/en/integrations/docugenerate?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank">DocuGenerate-Moduls</a>. Dieser Schritt wandelt die gesammelten Formulardaten in einen professionell formatierten Schriftsatz um. Bevor Sie diese Aktion konfigurieren, müssen Sie eine Verbindung zu Ihrem DocuGenerate-Konto herstellen, indem Sie Ihren <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a> angeben, den Sie auf Ihrer DocuGenerate-Einstellungsseite finden.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/docugenerate-create-connection.png" alt="DocuGenerate-Verbindung in Make erstellen"/></p> <p>Die Konfiguration der DocuGenerate-Aktion erfordert mehrere Schlüsselparameter, die die Dokumentengenerierung steuern. Wählen Sie zuerst Ihre <strong>Pleading Paper</strong>-Vorlage aus dem <strong>Template</strong>-Dropdown. Erstellen Sie für den <strong>Name</strong> des Dokuments einen dynamischen Dateinamen, indem Sie die Fallnummer und den Schriftsatztitel aus der Formularantwort kombinieren. Setzen Sie das <strong>Format</strong> auf <strong>PDF (.pdf)</strong>, da dies das Standardformat ist, das von Gerichtssystemen akzeptiert wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/docugenerate-action-config.png" alt="Konfiguration der DocuGenerate-Aktion"/></p> <p>Der <strong>Data</strong>-Parameter erfordert eine sorgfältige Konfiguration, da er Formularantworten den <a href="#vorlage-erstellen">Vorlagen-Zusammenführungs-Tags</a> zuordnet. Diese JSON-Struktur kombiniert dynamische Werte aus der Typeform-Einsendung mit statischen Anwaltsinformationen, die über alle Dokumente hinweg konsistent bleiben.</p> <h3 id="mehrzeilige-daten">Mehrzeilige Datenwerte Verarbeiten</h3> <p>Beim Testen unseres Szenarios mit Beispieldaten aus dem Typeform-Fragebogen können Sie einen spezifischen Fehler in Bezug auf mehrzeiligen Inhalt im Feld <strong>Body of Pleading</strong> erhalten. Dies ist eine häufige Herausforderung bei der Arbeit mit Rechtsdokumenten, die Absatzumbrüche und Zeilenformatierungen enthalten. Der Fehler erscheint typischerweise als:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[400] data must be a valid JSON object or array. Bad control character in string literal in JSON 
at position 591 while parsing near "...JUDGE OF SAID COURT:nnCOMES NOW, MICHAEL..."
</code></pre></div></div> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/multi-line-data-error.gif" alt="Mehrzeiliger Datenfehler in Make"/></p> <p>Dieser Fehler tritt auf, weil das Feld <strong>Body of Pleading</strong> mehrere Zeilen und Absatzumbrüche enthalten kann, die das JSON-Parsing stören. Wenn Mandanten detaillierten Schriftsatzinhalt mit Zeilenumbrüchen eingeben, können diese Zeichen die JSON-Struktur beschädigen, die Make zum Weitergeben von Daten zwischen Modulen verwendet.</p> <p>Die Lösung beinhaltet die Vorverarbeitung der mehrzeiligen Textdaten vor der Weitergabe an DocuGenerate. Wir müssen Zeilenumbruchzeichen maskieren, um sicherzustellen, dass sie innerhalb der JSON-Struktur korrekt behandelt werden. Make stellt speziell für diesen Zweck Textbearbeitungsfunktionen bereit.</p> <p>Um diese Korrektur zu implementieren, fügen wir einen Textverarbeitungsschritt hinzu, der die <code class="language-plaintext highlighter-rouge">replace</code>-Funktion aus Makes <strong>Text and binary functions</strong>-Kategorie verwendet. Diese Funktion ersetzt tatsächliche <code class="language-plaintext highlighter-rouge">newline</code>-Zeichen durch maskierte Zeilenumbruchsequenzen <code class="language-plaintext highlighter-rouge">\n</code>, die für die JSON-Übertragung sicher sind, während die ursprüngliche Formatierung im endgültigen Dokument erhalten bleibt.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/replace-newlines-function.png" alt="Replace-Funktion für Zeilenumbrüche verwenden"/></p> <p>Nach der Implementierung dieses Vorverarbeitungsschritts wird das Modul <strong>Generate Document</strong> erfolgreich ohne JSON-Parsing-Fehler ausgeführt. Das resultierende <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/DC-24-08756 - COMPLAINT FOR PERSONAL INJURY.pdf" target="_blank">Schriftsatz-Dokument</a> bewahrt die ursprünglichen Zeilenumbrüche und Formatierungen aus der Eingabe des Mandanten.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/generate-document-success.png" alt="Erfolgreiche Dokumentengenerierung"/></p> <h3 id="http-abruf">Das Generierte Dokument Abrufen</h3> <p>Die abschließenden Komponenten unseres Automatisierungsworkflows umfassen das Abrufen des <a href="#docugenerate-einrichten">generierten PDF</a>-Dokuments und dessen Speicherung in Dropbox für einfachen Zugriff und die Verteilung an Mandanten. Zuerst müssen wir die generierte PDF-Datei mit der <strong>Get a file</strong>-Aktion aus Makes nativem <a href="https://www.make.com/en/integrations/http?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">HTTP-Modul</a> abrufen.</p> <p>Geben Sie im Feld <strong>URL</strong> den <code class="language-plaintext highlighter-rouge">Document URL</code>-Wert an, der vom vorherigen DocuGenerate-Schritt zurückgegeben wurde. Diese dynamische URL verweist auf das neu generierte Schriftsatz-PDF. Das HTTP-Modul lädt den Dateiinhalt herunter und stellt ihn für den nächsten Schritt in unserem Workflow zur Verfügung.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/http-getfile-config-v3.png" alt="HTTP Get File-Konfiguration"/></p> <h3 id="dropbox-upload">Die PDF-Datei in Dropbox Speichern</h3> <p>Im letzten Schritt laden wir die abgerufene PDF-Datei über die <strong>Upload a File</strong>-Aktion der <a href="https://www.make.com/en/integrations/dropbox?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Dropbox-Integration</a> in Dropbox hoch. Dropbox wird in Rechtsanwaltskanzleien häufig für die sichere Dokumentenspeicherung und gemeinsame Nutzung von Mandantendateien verwendet, was es zur idealen Wahl für die Speicherung generierter Schriftsätze macht.</p> <p>Bevor Sie die Upload-Aktion konfigurieren, stellen Sie sicher, dass Sie eine Dropbox-Verbindung in Make hergestellt haben. Dazu müssen Sie sich mit Ihrem Dropbox-Konto authentifizieren und Make die Berechtigung zum Zugriff auf Ihre Dateien erteilen. Konfigurieren Sie nach der Verbindung die Upload-Parameter, um Ihre generierten Dokumente effektiv zu organisieren.</p> <p>Geben Sie für den <strong>Folder</strong>-Parameter ein dediziertes Verzeichnis wie <code class="language-plaintext highlighter-rouge">/Pleading Papers/</code> an, um generierte Dokumente übersichtlich und leicht zugänglich zu halten. Der <strong>File</strong>-Parameter sollte auf die Dateidaten aus dem <a href="#http-abruf">vorherigen Schritt</a> verweisen, insbesondere auf die Ausgabe von <strong>HTTP - Get a file</strong>. Das stellt sicher, dass der vollständige PDF-Inhalt in Ihren Dropbox-Speicher hochgeladen wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/dropbox-config.png" alt="Dropbox-Upload-Konfiguration"/></p> <p>Mit dieser Konfiguration ist Ihr Automatisierungsworkflow vollständig. Jedes Mal, wenn ein Mandant das Aufnahmeformular einreicht, generiert das System automatisch einen korrekt formatierten Schriftsatz und speichert ihn in Ihrem vorgesehenen Dropbox-Ordner, bereit zur Überprüfung, Bearbeitung und Einreichung beim zuständigen Gericht.</p> <h2 id="vorteile-und-anwendungen">Vorteile und Praxisanwendungen</h2> <p>Dieses automatisierte Schriftsatz-Generierungssystem liefert erhebliche Vorteile für Anwaltskanzleien jeder Größe. Der primäre Vorteil ist die drastische Reduzierung der Dokumentenvorbereitungszeit. Was früher manuelle Dateneingabe, Formatierung und Korrekturlesen erforderte, kann jetzt automatisch innerhalb von Minuten nach Eingang der Mandanteninformationen erledigt werden.</p> <p>Die Automatisierung verbessert auch die Genauigkeit, indem manuelle Transkriptionsfehler eliminiert werden. Mandanteninformationen fließen direkt vom Aufnahmeformular in das endgültige Dokument ohne menschliches Eingreifen, was das Risiko von Tippfehlern oder Dateneingabefehlern reduziert, die potenziell Auswirkungen auf rechtliche Verfahren haben könnten. Diese Konsistenz ist besonders wertvoll, wenn mehrere Fälle gleichzeitig bearbeitet werden.</p> <p>Der Workflow kann leicht für verschiedene Arten von Rechtsdokumenten über Schriftsätze hinaus angepasst werden. Dieselben Automatisierungsprinzipien gelten für die Generierung von Antwortschriften, Widerklagen, Anträgen und anderen Gerichtsdokumenten. Für größere Kanzleien kann dieses System mit bestehender Fallmanagementsoftware integriert werden. Anstatt Typeform für die Aufnahme zu verwenden, kann der Workflow durch neue Einträge in juristischen Praxismanagementsystemen ausgelöst werden, was eine umfassendere Automatisierungslösung schafft.</p> <p>Auch die Kostenvorteile sind erheblich. Die reduzierte Zeit für die Dokumentenvorbereitung ermöglicht es Rechtsanwälten, sich auf höherwertige juristische Arbeit zu konzentrieren und potenziell die Effizienz der abrechenbaren Stunden zu steigern. Für Kanzleien mit hohem Volumen ähnlicher Fälle können die Zeiteinsparungen direkt zu verbesserter Rentabilität führen.</p> <h2 id="fazit">Fazit</h2> <p>Durch die Kombination von Typeforms intuitivem Formularersteller, Makes leistungsstarken Automatisierungsfunktionen und DocuGenerates professioneller Dokumentengenerierung können Kanzleien robuste Systeme erstellen, die die routinemäßige Dokumentenvorbereitung automatisch übernehmen. Dieser Ansatz spart nicht nur Zeit und reduziert Fehler, sondern ermöglicht es Juristen auch, sich auf die strategischen und analytischen Aspekte ihrer Arbeit zu konzentrieren, die wirklich menschliche Kompetenz erfordern.</p> <p>Das heute aufgebaute System kann als Grundlage für umfassendere Automatisierungsinitiativen dienen. Wenn Ihre Kanzlei wächst und sich Ihre Automatisierungsanforderungen weiterentwickeln, können dieselben Prinzipien auf andere Dokumententypen angewendet, mit ausgefeilterer Rechtssoftware integriert oder mit zusätzlichen Workflow-Schritten wie E-Mail-Benachrichtigungen, Kalenderplanung oder Mandantenportal-Updates ergänzt werden.</p> <p>Juristen, die diese Art von Automatisierungssystemen implementieren, stellen häufig fest, dass die anfängliche Zeitinvestition schnell Dividenden durch verbesserte Effizienz, reduzierten Verwaltungsaufwand und erhöhte Mandantenzufriedenheit abwirft. In einem zunehmend wettbewerbsintensiven Rechtsmarkt können diese operativen Verbesserungen erhebliche Vorteile verschaffen und gleichzeitig die hohen Genauigkeits- und Professionalitätsstandards aufrechterhalten, die die Rechtspraxis verlangt.</p> <h2 id="ressourcen">Ressourcen</h2> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/Pleading Paper.docx" target="_blank">Schriftsatz-Vorlage</a> aus diesem Tutorial.</li> <li>Ein Beispiel einer <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/DC-24-08756 - COMPLAINT FOR PERSONAL INJURY.pdf" target="_blank">generierten PDF</a> mit den Mandantenaufnahmeformular-Daten.</li> <li>Das interaktive <a href="https://form.typeform.com/to/U7qVSqcZ" target="_blank" rel="nofollow noopener">Mandantenaufnahmeformular</a> auf Typeform.</li> <li>Die offizielle Make <a href="https://www.make.com/en/integrations/typeform?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Typeform-Integration</a>.</li> <li>Die offizielle Make <a href="https://www.make.com/en/integrations/docugenerate?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank">DocuGenerate-Integration</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="LegalTech"/> <category term="Make"/> <category term="No-Code"/> <summary type="html"><![CDATA[Transformieren Sie Ihre Rechtspraxis mit automatisierter Schriftsatzerstellung. Lernen Sie, wie Sie mit Make, Typeform und DocuGenerate einen effizienten Workflow erstellen, der Mandantenaufnahmedaten in professionell formatierte Schriftsätze umwandelt.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Als Top Performer Winter 2025 von SourceForge Ausgezeichnet</title> <link href="https://www.docugenerate.com/de/blog/als-top-performer-winter-2025-von-sourceforge-ausgezeichnet/" rel="alternate" type="text/html" title="Als Top Performer Winter 2025 von SourceForge Ausgezeichnet"/> <published>2025-01-24T00:00:00+00:00</published> <updated>2025-01-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/als-top-performer-winter-2025-von-sourceforge-ausgezeichnet</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/als-top-performer-winter-2025-von-sourceforge-ausgezeichnet/"><![CDATA[<h2 id="top-performer">Top Performer in der Kategorie PDF-Generatoren</h2> <p>DocuGenerate ist stolz, als <strong>Top Performer Winter 2025</strong> in der Kategorie <strong>PDF-Generatoren</strong> von SourceForge ausgezeichnet zu werden – der weltweit größten Software-Vergleichswebsite. Dieser Award zeichnet außergewöhnliche Unternehmen und Produkte aus, die eine hohe Anzahl aktueller hervorragender Nutzerbewertungen aufweisen und damit in das oberste Zehntel-Prozent der am besten bewerteten Produkte auf SourceForge fallen.</p> <p>Um den Top-Performer-Award Winter 2025 zu gewinnen, musste jeder Preisträger genügend Hochbewertungen erhalten, um das Produkt in die <strong>Top 10%</strong> der <strong>positiv bewerteten Produkte</strong> unter den 100.000 Produkten auf SourceForge zu platzieren – ein Beweis für die höchste Qualität, die DocuGenerate seinen Kunden liefert.</p> <h2 id="warum-docugenerate-waehlen">Warum DocuGenerate für die PDF-Generierung Wählen?</h2> <p>DocuGenerate ist ein leistungsstarkes Dokumentengenerierungstool, das Unternehmen und Fachleuten hilft, <strong>hochwertige PDFs</strong> einfach zu erstellen. Ob Verträge, Rechnungen, Vereinbarungen oder Berichte – DocuGenerate ermöglicht die Automatisierung dieses Prozesses mithilfe von Word-Vorlagen und dynamischen Daten. Mit einem Fokus auf <strong>Zuverlässigkeit und Skalierbarkeit</strong> ist DocuGenerate ideal für Teams, die ihre Dokumenten-Workflows ohne manuelle Bearbeitung optimieren möchten.</p> <p>DocuGenerate wurde für die Automatisierung entwickelt und ermöglicht die effiziente Verarbeitung großer Dokumentenmengen. Es bietet nahtlose Integrationen mit No-Code-Plattformen wie <a href="/de/integrationen/make/">Make</a>, <a href="/de/integrationen/zapier/">Zapier</a> und <a href="/de/integrationen/bubble/">Bubble</a> sowie Backend-Diensten wie <a href="/de/integrationen/xano/">Xano</a>. Darüber hinaus unterstützt unser Produkt erweiterte Formatierungsoptionen, Stapelgenerierung und PDF/A-Export für die Langzeitarchivierung von Dokumenten.</p> <p>Ob Start-up, Anwaltskanzlei oder Unternehmen, das monatlich tausende von Dokumenten verwaltet – DocuGenerate bietet eine flexible und <strong>kosteneffektive Lösung</strong> für Ihre Dokumentengenerierungsanforderungen.</p> <h2 id="nutzerbewertungen">Was Unsere Nutzer Sagen</h2> <p>DocuGenerate hat auf SourceForge eine Gesamtbewertung von <strong>5 Sternen</strong> von Nutzern erhalten:</p> <p><img src="https://www.docugenerate.com/assets/posts/017-sourceforge-top-performer/docugenerate-review.png" alt="5-Sterne-Bewertung auf SourceForge"/></p> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Die Software ist unkompliziert und erledigt ihre Aufgabe perfekt. Sie ist schnell und einfach – keine Lernkurve. Der Support war auch fantastisch, wenn ich Fragen hatte. </p> <h6> Quelle: <a href="https://sourceforge.net/software/product/DocuGenerate/#review-6789eab3a8cb1d9217711d42" target="_blank"> SourceForge </a> </h6> </div> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Einer der besten Kundenservices und technischen Supports, die ich je ERLEBT habe... Es ist toll, dieses 'wohltuende Gefühl' zu haben, dass ein Partner, auf dessen Infrastruktur man sich verlässt, um seine eigenen Kunden zu beliefern, sich um den Service kümmert, den er erbringt. </p> <h6> Quelle: <a href="https://sourceforge.net/software/product/DocuGenerate/#review-677ead59bf467c8617412b27" target="_blank"> SourceForge </a> </h6> </div> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Die Benutzeroberfläche ist intuitiv und benutzerfreundlich, was das Erlernen und die Navigation auch für Anfänger einfach macht. DocuGenerate ist zu einem zentralen Bestandteil unserer täglichen Arbeit geworden und ich kann mir nicht vorstellen, was ich ohne es tun würde. </p> <h6> Quelle: <a href="https://sourceforge.net/software/product/DocuGenerate/#review-671fcf6f8c9144fa306b2bb1" target="_blank"> SourceForge </a> </h6> </div> <p>Wenn DocuGenerate Ihre Dokumenten-Workflows verbessert hat, würden wir uns über Ihr Feedback freuen! Teilen Sie Ihre Erfahrung auf SourceForge <a href="https://sourceforge.net/software/product/DocuGenerate/reviews/new" target="_blank" rel="nofollow noopener">hier</a>.</p> <h2 id="ueber-sourceforge">Über SourceForge</h2> <p><a href="https://sourceforge.net/" target="_blank" rel="nofollow noopener">SourceForge.net</a> ist das weltweit größte Software-Verzeichnis und bedient monatlich fast 20 Millionen Nutzer mit Nutzerbewertungen, Produktvergleichen, Software-Leitfäden und mehr. SourceForges Mission ist es, Unternehmen dabei zu helfen, die beste Software für ihre Bedürfnisse und ihr Budget zu finden. Es gibt eine Vielzahl von Software-Tools für Unternehmen, und es gibt Tools in fast jeder Kategorie und Nische, die jeweils einen leicht anderen Zweck erfüllen.</p>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="PDF Generators"/> <category term="Award"/> <category term="SourceForge"/> <summary type="html"><![CDATA[DocuGenerate ist stolz, den Top-Performer-Award in der Kategorie PDF-Generatoren von SourceForge, der weltweit größten Software-Review- und Vergleichswebsite, gewonnen zu haben. Wir sind geehrt, von unseren Kunden geschätzt und mit diesem Award ausgezeichnet zu werden.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/017-sourceforge-top-performer/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/017-sourceforge-top-performer/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Eine Vereinfachte Version von DocuGenerate mit Bubble Erstellen</title> <link href="https://www.docugenerate.com/de/blog/eine-vereinfachte-version-von-docugenerate-mit-bubble-erstellen/" rel="alternate" type="text/html" title="Eine Vereinfachte Version von DocuGenerate mit Bubble Erstellen"/> <published>2024-12-18T00:00:00+00:00</published> <updated>2024-12-18T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/eine-vereinfachte-version-von-docugenerate-mit-bubble-erstellen</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/eine-vereinfachte-version-von-docugenerate-mit-bubble-erstellen/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Die Automatisierung der Dokumentenerstellung kann Ihre Produktivität erheblich steigern, insbesondere wenn Sie mehrere Vorlagen und Datensätze verwalten. Während die <a href="https://app.docugenerate.com/" target="_blank">Web-App</a> von DocuGenerate eine umfassende Lösung bietet, möchten Sie möglicherweise Dokumentengenerierungs-Funktionen in Ihre eigene Bubble-Anwendung integrieren.</p> <p>Deshalb haben wir ein <a href="https://www.docugenerate.com/de/integrationen/bubble/">Bubble-Plugin</a> entwickelt, mit dem Sie die Leistung der DocuGenerate-API direkt in Ihren Bubble-Apps nutzen können. In diesem Tutorial zeigen wir, wie wir mit Bubble und unserem Plugin eine vereinfachte Version von DocuGenerate erstellt haben – ganz ohne Code!</p> <h2 id="wie-die-app-funktioniert">Wie die App Funktioniert</h2> <p>Um ein besseres Gefühl für das zu bekommen, was wir erstellen werden, können Sie sich die Bubble- <a href="https://docugenerate-demo-app.bubbleapps.io/version-test/" target="_blank">Demo-App</a> ansehen. Die folgende Animation demonstriert eine vollständige Benutzerreise durch die Anwendung, von der Vorlagenerstellung bis zur Dokumentgenerierung und zum Download.</p> <p><img src="https://www.docugenerate.com/assets/images/integrations/bubble/bubble-test-app-v2.gif" alt="Demo-App mit dem DocuGenerate-Plugin auf Bubble"/></p> <p>Die typische Benutzerreise folgt diesen Schritten:</p> <ol> <li><strong>Vorlagenerstellung</strong>: Eine Word-Vorlage mit Zusammenführungs-Tags hochladen und ihr einen Namen geben.</li> <li><strong>Vorlagen durchsuchen</strong>: Vom Dashboard aus alle verfügbaren Vorlagen durchsuchen.</li> <li><strong>Vorlagenauswahl</strong>: Auf eine Vorlage klicken, um ihre Details und zuvor generierte Dokumente anzuzeigen.</li> <li><strong>Dokumentgenerierung</strong>: Über die „+”-Schaltfläche zum Dokumentgenerierungsformular navigieren.</li> <li><strong>Dateneingabe</strong>: Einen Dokumentnamen angeben, ein Ausgabeformat auswählen und die JSON-Daten eingeben.</li> <li><strong>Generierung</strong>: Nach dem Klicken auf „Generate” wird das Dokument mithilfe der DocuGenerate-API erstellt.</li> <li><strong>Dokumentzugriff</strong>: Zur Vorlage-Detailseite zurückkehren und das neue Dokument ansehen.</li> </ol> <p>Dieser Workflow spiegelt die Kernfunktionalität der Web-App von DocuGenerate wider, ist jedoch vollständig in Bubble implementiert. Die nahtlose Integration zwischen Bubbles visueller Entwicklungsplattform und der DocuGenerate-API schafft eine leistungsstarke und dennoch zugängliche Dokumentengenerierungslösung.</p> <h2 id="bubble-projekt-einrichten">Ihr Bubble-Projekt Einrichten</h2> <p>Bevor wir mit dem Erstellen unserer App beginnen, müssen wir die Entwicklungsumgebung vorbereiten. Bubbles visuelle Plattform macht diesen Prozess einfach, aber es gibt einige wesentliche Schritte:</p> <ol> <li>Registrieren Sie sich für ein <a href="https://bubble.io/" target="_blank" rel="nofollow noopener">Bubble-Konto</a>, falls Sie noch keines haben.</li> <li><a href="https://manual.bubble.io/help-guides/getting-started/creating-and-managing-apps" target="_blank" rel="nofollow noopener">Erstellen Sie eine App</a> in Bubble und geben Sie ihr einen Namen.</li> <li>Installieren Sie das <a href="https://bubble.io/plugin/docugenerate-1730225425528x319288222630019100" target="_blank">DocuGenerate-Plugin</a> in Ihrer neuen App.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Konfigurieren</a> Sie das Plugin mit Ihrem DocuGenerate-<a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel</a>.</li> </ol> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/install-new-plugin.png" alt="DocuGenerate-API-Schlüssel in Bubble installieren"/></p> <h2 id="docugenerate-plugin">Was Ist im DocuGenerate-Plugin Enthalten?</h2> <p>Das DocuGenerate-Bubble-Plugin bietet einen umfassenden Satz von API-Aufrufen, die die Funktionalität unserer REST-API widerspiegeln. Diese sind in zwei Typen kategorisiert:</p> <h3 id="data-calls">Data Calls</h3> <p>Diese werden verwendet, um Informationen aus Ihrem DocuGenerate-Konto abzurufen:</p> <ul> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">List Templates</a>: Gibt alle in Ihrem Konto verfügbaren Vorlagen zurück.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Get Template</a>: Ruft detaillierte Informationen zu einer bestimmten Vorlage ab.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">List Documents</a>: Gibt alle aus einer bestimmten Vorlage generierten Dokumente zurück.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Get Document</a>: Ruft detaillierte Informationen zu einem bestimmten Dokument ab.</li> </ul> <h3 id="actions">Actions</h3> <p>Diese werden verwendet, um Ressourcen in Ihrem DocuGenerate-Konto zu erstellen, zu ändern oder zu löschen:</p> <ul> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Create Template</a>: Lädt eine neue Vorlagendatei hoch.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Update Template</a>: Ändert eine vorhandene Vorlage.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Delete Template</a>: Entfernt eine Vorlage aus Ihrem Konto.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Generate Document</a>: Erstellt ein neues Dokument aus einer Vorlage und Daten.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Update Document</a>: Ändert Dokumenteigenschaften.</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Delete Document</a>: Entfernt ein Dokument aus Ihrem Konto.</li> </ul> <p>Das Verständnis dieser API-Aufrufe ist wesentlich, da sie das Rückgrat unserer Demo-Anwendung bilden. Im Verlauf dieses Tutorials werden wir die meisten dieser Aufrufe verwenden, um einen vollständig funktionsfähigen Dokumentengenerierungs-Workflow zu erstellen.</p> <h2 id="app-navigation">Die App-Navigation Gestalten</h2> <p>Bevor wir uns mit den einzelnen Seiten befassen, richten wir die Navigationsstruktur ein, die alle Teile unserer Anwendung verbindet. Ein einheitliches Navigationssystem ist entscheidend für ein reibungsloses Benutzererlebnis. Wir haben eine einfache Navigationsleiste erstellt, die oben auf jeder Seite erscheint und Folgendes enthält:</p> <ul> <li>Das DocuGenerate-Logo auf der linken Seite, das als Home-Schaltfläche dient und auf das <a href="#dashboard-seite">Dashboard</a> verweist.</li> <li>Eine <strong>New Template</strong>-Schaltfläche auf der rechten Seite, die Benutzer direkt zur <a href="#neue-vorlage-seite">Vorlagenerstellung</a> führt.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/navigation-bar.png" alt="Navigationsleiste mit Logo und New Template-Schaltfläche"/></p> <p>Diese Navigationsstruktur spiegelt den in der eigentlichen Web-App von DocuGenerate verwendeten Ansatz wider und bietet eine vertraute Erfahrung für Benutzer, die unsere Hauptplattform bereits kennen. Das bekannte Layout hilft Benutzern, intuitiv durch die Anwendung zu navigieren, ohne dass zusätzliche Anweisungen erforderlich sind.</p> <h2 id="dashboard-seite">Die Dashboard-Seite</h2> <p>Die Dashboard-Seite dient als zentraler Hub unserer Anwendung und bietet Benutzern sofort einen Überblick über alle verfügbaren Vorlagen. Da dies der erste Bildschirm ist, den Benutzer beim Öffnen der App sehen, ist er sowohl informativ als auch intuitiv gestaltet und ermöglicht schnellen Zugriff auf die wichtigsten Funktionen.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/index-page.png" alt="Dashboard-Seite mit Vorlagen in einer Rasteransicht"/></p> <p>Wie in der Web-Oberfläche von DocuGenerate haben wir Vorlagen in einem visuell ansprechenden Rasterlayout organisiert, das Vorlagenvorschauen neben ihren Namen anzeigt. Dieser visuelle Ansatz macht es einfach, die gesuchte Vorlage schnell zu finden, auch wenn Dutzende verschiedener Vorlagen verwaltet werden.</p> <h3 id="so-erstellen-sie-es">So Erstellen Sie Es:</h3> <ol> <li><strong>Erstellen Sie ein RepeatingGroup-Element</strong>, um die Vorlagen anzuzeigen.</li> <li><strong>Setzen Sie die Datenquelle</strong> auf den <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">List Templates</a>-Data Call des DocuGenerate-Plugins. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/dashboard-repeating-group.png" alt="RepeatingGroup-Element zur Anzeige der Vorlagen"/></li> <li><strong>Gestalten Sie jedes Rasterelement</strong> mit: <ul> <li>Einem Textelement für den Vorlagennamen</li> <li>Einem Bildelement für die Vorlagenvorschau <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/dashboard-template-image.png" alt="Bildelement für die Vorlagenvorschau"/></li> </ul> </li> <li><strong>Fügen Sie einen Workflow</strong> zum Bildelement hinzu, sodass beim Klicken zur Vorlage-Detailseite navigiert wird und die Vorlagen-ID als URL-Parameter übergeben wird. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/workflow-template-image.png" alt="Workflow beim Klicken auf das Vorlagenbild"/></li> </ol> <p>Die Schlüsselkomponente ist die RepeatingGroup, die sich automatisch mit allen Vorlagen aus Ihrem DocuGenerate-Konto füllt. Dieser dynamische Ansatz stellt sicher, dass das Dashboard immer die aktuellste Vorlagenliste anzeigt, ohne manuelle Updates zu erfordern.</p> <p>Jede Vorlage im Raster ist anklickbar und navigiert zu einer <a href="#vorlage-detail-seite">detaillierten Ansicht</a> dieser spezifischen Vorlage. Das Dashboard integriert sich auch nahtlos mit unserer Navigationsleiste, die die <strong>New Template</strong>-Schaltfläche für den schnellen Zugriff auf die <a href="#neue-vorlage-seite">Vorlagenerstellung</a> enthält.</p> <h2 id="neue-vorlage-seite">Die Vorlagenerstellungsseite</h2> <p>Auf dieser Seite beginnen Benutzer den Dokumentengenerierungsprozess, indem sie ein Word-Dokument hochladen, das als Vorlage dient. Dieser entscheidende Schritt legt die Grundlage für alle nachfolgende Dokumentgenerierung, da die hochgeladene Vorlage die Struktur, Formatierung und Zusammenführungs-Tags enthält, die bei der Generierung von Dokumenten verwendet werden.</p> <p>Wir haben diese Seite so gestaltet, dass sie unkompliziert und fokussiert ist, unnötige Ablenkungen beseitigt und Benutzer durch den Vorlagenerstellungsprozess führt. Die Oberfläche kommuniziert klar, was erforderlich ist (ein Word-Dokument und ein Name), und gibt sofortiges Feedback, wenn die Vorlage erfolgreich erstellt wurde.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-page.png" alt="Neue Vorlagenseite mit Datei-Uploader und Formular"/></p> <h3 id="so-erstellen-sie-es-1">So Erstellen Sie Es:</h3> <ol> <li><strong>Fügen Sie ein FileUploader-Element hinzu</strong>, um Benutzern die Auswahl ihres Word-Dokuments zu ermöglichen. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-file-uploader.png" alt="FileUploader-Element zur Auswahl des Word-Dokuments"/></li> <li><strong>Fügen Sie ein Eingabefeld</strong> für den Vorlagennamen hinzu.</li> <li><strong>Fügen Sie eine „Create Template”-Schaltfläche</strong> mit folgendem Workflow hinzu: <ul> <li>Beim Klicken die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Create Template</a>-Action des DocuGenerate-Plugins aufrufen</li> <li>Die Datei aus dem FileUploader als <code class="language-plaintext highlighter-rouge">file</code>-Parameter über die dynamische Link-Option übergeben</li> <li>Den Namen aus dem Eingabefeld als <code class="language-plaintext highlighter-rouge">name</code>-Parameter übergeben <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-workflow-create-template.png" alt="Workflow-Schritt: Vorlage erstellen"/></li> <li>Nach dem Erstellen der Vorlage zur Vorlage-Detailseite mit der neuen Vorlagen-ID navigieren <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-workflow-template-detail.png" alt="Workflow-Schritt: Zur Vorlage-Detailseite gehen"/></li> </ul> </li> </ol> <p>Dieses optimierte Formular übernimmt alles, was zum Erstellen einer Vorlage in DocuGenerate erforderlich ist. Die FileUploader-Komponente bietet eine native Möglichkeit für Benutzer, Dateien von ihrem Gerät auszuwählen, mit Drag-and-Drop-Unterstützung und klarem visuellem Feedback.</p> <p>Nach der Erstellung der Vorlage schafft die automatische Navigation zur <a href="#vorlage-detail-seite">Vorlage-Detailseite</a> einen nahtlosen Übergang zum nächsten Schritt im Workflow. Diese durchdachte Benutzerreise beseitigt die Notwendigkeit, manuell zwischen Seiten zu navigieren.</p> <h2 id="vorlage-detail-seite">Die Vorlage-Detailseite</h2> <p>Die Vorlage-Detailseite dient als zentraler Hub für die Verwaltung einer bestimmten Vorlage und aller daraus generierten Dokumente. Diese Seite vereint wesentliche Vorlageninformationen mit Dokumentverwaltungsfunktionen und bietet eine umfassende Ansicht der Nutzung und Ausgabe jeder Vorlage.</p> <p>Im Gegensatz zu den einfacheren Seiten, die wir bisher erstellt haben, integriert die Vorlage-Detailseite mehrere Datenquellen und interaktive Elemente, um eine komplexere und funktionalere Oberfläche zu schaffen. Wir haben diese Elemente sorgfältig organisiert, um trotz der erhöhten Komplexität Klarheit zu bewahren.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-page.png" alt="Vorlage-Detailseite mit Vorschau und Dokumentenliste"/></p> <h3 id="so-erstellen-sie-es-2">So Erstellen Sie Es:</h3> <ol> <li><strong>Erstellen Sie ein Group-Element</strong> als Container für den Seiteninhalt.</li> <li><strong>Setzen Sie die Datenquelle der Gruppe</strong> auf den <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Get Template</a>-Data Call des DocuGenerate-Plugins, mit dem <code class="language-plaintext highlighter-rouge">id</code>-Parameter auf die template_id aus der URL gesetzt. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-group-content.png" alt="Group-Element zur Anzeige des Seiteninhalts"/></li> <li><strong>Fügen Sie ein Textelement hinzu</strong>, um den Vorlagennamen anzuzeigen.</li> <li><strong>Fügen Sie ein Bildelement hinzu</strong>, um die Vorlagenvorschau anzuzeigen. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-template-image.png" alt="Bildelement zur Anzeige der Vorlagenvorschau"/></li> <li><strong>Fügen Sie eine RepeatingGroup für die Dokumentenliste hinzu</strong> mit: <ul> <li>Datenquelle auf den <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">List Documents</a>-Aufruf mit dem <code class="language-plaintext highlighter-rouge">template_id</code>-Parameter gesetzt</li> <li>Jedes Element zeigt den Dokumentnamen als Link zur <code class="language-plaintext highlighter-rouge">document_uri</code> zum Herunterladen <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-document-repeating-group.png" alt="RepeatingGroup zur Anzeige der Dokumentenliste"/></li> </ul> </li> <li><strong>Fügen Sie eine „+”-Schaltfläche hinzu</strong>, die zur neuen Dokumentseite navigiert. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-workflow-new-document.png" alt="Workflow zur Navigation zur neuen Dokumentseite"/></li> </ol> <p>Der leistungsstärkste Aspekt dieser Seite ist die Art und Weise, wie das Group-Element die Datenquelle nutzt, um allen untergeordneten Elementen Vorlagendaten zur Verfügung zu stellen. Dieses Muster, manchmal als „Datenvererbung” in Bubble bezeichnet, stellt sicher, dass alle Elemente auf der Seite automatisch aktualisiert werden, wenn eine andere Vorlage ausgewählt wird.</p> <p>Die Dokumentenliste bietet eine chronologische Ansicht aller aus dieser Vorlage generierten Dokumente, mit den neuesten Dokumenten oben. Jeder Dokumenteintrag enthält einen direkten Download-Link, sodass Benutzer schnell auf ihre generierten Dateien zugreifen können.</p> <p>Die prominente „+”-Schaltfläche dient als klarer Call-to-Action und führt Benutzer zum Dokumentgenerierungsprozess. Beim Klicken navigiert sie zur <a href="#neues-dokument-seite">Dokumentgenerierungsseite</a> und übergibt die Vorlagen-ID, um den Kontext beizubehalten.</p> <h2 id="neues-dokument-seite">Die Dokumentgenerierungsseite</h2> <p>Hier kommt die eigentliche Stärke der Dokumentgenerierung zum Ausdruck und ermöglicht es Benutzern, ihre Daten mit Vorlagen zu verbinden, um angepasste Dokumente zu erstellen. Wir haben diese Seite so gestaltet, dass sie leistungsstark und dennoch zugänglich ist und erweiterte Funktionalität mit einer klaren Oberfläche in Einklang bringt.</p> <p>Diese Seite behält die visuelle Konsistenz mit der <a href="#vorlage-detail-seite">Vorlage-Detailseite</a> bei und zeigt dieselben Vorlageninformationen oben an, um Kontext zu liefern. Dadurch können Benutzer bestätigen, dass sie mit der richtigen Vorlage arbeiten, bevor sie mit der Dokumentgenerierung fortfahren.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-page.png" alt="Neue Dokumentseite mit JSON-Dateneingabeformular"/></p> <h3 id="so-erstellen-sie-es-3">So Erstellen Sie Es:</h3> <ol> <li><strong>Zeigen Sie die Vorlageninformationen an</strong> (Name und Vorschau) ähnlich wie auf der Vorlage-Detailseite.</li> <li><strong>Erstellen Sie ein Formular mit:</strong> <ul> <li>Einem Texteingabefeld für den Dokumentnamen</li> <li>Einem Dropdown für die Auswahl des Ausgabeformats (PDF, DOCX, DOC, ODT, TXT, HTML, PNG)</li> <li>Einem MultiLine Input für die Eingabe der JSON-Daten <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-form.png" alt="Formular zur Dokumentgenerierung"/></li> </ul> </li> <li><strong>Fügen Sie eine „Generate”-Schaltfläche hinzu</strong>, die: <ul> <li>Die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Generate Document</a>-Action des DocuGenerate-Plugins aufruft</li> <li>Alle Formularwerte als Parameter übergibt, zusammen mit der <code class="language-plaintext highlighter-rouge">template_id</code> aus der URL <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-workflow-generate-document.png" alt="Workflow-Schritt: Dokument generieren"/></li> <li>Nach der Generierung zur Vorlage-Detailseite zurücknavigiert <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-workflow-template-detail.png" alt="Workflow-Schritt: Zur Vorlage-Detailseite gehen"/></li> </ul> </li> </ol> <p>Das MultiLine-Eingabefeld ist besonders wichtig, da es eine flexible Möglichkeit für Benutzer bietet, ihre JSON-Daten einzugeben. Dieser Ansatz unterstützt sowohl einfache Datenstrukturen für grundlegende Dokumente als auch komplexe verschachtelte Objekte oder Arrays für anspruchsvollere Generierungsszenarien.</p> <p>Das Ausgabeformat-Dropdown demonstriert einen der Hauptvorteile von DocuGenerate: die Fähigkeit, Dokumente in mehreren Formaten aus einer einzigen Vorlage zu generieren. Benutzer können das Format wählen, das ihren Anforderungen am besten entspricht, sei es ein PDF für die formale Verteilung, ein DOCX für weitere Bearbeitung oder ein anderes Format für spezifische Anwendungsfälle.</p> <p>Nach der Generierung des Dokuments navigiert die Seite automatisch zur <a href="#vorlage-detail-seite">Vorlage-Detailseite</a> zurück, wo das neu erstellte Dokument oben in der Liste erscheint. Dieses sofortige Feedback bestätigt, dass die Generierung erfolgreich war.</p> <h2 id="erweiterungsmoeglichkeiten">Erweiterungsmöglichkeiten</h2> <p>Obwohl unsere Demo-App die wesentliche Funktionalität für die Dokumentgenerierung bietet, gibt es viele Möglichkeiten, sie zu erweitern:</p> <ul> <li><strong>PDF-Vorschau</strong>: Statische Bilder durch eingebettete <a href="https://www.docugenerate.com/de/hilfe/articles/wie-zeige-ich-ein-generiertes-dokument-an/">PDF-Vorschauen</a> von Vorlagen und Dokumenten ersetzen.</li> <li><strong>Alternative Ansichten</strong>: Optionen hinzufügen, um Vorlagen <a href="https://www.docugenerate.com/de/hilfe/articles/wie-wechsle-ich-die-ansichtsoptionen/">als Liste</a> statt als Raster anzuzeigen.</li> <li><strong>Vorlagenbearbeitung</strong>: Benutzern erlauben, <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-eine-vorlage/">Vorlagen zu aktualisieren</a> mit neuen Dateien oder geänderten Einstellungen.</li> <li><strong>Vorlagennavigation</strong>: Ein Dropdown oder eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">Suchleiste</a> hinzufügen, um einfach zwischen Vorlagen zu navigieren.</li> <li><strong>Tabellenkalkulationsunterstützung</strong>: Die Möglichkeit hinzufügen, <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-einer-excel-oder-csv-datei-generieren/">Excel- oder CSV-Dateien</a> für die Dokumentgenerierung hochzuladen.</li> </ul> <p>Diese Erweiterungen würden unsere Demo-App von einem Proof of Concept zu einer vollständig ausgestatteten Dokumentengenerierungslösung transformieren. Das Schöne an Bubbles visueller Entwicklungsplattform ist, dass diese Funktionen schrittweise hinzugefügt werden können, sodass die Anwendung zusammen mit den Benutzeranforderungen wachsen kann.</p> <h2 id="fazit">Fazit</h2> <p>Das Erstellen einer Dokumentengenerierungs-App mit Bubble und dem DocuGenerate-Plugin demonstriert die Stärke der No-Code-Entwicklung in Kombination mit spezialisierten APIs. Die von uns erstellte Demo-App dient sowohl als Proof of Concept als auch als Ausgangspunkt für Ihre eigenen Dokumentenautomatisierungs- projekte. Durch die Nutzung von Bubbles visueller Entwicklungsplattform und den Dokumentengenerierungs- fähigkeiten von DocuGenerate können Sie maßgeschneiderte Lösungen für Ihre spezifischen Anforderungen erstellen, ohne eine einzige Zeile Code schreiben zu müssen.</p> <p>Dieser Ansatz ist besonders wertvoll für Unternehmen ohne dedizierte Entwicklungsteams oder für solche, die Dokumentengenerierungs-Workflows schnell prototypisieren und iterieren möchten. Die visuelle Natur von Bubble macht es für Business-Analysten, Betriebsspezialisten und andere nicht-technische Teammitglieder zugänglich und befähigt sie, Lösungen zu erstellen, die ihre Dokumentenautomatisierungsherausforderungen direkt angehen.</p> <p>Ob Sie interne Tools für Ihr Team oder kundenseitige Anwendungen erstellen, dieser Ansatz bietet eine schnelle und flexible Möglichkeit, Dokumentengenerierungsfunktionen zu implementieren. Die Kombination aus Bubbles intuitiver Oberfläche und der leistungsstarken API von DocuGenerate schafft eine Synergie, die ausgeklügelte Dokumentenautomatisierung für Organisationen jeder Größe zugänglich macht.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Live-Version der <a href="https://docugenerate-demo-app.bubbleapps.io/version-test/" target="_blank">Bubble-Demo-App</a>, die wir in diesem Tutorial erstellt haben.</li> <li>Installationslink für das <a href="https://bubble.io/plugin/docugenerate-1730225425528x319288222630019100" target="_blank">DocuGenerate-Plugin</a> im Bubble-Marktplatz.</li> <li>Schritt-für-Schritt-Anleitung aus unserem Help Center zur <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-bubble-automatisieren/">Plugin-Konfiguration</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Web App"/> <category term="Bubble"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie mit Bubble und dem DocuGenerate-Plugin eine vereinfachte Dokumentengenerierungs-App erstellen. Dieses Schritt-für-Schritt-Tutorial zeigt Ihnen, wie Sie eine funktionierende Demo erstellen, mit der Sie Vorlagen hochladen, Dokumente generieren und Ihre Dokumentenbibliothek verwalten können.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Generierte Dateien mit Zapier in Dropbox Speichern</title> <link href="https://www.docugenerate.com/de/blog/generierte-dateien-mit-zapier-in-dropbox-speichern/" rel="alternate" type="text/html" title="Generierte Dateien mit Zapier in Dropbox Speichern"/> <published>2024-11-11T00:00:00+00:00</published> <updated>2024-11-11T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/generierte-dateien-mit-zapier-in-dropbox-speichern</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/generierte-dateien-mit-zapier-in-dropbox-speichern/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>In der modernen digitalen Arbeitswelt spart die Automatisierung von Dokumenten-Workflows wertvolle Zeit und sorgt für Konsistenz in Ihrem Unternehmen. Ob Beschäftigungszertifikate, Verträge, Rechnungen oder andere Geschäftsdokumente – deren automatische Speicherung in Cloud-Storage eliminiert manuelles Dateimanagement und erstellt ein zuverlässiges Backup-System.</p> <p>Dieses Tutorial zeigt, wie Sie eine leistungsstarke Automatisierung erstellen, die Beschäftigungszertifikate mit DocuGenerate generiert und diese automatisch über Zapier in Dropbox speichert. Durch die Verbindung dieser drei Tools erstellen Sie einen nahtlosen Workflow, der Daten in professionelle Dokumente umwandelt und diese in organisierten Cloud-Ordnern speichert.</p> <p><a href="https://zapier.com/" target="_blank" rel="nofollow noopener">Zapier</a> dient als Automatisierungsbrücke, die verschiedene Apps ohne Programmierkenntnisse verbindet. <a href="https://www.docugenerate.com/">DocuGenerate</a> übernimmt die Dokumentengenerierung aus Ihren Vorlagen und Daten, während <a href="https://www.dropbox.com/" target="_blank" rel="nofollow noopener">Dropbox</a> sicheren Cloud-Speicher mit einfachen Freigabefunktionen bietet.</p> <h2 id="zapier-tabelle">Datenquelle mit Zapier Tables Einrichten</h2> <p>Für dieses Tutorial verwenden wir die <strong>Certificate of Employment</strong>-Vorlage aus der <a href="https://www.docugenerate.com/de/vorlagen/">Vorlagenbibliothek</a> von DocuGenerate. Diese Vorlage enthält sowohl ein Word-Dokument als auch Beispieldaten, die wir in Zapier Tables für eine einfache Automatisierung importieren.</p> <p>Wir beginnen mit der Erstellung einer Datentabelle in Zapier, die Mitarbeiterinformationen enthält, die für die Generierung von Zertifikaten benötigt werden. Zapier Tables bietet eine praktische Möglichkeit, strukturierte Daten zu speichern und zu verwalten, die Automatisierungen auslösen können, wenn Datensätze hinzugefügt oder aktualisiert werden.</p> <p>Navigieren Sie zunächst zu <a href="https://tables.zapier.com/" target="_blank" rel="nofollow noopener">Zapier Tables</a> und erstellen Sie eine neue Tabelle. Importieren Sie die Beispieldaten aus einer <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.csv">CSV-Datei</a> mit folgenden Spalten:</p> <ul> <li><strong>Company Name</strong>: Das ausstellende Unternehmen</li> <li><strong>First Name</strong>: Vorname des Mitarbeiters</li> <li><strong>Last Name</strong>: Nachname des Mitarbeiters</li> <li><strong>Job Title</strong>: Position des Mitarbeiters</li> <li><strong>Start Date</strong>: Beginn des Arbeitsverhältnisses</li> <li><strong>End Date</strong>: Ende des Arbeitsverhältnisses (falls zutreffend)</li> <li><strong>Certificate Date</strong>: Ausstellungsdatum des Zertifikats</li> </ul> <p>Klicken Sie zum Importieren der Daten auf <strong>Import data</strong> und wählen Sie <strong>Start with data from a CSV file or another platform</strong>. Laden Sie die CSV-Datei mit Ihren Mitarbeiterdaten hoch, und Zapier erstellt automatisch die Tabellenstruktur und befüllt sie mit Ihren Datensätzen.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/zapier-csv-import.png" alt="CSV-Daten in Zapier Tables importieren"/></p> <p>Nach dem Import enthält Ihre Tabelle 10 Beispieldatensätze mit Mitarbeiterinformationen. Geben Sie Ihrer Tabelle einen beschreibenden Namen wie „Certificate of Employment”, damit sie in Ihren Zaps leicht zu identifizieren ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/zapier-data-table.png" alt="Certificate of Employment-Tabelle in Zapier"/></p> <p>Diese Tabelle dient als Trigger für unsere Automatisierung – sobald ein neuer Datensatz hinzugefügt oder ein bestehender aktualisiert wird, generiert unser Zap automatisch ein Zertifikat und speichert es in Dropbox.</p> <h2 id="vorlage-erstellen">Die Vorlage in DocuGenerate Erstellen</h2> <p>Bevor wir die Zapier-Automatisierung einrichten, müssen wir unsere Dokumentvorlage in DocuGenerate vorbereiten. Melden Sie sich bei DocuGenerate an und <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">erstellen Sie eine neue Vorlage</a> mit dem <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.docx">Certificate of Employment</a>-Word-Dokument.</p> <p>Die Vorlage enthält Zusammenführungs-Tags, die den Spaltennamen in unserer <a href="#zapier-tabelle">Zapier-Tabelle</a> entsprechen. Sie werden von DocuGenerate automatisch erkannt, was die Zuordnung der Daten bei der Dokumentengenerierung vereinfacht.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-template.png" alt="Certificate of Employment-Vorlage in DocuGenerate"/></p> <p>Die <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> in der Vorlage umfassen <code class="language-plaintext highlighter-rouge">[Company Name]</code>, <code class="language-plaintext highlighter-rouge">[First Name]</code>, <code class="language-plaintext highlighter-rouge">[Last Name]</code>, <code class="language-plaintext highlighter-rouge">[Start Date]</code>, <code class="language-plaintext highlighter-rouge">[End Date]</code>, <code class="language-plaintext highlighter-rouge">[Job Title]</code> und <code class="language-plaintext highlighter-rouge">[Certificate Date]</code>. Diese Tags werden durch tatsächliche Mitarbeiterdaten ersetzt, wenn das Dokument durch unsere Zapier-Automatisierung generiert wird.</p> <h2 id="tables-trigger">Den Zapier-Tables-Trigger Einrichten</h2> <p>Jetzt erstellen wir unseren Zap, um den gesamten Prozess zu automatisieren. Erstellen Sie zunächst einen neuen Zap in Zapier und wählen Sie <strong>Zapier Tables</strong> als Trigger-App. Wählen Sie den Trigger <strong>New or Updated Record</strong>. Diese Einstellung stellt sicher, dass unsere Automatisierung läuft, wenn Mitarbeiterdaten in unserer Tabelle hinzugefügt oder geändert werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/trigger-new-record.png" alt="New or Updated Record-Trigger in Zapier Tables"/></p> <p>Verbinden Sie in der Trigger-Konfiguration Ihr Zapier Tables-Konto, falls noch nicht geschehen, und wählen Sie dann die <strong>Certificate of Employment</strong>-Tabelle aus, die wir <a href="#zapier-tabelle">zuvor erstellt haben</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/trigger-table-selection.png" alt="Zapier Tables-Trigger konfigurieren"/></p> <p>Testen Sie den Trigger, um sicherzustellen, dass er korrekt funktioniert. Zapier zeigt Ihnen die neuesten Datensätze aus Ihrer Tabelle, sodass Sie einen für das Testen der nachfolgenden Schritte in Ihrem Zap auswählen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/trigger-test-data.png" alt="Zapier Tables-Trigger testen"/></p> <p>Wählen Sie einen der Mitarbeiterdatensätze aus und fahren Sie fort. Dieser Testdatensatz wird verwendet, um die Datenzuordnung in den folgenden Schritten unserer Automatisierung in der Vorschau anzuzeigen.</p> <h2 id="dokument-generieren">Die Generate-Document-Aktion Konfigurieren</h2> <p>Als nächstes fügen wir DocuGenerate zu unserem Zap hinzu, um die Dokumentengenerierung zu übernehmen. Suchen Sie nach der <a href="https://zapier.com/apps/docugenerate/integrations" target="_blank" rel="noopener">DocuGenerate-App</a> und fügen Sie die Aktion <strong>Generate Document</strong> hinzu.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-account.png" alt="Generate Document-Aktion hinzufügen"/></p> <p>Falls Sie DocuGenerate zum ersten Mal mit Zapier verbinden, müssen Sie sich mit Ihrem <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/#connect-to-zapier">DocuGenerate API-Schlüssel</a> authentifizieren. Ihren API-Schlüssel finden Sie in den Einstellungen Ihres DocuGenerate-Kontos.</p> <p>Wählen Sie in der Aktionskonfiguration die <strong>Certificate of Employment</strong>-Vorlage aus der Dropdown-Liste. Für den Dokumentnamen verwenden wir dynamische Werte aus unserer Zapier-Tabelle: <code class="language-plaintext highlighter-rouge">Certificate of [First Name] [Last Name]</code>. Auf diese Weise wird der Name des generierten Dokuments mit dem Namen der Person personalisiert. Setzen Sie das Exportformat auf <strong>PDF</strong>, um sicherzustellen, dass die Zertifikate in einem professionellen, druckfertigen Format generiert werden.</p> <p>Das Wichtigste ist die Zuordnung der Daten aus Ihrer <a href="#tables-trigger">Zapier-Tabelle</a> zu den Vorlagen-Tags. Stellen Sie im Feld <strong>Data</strong> sicher, dass Sie die tatsächlichen Feldwerte aus dem vorherigen Schritt für jeden Schlüssel auswählen. Die dynamische Feldeinfügung befüllt diese Werte automatisch, wenn der Zap ausgeführt wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-configure.png" alt="Generate Document-Parameter konfigurieren"/></p> <p>Testen Sie diesen Schritt, um sicherzustellen, dass die Dokumentengenerierung korrekt funktioniert. Bei Erfolg sehen Sie eine JSON-Antwort von DocuGenerate mit den Dokumentdetails wie Dokument-ID, Name, Format und <strong>Document URL</strong>, die auf die generierte PDF-Datei verweist, die wir im nächsten Schritt verwenden werden. Sie werden feststellen, dass der Dokumentname und der Dateiname wie beabsichtigt mit den Werten des ausgewählten Datensatzes personalisiert sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-test.png" alt="Generate Document-Aktion testen"/></p> <h2 id="dropbox-upload">Die Dropbox-Upload-Aktion Hinzufügen</h2> <p>Der letzte Schritt unserer Automatisierung besteht darin, das generierte Zertifikat in Dropbox zu speichern. Fügen Sie die <a href="https://zapier.com/apps/dropbox/integrations" target="_blank" rel="noopener">Dropbox-App</a> zu Ihrem Zap hinzu und wählen Sie die Aktion <strong>Upload File</strong>. Verbinden Sie Ihr Dropbox-Konto mit Zapier, falls noch nicht geschehen. Dies ermöglicht Zapier das Hochladen von Dateien in Ihren Dropbox-Speicher.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-upload-file.png" alt="Dropbox Upload File-Aktion hinzufügen"/></p> <p>In der Aktionskonfiguration müssen Sie zwei wichtige Parameter festlegen:</p> <ul> <li> <p><strong>Folder</strong>: Wählen Sie den Speicherort der Zertifikate in Ihrer Dropbox. Für dieses Tutorial verwenden wir den statischen Pfad <code class="language-plaintext highlighter-rouge">/DocuGenerate/Certificates</code>. Dies schafft eine organisierte Ordnerstruktur für ein einfaches Dokumentenmanagement. Sie können auch dynamische Ordnernamen basierend auf Daten aus Ihrer Tabelle verwenden, z. B. nach Unternehmensname oder Datum organisieren.</p> </li> <li> <p><strong>File</strong>: Hier geben wir die hochzuladende Datei an. Wählen Sie die <strong>Document URL</strong> aus dem DocuGenerate-Schritt. Dies weist Dropbox an, die Datei aus dem Speicher von DocuGenerate herunterzuladen und in dem angegebenen Ordner zu speichern.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-configure.png" alt="Dropbox-Upload-Parameter konfigurieren"/></p> <p>Lassen Sie <strong>Specify File Name</strong> und <strong>Specify File Extension</strong> leer. Damit kann Dropbox den Original-Dateinamen und die Erweiterung aus dem generierten Dokument verwenden, was für den ausgewählten Testdatensatz <code class="language-plaintext highlighter-rouge">Certificate of Conrado Fearnyhough.pdf</code> ist.</p> <p>Testen Sie diesen Schritt, um sicherzustellen, dass die Datei erfolgreich in Ihren Dropbox-Ordner hochgeladen wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-test.png" alt="Dropbox-Upload testen"/></p> <p>Wenn der Test erfolgreich ist, sehen Sie die Bestätigung, dass die Datei in den angegebenen Dropbox-Ordner hochgeladen wurde. Sie können dies überprüfen, indem Sie Ihr Dropbox-Konto direkt einsehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-file.png" alt="Dropbox-Dateien im Ordner &quot;Certificates&quot;"/></p> <h2 id="erweiterungen">Ihre Automatisierung Erweitern</h2> <p>Sobald Ihre grundlegende Automatisierung funktioniert, sollten Sie diese Erweiterungen in Betracht ziehen, um sie noch leistungsfähiger zu machen. Diese zusätzlichen Funktionen können Ihnen helfen, ausgefeiltere Workflows zu erstellen und Ihr Dokumentenmanagementsystem besser zu organisieren.</p> <h3 id="dynamische-ordner">Dynamische Ordnerorganisation</h3> <p>Statt eines statischen Ordnerpfades können Sie Zertifikate nach Unternehmen, Abteilung oder Datum organisieren:</p> <ul> <li><code class="language-plaintext highlighter-rouge">/DocuGenerate/Certificates/[Company Name]</code></li> <li><code class="language-plaintext highlighter-rouge">/DocuGenerate/Certificates/[Certificate Date]</code></li> <li><code class="language-plaintext highlighter-rouge">/DocuGenerate/Certificates/[Job Title]</code></li> </ul> <h3 id="bedingte-logik">Bedingte Logik</h3> <p>Verwenden Sie die <a href="https://zapier.com/blog/filter-by-zapier-guide/" target="_blank" rel="nofollow noopener">Filter</a>- oder <a href="https://zapier.com/features/paths" target="_blank" rel="nofollow noopener">Paths</a>-Funktionen von Zapier für unterschiedliche Dokumenttypen oder Genehmigungsworkflows:</p> <ul> <li>Generieren Sie verschiedene Zertifikatvorlagen basierend auf der Berufsbezeichnung</li> <li>Leiten Sie Dokumente durch Genehmigungsprozesse vor der endgültigen Speicherung</li> <li>Wenden Sie unterschiedliche Ordnerstrukturen für verschiedene Unternehmensabteilungen an</li> </ul> <h3 id="benachrichtigungen">Benachrichtigungssysteme</h3> <p>Fügen Sie E-Mail-Benachrichtigungen hinzu, um HR-Manager zu informieren, wenn Zertifikate generiert und gespeichert wurden. Sie können <a href="https://zapier.com/apps/email/integrations" target="_blank" rel="nofollow noopener">Zapier Email</a> oder <a href="https://zapier.com/apps/gmail/integrations" target="_blank" rel="nofollow noopener">Gmail</a>-Aktionen verwenden, um automatisierte Benachrichtigungen zu senden.</p> <h2 id="sicherheit-und-compliance">Sicherheits- und Compliance-Überlegungen</h2> <p>Bei der Automatisierung von Dokumenten-Workflows, insbesondere für HR-Dokumente wie Beschäftigungszertifikate, sollten Sie diese Sicherheitsaspekte berücksichtigen:</p> <h3 id="datenschutz">Datenschutz</h3> <ul> <li>Stellen Sie sicher, dass Ihre Zapier Tables nur notwendige Mitarbeiterinformationen enthalten</li> <li>Berücksichtigen Sie Datenaufbewahrungsrichtlinien sowohl für generierte Dokumente als auch für Quelldaten</li> <li>Überprüfen Sie die Dropbox-Freigabeeinstellungen, um unbefugten Zugriff zu verhindern</li> </ul> <h3 id="zugriffskontrolle">Zugriffskontrolle</h3> <ul> <li>Beschränken Sie den Zugriff auf Ihre Zapier-Automatisierungen auf autorisiertes Personal</li> <li>Verwenden Sie die Team-Funktionen von Dropbox, um zu kontrollieren, wer auf Zertifikatsordner zugreifen kann</li> <li>Überprüfen Sie regelmäßig Benutzerberechtigungen und entfernen Sie den Zugang für ehemalige Mitarbeiter</li> </ul> <h3 id="pruefpfade">Prüfpfade</h3> <ul> <li>Zapier pflegt automatisch Protokolle aller Automatisierungsläufe</li> <li>Erwägen Sie das Hinzufügen zusätzlicher Protokollierungs- oder Benachrichtigungsschritte für Compliance-Anforderungen</li> <li>Dokumentieren Sie Ihren Automatisierungsprozess für interne Prüfzwecke</li> </ul> <h2 id="fazit">Fazit</h2> <p>Die Automatisierung der Dokumentengenerierung und Cloud-Speicherung mit DocuGenerate, Zapier und Dropbox erstellt einen leistungsstarken Workflow, der Zeit spart und konsistente, professionelle Ergebnisse gewährleistet. Diese Automatisierung eliminiert manuelles Dateimanagement, reduziert Fehler und schafft ein organisiertes System für Dokumentenspeicherung und -abruf.</p> <p>Durch die Befolgung dieses Tutorials haben Sie eine Grundlage geschaffen, die für viele verschiedene Dokumenttypen und Geschäftsprozesse angepasst werden kann. Ob Sie HR-Dokumente, Verkaufsangebote oder administrative Unterlagen verwalten – dieser Automatisierungsansatz kann Ihre Workflows optimieren und die betriebliche Effizienz verbessern.</p> <p>Erwägen Sie, diese Automatisierung auf andere Dokumenttypen auszuweiten oder mit zusätzlichen Business-Tools zu integrieren. Die Flexibilität von Zapier macht es einfach, neue Schritte hinzuzufügen, verschiedene Apps zu verbinden oder ausgefeiltere Workflows zu erstellen, wenn sich Ihre Anforderungen weiterentwickeln.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.docx">Certificate of Employment-Vorlage</a> aus diesem Tutorial</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.csv">CSV-Beispieldaten</a> für den Import in Zapier Tables</li> <li>Mehr über die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/">Zapier-Integration von DocuGenerate</a></li> <li><a href="https://community.zapier.com/p/zapier-tables" target="_blank" rel="nofollow noopener">Zapier Tables-Dokumentation</a> für erweiterte Datenverwaltungsfunktionen</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Dropbox"/> <category term="Zapier"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie Dokumentengenerierung und Dateispeicherung automatisieren, indem Sie DocuGenerate über Zapier mit Dropbox verbinden. Diese Anleitung führt Sie durch die Erstellung von Beschäftigungszertifikaten und deren automatische Speicherung in organisierten Dropbox-Ordnern.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Warum Word-basierte Vorlagen statt HTML-basierter Verwenden?</title> <link href="https://www.docugenerate.com/de/blog/warum-word-basierte-vorlagen-statt-html-basierter-verwenden/" rel="alternate" type="text/html" title="Warum Word-basierte Vorlagen statt HTML-basierter Verwenden?"/> <published>2024-10-14T00:00:00+00:00</published> <updated>2024-10-14T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/warum-word-basierte-vorlagen-statt-html-basierter-verwenden</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/warum-word-basierte-vorlagen-statt-html-basierter-verwenden/"><![CDATA[<h2 id="landschaft-der-dokumentengenerierung">Die Landschaft der Dokumentengenerierung</h2> <p>Bei Lösungen zur Dokumentengenerierung stehen Unternehmen oft vor einer wichtigen Entscheidung zwischen Plattformen, die Word-Vorlagen verwenden, und solchen, die auf HTML-Vorlagen basieren. Diese Entscheidung mag auf den ersten Blick trivial erscheinen, kann jedoch Ihre Workflow-Effizienz, Dokumentqualität und langfristige Flexibilität erheblich beeinflussen.</p> <p>DocuGenerate basiert auf Microsoft-Word-Vorlagen, aber es gibt auch andere Lösungen auf dem Markt, die HTML-basierte Ansätze verwenden. Obwohl beide ihre Vorzüge haben, gibt es überzeugende Gründe, warum Word-basierte Vorlagen für Unternehmen jeder Größe oft bessere Ergebnisse liefern.</p> <p>In diesem Artikel untersuchen wir die wichtigsten Unterschiede zwischen Word- und HTML-Vorlagen, betrachten die Vorteile jedes Ansatzes und erklären, warum der Besitz Ihrer Vorlagen für die Geschäftskontinuität und Flexibilität wichtig ist.</p> <h2 id="grundlegende-unterschiede">Die Grundlegenden Unterschiede Verstehen</h2> <p>Bevor wir uns mit den Vor- und Nachteilen befassen, klären wir die wichtigsten Unterschiede zwischen Word-basierten und HTML-basierten Dokumentengenerierungssystemen:</p> <p><strong>Word-basierte Vorlagen</strong> verwenden Standard-Dokumentformate (DOCX, ODT), die mit <a href="https://www.microsoft.com/fr-fr/microsoft-365/word" target="_blank">Microsoft Word</a> und <a href="https://www.libreoffice.org/" target="_blank">LibreOffice</a> kompatibel sind. Sie nutzen alle Formatierungsmöglichkeiten dieser leistungsstarken Textverarbeitungsprogramme und ermöglichen die direkte Bearbeitung mit vertrauten Tools, die die meisten Geschäftsanwender bereits kennen. Sie unterstützen komplexe Dokumentstrukturen und können Ausgaben in mehreren Formaten (DOCX, PDF usw.) generieren.</p> <p><strong>HTML-basierte Vorlagen</strong> verwenden HTML und CSS für das Vorlagendesign und erfordern oft Kenntnisse in Webentwicklungstechnologien. Sie enthalten typischerweise einen WYSIWYG-Editor (steht für <em>„What You See Is What You Get”</em>), konzentrieren sich hauptsächlich auf PDF-Ausgabe und verwenden Template-Sprachen wie <a href="https://handlebarsjs.com/" target="_blank" rel="nofollow noopener">Handlebars</a>, <a href="https://mustache.github.io/" target="_blank" rel="nofollow noopener">Mustache</a> oder <a href="https://jinja.palletsprojects.com/en/stable/" target="_blank" rel="nofollow noopener">Jinja</a>.</p> <p>Mit diesen Unterschieden im Hinterkopf erkunden wir, warum Word-Vorlagen für Unternehmen oft die bessere Lösung darstellen.</p> <h2 id="vorlagenbesitz">Vorlagenbesitz und Portabilität</h2> <p>Einer der bedeutendsten Vorteile Word-basierter Vorlagen ist der echte Besitz Ihrer Dokumentdesigns. Mit DocuGenerate und anderen Word-basierten Lösungen sind Ihre Vorlagen Standard-DOCX-Dateien, die Sie herunterladen, offline bearbeiten und bei Bedarf sogar mit anderen Systemen verwenden können.</p> <p>Dies bietet wichtige Vorteile wie das Vermeiden von Vendor Lock-in, die Zukunftssicherung Ihrer Vorlagen-Investition, Offline-Zugang zur Bearbeitung und einfaches Teilen mit Kollegen oder Kunden als Standard-Word-Dokumente.</p> <p>HTML-basierte Lösungen speichern Ihre Vorlagen oft in proprietären Formaten, die nur innerhalb ihrer spezifischen Plattform bearbeitet und verwendet werden können. Dies schafft Herausforderungen wie Migrationsschwierigkeiten (alle Vorlagen neu erstellen beim Anbieterwechsel), eingeschränkte Kontrolle (nur Änderungen vornehmen, die ihr Editor erlaubt), Abhängigkeitsrisiken (wenn der Anbieter sein System ändert) und versteckte Kosten beim Neuerstellen von Vorlagen.</p> <h2 id="formatierungsmoeglichkeiten">Überlegene Formatierungsmöglichkeiten</h2> <p>Microsoft Word wurde über Jahrzehnte verfeinert, um präzise Dokumentformatierungskontrolle zu bieten. HTML-basierte Lösungen können trotz Verbesserungen nach wie vor nicht mit Words umfassenden Formatierungsmöglichkeiten mithalten.</p> <h3 id="komplexe-layouts">Komplexe Dokumentlayouts</h3> <p>Word eignet sich hervorragend für komplexe Dokumentformate, die in Geschäftsumgebungen üblich sind. Es bietet ausgefeilte Kontrolle über Kopf- und Fußzeilen in mehreren Abschnitten, komplexe Seitennummerierungsschemata, mehrspaltige Layouts, erweiterte Tabellenformatierung, präzisen Textumbruch um Bilder und Abschnittsumbrüche, die unterschiedliche Seitenausrichtungen innerhalb eines einzelnen Dokuments ermöglichen.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/word-layout-tab.png" alt="Word Layout-Menü"/></p> <h3 id="typografie">Typografie und Markenidentität</h3> <p>Word bietet überlegene typografische Kontrolle, die für die Aufrechterhaltung der Markenkonsistenz unverzichtbar ist. Dazu gehören umfassendes Schriftartenmanagement mit Zugriff auf alle <a href="https://www.docugenerate.com/de/hilfe/articles/wie-verwende-ich-benutzerdefinierte-schriftarten/">installierten Schriftarten</a>, fortgeschrittene typografische Funktionen wie Ligaturen und Kapitälchen, präzise Kontrolle über den Zeichenabstand und Stilsysteme, die eine konsistente Formatierung in allen Dokumenten gewährleisten.</p> <h3 id="pixelgenaue-praezision">Pixelgenaue Präzision</h3> <p>Bei der Dokumentengenerierung kommt es auf Präzision an – insbesondere bei Rechtsdokumenten, Verträgen und formeller Geschäftskorrespondenz. Word-Vorlagen bieten pixelgenaue Kontrolle, die HTML-Vorlagen oft nicht konsistent über verschiedene Ausgabeformate hinweg erreichen können.</p> <h2 id="benutzerfreundlichkeit">Benutzerfreundlichkeit und Akzeptanz</h2> <p>Einer der vielleicht überzeugendsten Vorteile Word-basierter Vorlagen ist die Vertrautheit und Benutzerfreundlichkeit. Die meisten Geschäftsleute kennen Microsoft Word bereits. Diese vorhandene Kompetenz bedeutet minimalen Schulungsaufwand, mehr Mitarbeiter können zur Vorlagenerstellung und -pflege beitragen und Unternehmen können Dokumentengenerierungslösungen schneller implementieren.</p> <p>HTML-basierte Lösungen erfordern oft Kenntnisse in Webtechnologien, über die viele Geschäftsanwender nicht verfügen. Obwohl WYSIWYG-Editoren diese Lücke zu schließen versuchen, bieten sie typischerweise nur begrenzte Formatierungskontrolle im Vergleich zu dem, was im zugrunde liegenden HTML und CSS möglich ist.</p> <p>Betrachten Sie <a href="https://ckeditor.com/" target="_blank" rel="nofollow noopener">CKEditor</a>, einen der beliebtesten WYSIWYG-Editoren, der von Web-Anwendungen verwendet wird. Obwohl er eine reichhaltige und benutzerfreundliche Oberfläche bietet, bleibt er hinter Words umfassender Funktionalität zurück. Benutzer stoßen häufig auf Einschränkungen bei komplexer Formatierung, Tabellenhandhabung und Seitenlayout-Kontrolle.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/ck-editor.png" alt="CKEditor-Oberfläche"/></p> <p>Selbst mit fortgeschrittenen WYSIWYG-Editoren haben Benutzer in der Regel nur Zugang zu einem Bruchteil der in Word verfügbaren Formatierungsmöglichkeiten. Das Bearbeitungserlebnis wirkt eingeschränkt im Vergleich zu einem dedizierten Textverarbeitungsprogramm, und die endgültige Ausgabe stimmt möglicherweise nicht immer mit dem überein, was Benutzer im Editor sehen.</p> <h2 id="praktische-beispiele">Einige Praktische Beispiele</h2> <p>Verschiedene Arten von Geschäftsdokumenten haben unterschiedliche Anforderungen an Formatierung und Struktur. Untersuchen wir, wie Word- und HTML-Vorlagen bei gängigen Dokumenttypen abschneiden.</p> <p><strong>Rechtsdokumente</strong> haben oft strenge Formatierungsanforderungen, einschließlich komplexer Nummerierungsschemata, präziser Absatzeinrückungen, spezifischer Zeilenabstände, Abschnitts- und Seitennummerierungskonventionen sowie sorgfältiger Platzierung von Unterschriftsblöcken. Word-Vorlagen eignen sich hervorragend dafür, diese präzisen Formatierungsanforderungen konsistent einzuhalten, während HTML-basierte Systeme oft Schwierigkeiten mit den genauen Abständen und Formatierungsanforderungen von Rechtsdokumenten haben.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/legal-document.png" alt="Gerichtsschriftsatz-Vorlagen"/></p> <p><strong>Rechnungen und Abrechnungen</strong> können mit beiden Ansätzen erstellt werden, aber Word-Vorlagen bieten Vorteile für komplexe Layouts mit präziser Positionierung von Elementen, komplexe Tabellenstrukturen für Positionen, bedingte Abschnitte basierend auf Geschäftsregeln und konsistente Paginierung für mehrseitige Rechnungen.</p> <p><strong>Lange Dokumente</strong> wie Berichte profitieren erheblich von Words wesentlichen Funktionen wie automatisch generierten und aktualisierten Inhaltsverzeichnissen, dynamischen Querverweisen auf andere Abschnitte, besserer Kontrolle über Seitenumbrüche und Abschnittsformatierung sowie der Möglichkeit, unterschiedliche Kopf- und Fußzeilen für verschiedene Abschnitte zu haben.</p> <h2 id="technische-ueberlegungen">Technische Überlegungen</h2> <p>Jenseits der Benutzererfahrung unterscheiden sich Word- und HTML-Vorlagen in mehreren technischen Aspekten. Obwohl beide Ansätze professionell aussehende Dokumente erzeugen können, beeinflussen die zugrunde liegenden Technologien alles von den Ausgabeoptionen bis hin zum Inhaltsfluss über Seiten. Das Verstehen dieser Unterschiede hilft Ihnen, die Lösung zu wählen, die am besten zu den spezifischen Anforderungen Ihres Unternehmens passt.</p> <h3 id="ausgabeformate">Ausgabeformat-Flexibilität</h3> <p>Ein wesentlicher Vorteil Word-basierter Vorlagen ist die Möglichkeit, Dokumente in <a href="https://www.docugenerate.com/de/hilfe/articles/zusammenfuehrungsformat-auswaehlen/">mehreren Formaten</a> zu generieren, einschließlich bearbeitbarer Word-Dokumente (DOCX), PDFs für die endgültige Verteilung und anderer Formate. Diese Vielseitigkeit ermöglicht es Unternehmen, Inhalte in dem Format zu verteilen, das ihren Bedürfnissen am besten entspricht, während sie die Möglichkeit behalten, Dokumente nach der Generierung zu bearbeiten.</p> <p>HTML-basierte Systeme konzentrieren sich typischerweise hauptsächlich auf PDF-Ausgabe, was die Flexibilität einschränkt, wenn Empfänger Inhalte bearbeiten oder wiederverwenden müssen. Wenn Änderungen erforderlich sind, muss der gesamte Dokumentengenerierungsprozess wiederholt werden, anstatt einfach die Ausgabedatei zu bearbeiten. Dies kann Ineffizienzen in Workflows verursachen, wo Dokumente häufig Änderungen benötigen oder Inhalte für andere Zwecke extrahiert werden müssen.</p> <h3 id="seitenumbrueche">Seitenumbrüche und Dokumentstruktur</h3> <p>Die Kontrolle über den Inhaltsfluss über Seiten hinweg ist entscheidend für professionelle Dokumente. Word verwaltet Seitenumbrüche, Abschnittsumbrüche und den Inhaltsfluss natürlich, während HTML-basierte Systeme oft Schwierigkeiten mit diesen Konzepten haben, da HTML für fließenden Inhalt und nicht für paginierte Dokumente konzipiert wurde.</p> <p>Dies wird besonders wichtig, wenn Dokumente spezifische Seitennummerierungsschemata benötigen, verschiedene Abschnitte unterschiedliche Layouts oder Ausrichtungen erfordern, Kopf- und Fußzeilen im Dokument variieren müssen oder Inhalte vermieden werden sollen, die über Seiten umbrechen.</p> <h3 id="begrenzer-anpassen">Anpassen von Begrenzern und Vorlagensyntax</h3> <p>Bei HTML-basierten Vorlagensystemen sind Sie typischerweise an deren spezifische Template-Sprache und Syntax gebunden. Die meisten verwenden feste Begrenzer wie <code class="language-plaintext highlighter-rouge">{{ }}</code> oder <code class="language-plaintext highlighter-rouge">{% %}</code> für Variablen und Logik.</p> <p>DocuGenerate ermöglicht das <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">Anpassen Ihrer Vorlagenbegrenzer</a>, was hilft, Konflikte mit anderer Syntax in Ihren Dokumenten zu vermeiden, Vorlagen zu erstellen, die den Vorlieben Ihres Teams entsprechen, den Vorlagenerstellungsprozess zu vereinfachen und die Migration von anderen Systemen durch Anpassung an deren Syntax zu unterstützen.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/tag-delimiters.png" alt="Anpassbare Begrenzer" class="desktop-width-75"/></p> <h2 id="die-richtige-wahl">Die Richtige Wahl für Ihr Unternehmen</h2> <p>Bei der Bewertung von Dokumentengenerierungslösungen sollten Sie folgende Schlüsselfaktoren berücksichtigen:</p> <ol> <li><strong>Vorlagenbesitz</strong>: Möchten Sie Ihre Vorlagen in einem Standardformat besitzen?</li> <li><strong>Formatierungsanforderungen</strong>: Wie komplex sind Ihre Dokumentformatierungsanforderungen?</li> <li><strong>Benutzerkenntnisse</strong>: Über welche technische Expertise verfügt Ihr Team?</li> <li><strong>Ausgabeflexibilität</strong>: Benötigen Sie bearbeitbare Dokumente oder nur PDFs?</li> <li><strong>Integration</strong>: Wie fügt sich die Lösung in Ihre bestehenden Dokumenten-Workflows ein?</li> </ol> <p>Für viele Unternehmen bietet Word-basierte Dokumentengenerierung die optimale Balance aus Leistung, Flexibilität und Benutzerfreundlichkeit. Sie lässt sich nahtlos in bestehende Geschäftsprozesse integrieren und bietet Funktionen wie nachverfolgte Änderungen für kollaboratives Bearbeiten, Kommentare für Feedback, Dokumentvergleichstools und Kompatibilität mit vielen E-Signatur-Plattformen, die direkt mit Word-Dateien arbeiten.</p> <h2 id="fazit">Fazit</h2> <p>Obwohl sowohl Word-basierte als auch HTML-basierte Dokumentengenerierungslösungen ihren Platz haben, bieten Word-Vorlagen für die meisten Geschäftsszenarien erhebliche Vorteile: echten Besitz Ihrer Vorlagen, überlegene Formatierungsmöglichkeiten, ein vertrautes Bearbeitungserlebnis, Ausgabeformat-Flexibilität und Nachbearbeitungsoptionen.</p> <p>DocuGenerate baut auf diesen Vorteilen mit zusätzlichen Funktionen wie anpassbaren Begrenzern und einem intuitiven Ansatz zur Vorlagenerstellung auf. Bei der Bewertung von Dokumentengenerierungslösungen für Ihr Unternehmen sollten Sie nicht nur die unmittelbare Funktionalität, sondern auch die langfristigen Auswirkungen auf Vorlagenbesitz, Benutzerakzeptanz und Workflow-Integration berücksichtigen. Die richtige Wahl kann Ihrem Team unzählige Stunden sparen und sicherstellen, dass Ihre Dokumente immer Ihren genauen Standards entsprechen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://www.docugenerate.com/de/vorlagen/">Vorlagenbibliothek</a> – Professionell gestaltete Vorlagen zum sofortigen Einsatz</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/zusammenfuehrungsformat-auswaehlen/">Leitfaden zu Exportformaten</a> – Verschiedene verfügbare Ausgabeformate</li> <li><a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">Tag-Begrenzer anpassen</a> – Eigene Begrenzer festlegen</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Templates"/> <category term="Microsoft Word"/> <category term="HTML"/> <summary type="html"><![CDATA[Entdecken Sie, warum Word-basierte Vorlagen gegenüber HTML-basierten Alternativen für die Dokumentengenerierung erhebliche Vorteile bieten. Erfahren Sie, wie Vorlagenbesitz, Formatierungskontrolle und Bearbeitungsflexibilität Ihren Geschäftsworkflow verbessern können.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/014-word-html-templates/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/014-word-html-templates/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Multi-Region-Verarbeitung und -Speicherung Vorgestellt</title> <link href="https://www.docugenerate.com/de/blog/multi-region-verarbeitung-und-speicherung-vorgestellt/" rel="alternate" type="text/html" title="Multi-Region-Verarbeitung und -Speicherung Vorgestellt"/> <published>2024-09-30T00:00:00+00:00</published> <updated>2024-09-30T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/multi-region-verarbeitung-und-speicherung-vorgestellt</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/multi-region-verarbeitung-und-speicherung-vorgestellt/"><![CDATA[<h2 id="was-ist-multi-region">Was ist Multi-Region-Verarbeitung und -Speicherung?</h2> <p>Die Multi-Region-Verarbeitung und -Speicherung ermöglicht es Ihnen, den Verarbeitungsort Ihrer Daten zu wählen – ob für die Einhaltung von Vorschriften wie der DSGVO, die Leistungsverbesserung für Benutzer in verschiedenen Regionen oder einfach für mehr Kontrolle über den Datenspeicherort. Diese neue Funktion ist wegweisend.</p> <p>Bisher wurden alle Vorlagen und Dokumente in einer einzigen Region (den USA) gespeichert und verarbeitet, die als Standard für alle Benutzer galt. Jetzt können Sie den physischen Standort wählen, an dem Ihre Vorlagen und die damit verbundenen Dokumente verarbeitet und gespeichert werden, was Sicherheit und Geschwindigkeit verbessert. Folgende Regionen stehen zur Verfügung:</p> <ul> <li><strong>Vereinigte Staaten</strong></li> <li><strong>Europäische Union</strong></li> <li><strong>Vereinigtes Königreich</strong></li> <li><strong>Australien</strong></li> </ul> <p>Sie können eine <a href="#web-kontoregion">Standardregion für Ihr Konto wählen</a> und <a href="#web-vorlagenregion">Regionen auf Vorlagenebene konfigurieren</a>. Für fortgeschrittene Benutzer, die unsere API nutzen, ist es möglich, die Verarbeitungsregion über API-Aufrufe anzugeben und <a href="#api-endpunkte-region">regionale Endpunkte</a> für die Dokumentengenerierung zu nutzen. Wir erklären alles Wissenswerte zu diesem Update und wie Sie <a href="#migrationsanleitung">bestehende Vorlagen migrieren</a> können, um von dieser Funktion zu profitieren.</p> <h2 id="web-app-aenderungen">Änderungen in der Web-App</h2> <p>Unser Ziel mit diesem Update ist es, die Regionsauswahl für Web-App-Benutzer so unkompliziert wie möglich zu gestalten. Wir haben einige wichtige Änderungen eingeführt, um den Prozess der Regionsauswahl sowohl auf Konto- als auch auf Vorlagenebene zu vereinfachen.</p> <h3 id="web-kontoregion">Regionsstandards auf Kontoebene</h3> <p>Um die Verwaltung mehrerer Vorlagen zu vereinfachen, können Sie jetzt eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-waehle-ich-die-kontoregion-aus">Standardregion</a> in den Kontoeinstellungen festlegen. Diese Standardeinstellung gilt für alle neu erstellten Vorlagen und stellt sicher, dass sie in der Region Ihrer Wahl verarbeitet und gespeichert werden, ohne dass Sie bei jeder neuen Vorlage die Region auswählen müssen.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/account-region-v2.png" alt="Standardregion des Kontos aktualisieren"/></p> <p>Standardmäßig ist die Region auf <strong>Vereinigte Staaten</strong> eingestellt, Sie können sie jedoch je nach Ihren Bedürfnissen auf eine beliebige Region ändern. Diese Funktion ist ideal für Benutzer, die in einer bestimmten Region tätig sind und sicherstellen möchten, dass alle ihre Vorlagen und Dokumente entsprechend verarbeitet werden.</p> <p>Wenn Sie beispielsweise hauptsächlich in Europa tätig sind und <strong>Europäische Union</strong> als Standardregion wählen, werden alle neuen Vorlagen automatisch in der EU verarbeitet und gespeichert. Natürlich können Sie diese Einstellung weiterhin pro Vorlage überschreiben, aber eine Standardeinstellung spart Ihnen Zeit und optimiert Ihren Workflow.</p> <h3 id="web-vorlagenregion">Regionsauswahl für Vorlagen</h3> <p>Beim Erstellen oder Bearbeiten einer Vorlage in der Web-App sehen Sie jetzt ein Regions-Dropdown, mit dem Sie den <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-region-einer-vorlage/">physischen Standort wählen</a> können, an dem Ihre Vorlage und die zugehörigen Dokumente verarbeitet und gespeichert werden. Diese Auswahl stellt sicher, dass alle aus dieser Vorlage generierten Dokumente innerhalb der ausgewählten Region verarbeitet werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/template-region.png" alt="Speicher- und Verarbeitungsregion der Vorlage aktualisieren"/></p> <p>Wenn Sie beispielsweise <strong>Europäische Union</strong> auswählen, wird nicht nur die Vorlage selbst in unserem EU-Rechenzentrum gespeichert, sondern alle aus dieser Vorlage generierten Dokumente werden dort auch verarbeitet und gespeichert. Dies ist besonders wichtig für Benutzer, die regionale Vorschriften wie die DSGVO einhalten müssen, die vorschreibt, dass Daten europäischer Bürger innerhalb der EU verbleiben müssen.</p> <p>Wenn Sie die Region einer bestehenden Vorlage ändern möchten, werden nur neu nach der Änderung generierte Dokumente betroffen sein. Bereits vorhandene Dokumente verbleiben in der Region, in der sie ursprünglich gespeichert wurden.</p> <h2 id="api-aenderungen">Änderungen auf API-Ebene</h2> <p>Für unsere fortgeschritteneren Benutzer, die über die API mit DocuGenerate interagieren, haben wir mehrere wichtige Updates eingeführt, die Ihnen mehr Kontrolle darüber geben, wie und wo Ihre Daten verarbeitet werden. Ob beim Erstellen, Aktualisieren oder Generieren von Dokumenten – die API wurde aktualisiert, um Multi-Region-Funktionalität zu unterstützen.</p> <h3 id="api-endpunkte-region">Multi-Region-API-Endpunkte</h3> <p>Zusätzlich zum Haupt-API-Endpunkt haben wir mehrere <a href="https://www.docugenerate.com/de/hilfe/articles/kann-ich-regionale-api-endpunkte-verwenden">regionale API-Endpunkte</a> eingeführt, mit denen Sie Ihre Daten an bestimmten geografischen Standorten verarbeiten und speichern können. Diese neuen Endpunkte umfassen:</p> <ul> <li><strong>Vereinigte Staaten</strong> (San Francisco): <a href="https://api.docugenerate.com/" target="_blank">https://api.docugenerate.com/</a></li> <li><strong>Europäische Union</strong> (Frankfurt): <a href="https://api.eu.docugenerate.com/" target="_blank">https://api.eu.docugenerate.com/</a></li> <li><strong>Vereinigtes Königreich</strong> (London): <a href="https://api.uk.docugenerate.com/" target="_blank">https://api.uk.docugenerate.com/</a></li> <li><strong>Australien</strong> (Sydney): <a href="https://api.au.docugenerate.com/" target="_blank">https://api.au.docugenerate.com/</a></li> </ul> <p>Durch die Verwendung dieser regionalen Endpunkte können Sie sicherstellen, dass alle Dokumentengenerierungen und Vorlagenspeicherungen innerhalb der Region Ihrer Wahl stattfinden. Dies ist besonders nützlich für Compliance-Zwecke und stellt sicher, dass Ihre Daten vollständig innerhalb einer bestimmten Gerichtsbarkeit verarbeitet werden.</p> <p>Der Wechsel zu einem regionalen Endpunkt ist einfach – Sie müssen lediglich die Basis-URL in Ihren API-Aufrufen auf den entsprechenden regionalen Endpunkt ändern. Wenn Sie beispielsweise Ihre Dokumente in der EU verarbeiten müssen, würden Sie <a href="https://api.eu.docugenerate.com/" target="_blank">https://api.eu.docugenerate.com/</a> anstelle des Standard-Endpunkts verwenden.</p> <h3 id="api-vorlagenregion">Regionsangabe für Vorlagen</h3> <p>Ein weiteres wichtiges API-Update ermöglicht es Ihnen, die Region beim Erstellen oder Aktualisieren einer Vorlage anzugeben. Wenn Sie über die API eine <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">neue Vorlage erstellen</a>, können Sie das Feld <code class="language-plaintext highlighter-rouge">region</code> in Ihrer Anfrage-Payload angeben, um festzulegen, wo diese Vorlage und ihre Dokumente gespeichert werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/api-create-template.png" alt="Region beim Erstellen einer Vorlage über die API angeben"/></p> <p>Ebenso können Sie über die API die <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">Region einer Vorlage aktualisieren</a>. Wie in der Web-App wirkt sich die Änderung der Region einer Vorlage nur auf nach der Änderung generierte Dokumente aus, während zuvor generierte Dokumente in ihrer ursprünglichen Region verbleiben.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/api-update-template.png" alt="Region beim Aktualisieren einer Vorlage über die API angeben"/></p> <h2 id="migrationsanleitung">Migrationsanleitung</h2> <p>Um den Übergang zur Multi-Region-Verarbeitung so reibungslos wie möglich zu gestalten, haben wir eine Migrationsanleitung für Web-App- und API-Benutzer erstellt. Hier erfahren Sie, wie Sie sicherstellen können, dass Ihre Vorlagen und Dokumente diese neue Funktion vollständig nutzen.</p> <h3 id="migration-web-app">Für Web-App-Benutzer</h3> <p>Wenn Sie hauptsächlich die Web-App verwenden, gehen Sie wie folgt vor:</p> <ol> <li> <p><strong>Legen Sie Ihre Standardregion auf Kontoebene fest:</strong><br/> Gehen Sie zu Ihren Kontoeinstellungen und <a href="#web-kontoregion">wählen Sie die Standardregion</a>, in der neue Vorlagen gespeichert und verarbeitet werden. Diese Einstellung gilt automatisch für alle nach der Änderung erstellten Vorlagen.</p> </li> <li> <p><strong>Aktualisieren Sie bestehende Vorlagen (optional):</strong><br/> Wenn Sie bestehende Vorlagen in eine neue Region verschieben möchten, gehen Sie zu den Vorlageneinstellungen und <a href="#web-vorlagenregion">wählen Sie eine neue Region für die Vorlage</a>. Denken Sie daran, dass dies nur Dokumente betrifft, die nach der Änderung generiert werden. Vorhandene Dokumente verbleiben in ihrer ursprünglichen Region.</p> </li> </ol> <h3 id="migration-api">Für API-Benutzer</h3> <p>Wenn Sie die API verwenden, folgen Sie diesen Schritten für eine reibungslose Migration:</p> <ol> <li> <p><strong>Wechseln Sie zu einem regionalen API-Endpunkt:</strong><br/> Aktualisieren Sie Ihre API-Basis-URL auf den entsprechenden regionalen Endpunkt (z. B. <a href="https://api.eu.docugenerate.com/" target="_blank">https://api.eu.docugenerate.com/</a> für die EU-Verarbeitung). Dies stellt sicher, dass Ihre Vorlagen und Dokumente in der Region verarbeitet werden, die Ihren Anforderungen am besten entspricht.</p> </li> <li> <p><strong>Aktualisieren Sie bestehende Vorlagen (optional):</strong><br/> Verwenden Sie die API, um die Region Ihrer Vorlage durch Einbeziehung des Felds <code class="language-plaintext highlighter-rouge">region</code> in Ihren API-Anfragen zu aktualisieren. Alle neuen Dokumente, die nach dieser Aktualisierung generiert werden, werden in der neuen Region der Vorlage gespeichert.</p> </li> </ol> <h2 id="warum-dies-wichtig-ist">Warum Dies Wichtig ist</h2> <p>Die Einführung von Multi-Region-Verarbeitung und -Speicherung bringt unseren Benutzern erhebliche Vorteile. Hier sind einige Gründe, warum diese Funktion wichtig ist:</p> <p><strong>1. Einhaltung lokaler Vorschriften</strong><br/> Wenn Sie in Regionen mit strengen Datenspeicherungsgesetzen tätig sind (z. B. der DSGVO der Europäischen Union), ermöglicht Ihnen diese Funktion sicherzustellen, dass Ihre Daten innerhalb der erforderlichen Gerichtsbarkeit verbleiben. Sie haben jetzt die Kontrolle darüber, wo Ihre Vorlagen und Dokumente verarbeitet werden, und können so lokale Gesetze einhalten.</p> <p><strong>2. Verbesserte Leistung</strong><br/> Durch die Verarbeitung und Speicherung von Daten näher am Standort Ihrer Benutzer können Sie die Latenz reduzieren und die Gesamtleistung der Dokumentengenerierung verbessern. Wenn sich die meisten Ihrer Benutzer beispielsweise in Europa befinden, führt die Speicherung von Vorlagen und die Verarbeitung von Dokumenten in der EU zu schnelleren Antwortzeiten.</p> <p><strong>3. Mehr Flexibilität und Kontrolle</strong><br/> Ob Sie ein kleines Unternehmen in einer bestimmten Region oder ein globales Unternehmen mit Benutzern auf der ganzen Welt sind – diese Funktion gibt Ihnen die Flexibilität, Ihre Datenspeicherungs- und Verarbeitungsanforderungen an Ihre spezifischen Umstände anzupassen.</p> <h2 id="anwendungsszenarien">Anwendungsszenarien</h2> <p><strong>1. Kleines Unternehmen mit lokalen Kunden</strong><br/> Wenn Sie ein kleines Unternehmen sind, das ausschließlich im Vereinigten Königreich tätig ist, können Sie jetzt <strong>Vereinigtes Königreich</strong> als Standardregion auswählen. Dies stellt sicher, dass Ihre Vorlagen und Dokumente innerhalb des Vereinigten Königreichs verarbeitet und gespeichert werden, gibt Ihren Kunden die Gewissheit über die Datenspeicherung und hilft Ihnen, lokale Datenschutzgesetze einzuhalten.</p> <p><strong>2. EU-basiertes Unternehmen mit internationalen Kunden</strong><br/> Ein in der <strong>Europäischen Union</strong> ansässiges Unternehmen mit Kunden aus aller Welt kann verschiedene Vorlagen für verschiedene Regionen einrichten. Sie können beispielsweise Vorlagen für europäische Kunden in der EU speichern und verarbeiten, während Sie für nordamerikanische Kunden die Region <strong>Vereinigte Staaten</strong> wählen. Diese Flexibilität optimiert nicht nur die Leistung, sondern gewährleistet auch die DSGVO-Konformität für Ihre europäischen Kunden.</p> <p><strong>3. Globales Unternehmen mit Nutzern auf mehreren Kontinenten</strong><br/> Für ein globales Unternehmen, das Kunden auf allen Kontinenten betreut, ermöglicht die Multi-Region-Verarbeitung eine effiziente Dokumentengenerierung. Sie können Ihre Standardkontoregion auf <strong>Australien</strong> für den Asien-Pazifik-Betrieb einstellen und gleichzeitig <strong>Europäische Union</strong>- und <strong>Vereinigte Staaten</strong>-Regionen für spezifische Kundenanforderungen in diesen Gebieten nutzen. Dies reduziert die Latenz und stellt sicher, dass die Dokumentenverarbeitung für bessere Leistung lokal erfolgt.</p> <h2 id="fazit">Fazit</h2> <p>Die Multi-Region-Verarbeitung und -Speicherung ist eine leistungsstarke neue Funktion, die Flexibilität, Compliance und Leistungsverbesserungen für alle DocuGenerate-Benutzer bietet. Ob Sie unsere Web-App oder die API nutzen – wir haben es einfach gemacht, die Region auszuwählen, die Ihren Anforderungen am besten entspricht, und sicherzustellen, dass Ihre Vorlagen und Dokumente entsprechend verarbeitet werden. Wir empfehlen Ihnen, diese neue Funktion zu erkunden und die damit verbundenen Vorteile zu nutzen.</p>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Product Update"/> <category term="API"/> <category term="Templates"/> <summary type="html"><![CDATA[Es ist nun möglich, den physischen Standort zu wählen, an dem Ihre Vorlagen und Dokumente von DocuGenerate verarbeitet und gespeichert werden. Erfahren Sie, wie diese neue Funktion Ihnen hilft, lokale Compliance-Vorschriften zu erfüllen und die Leistung zu verbessern.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/013-multi-region-processing/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/013-multi-region-processing/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">NDA-E-Signaturen mit DocuGenerate und SignRequest Optimieren</title> <link href="https://www.docugenerate.com/de/blog/nda-e-signaturen-mit-docugenerate-und-signrequest-optimieren/" rel="alternate" type="text/html" title="NDA-E-Signaturen mit DocuGenerate und SignRequest Optimieren"/> <published>2024-08-11T00:00:00+00:00</published> <updated>2024-08-11T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/nda-e-signaturen-mit-docugenerate-und-signrequest-optimieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/nda-e-signaturen-mit-docugenerate-und-signrequest-optimieren/"><![CDATA[<h2 id="was-ist-ein-nda">Was ist ein NDA?</h2> <p>Ein <strong>NDA (Non-Disclosure Agreement)</strong> oder Geheimhaltungsvertrag ist ein rechtlich bindender Vertrag, der eine vertrauliche Beziehung zwischen Parteien begründet. NDAs sind unerlässlich, um sensible Informationen zu schützen und sicherzustellen, dass an Geschäftsverhandlungen, Partnerschaften oder Arbeitsverhältnissen beteiligte Parteien keine proprietären Informationen an unbefugte Dritte weitergeben.</p> <p>Die Verwaltung von NDAs war bisher ein manueller, zeitaufwendiger Prozess, der das Ausdrucken, Unterzeichnen, Scannen und Hin- und Herschicken von Dokumenten per E-Mail umfasste. Mit dem Aufkommen moderner Dokumentengenerierung und elektronischer Signaturtechnologie kann dieser Prozess jedoch automatisiert und optimiert werden. In diesem Blogbeitrag zeigen wir, wie Sie die NDA-E-Signatur mit <a href="https://www.docugenerate.com/">DocuGenerate</a> und <a href="https://signrequest.com/" target="_blank" rel="nofollow noopener">SignRequest</a> automatisieren – einer elektronischen Signaturlösung, die das Unterzeichnen von Dokumenten einfach, schnell, sicher und rechtlich bindend macht.</p> <h2 id="wesentliche-elemente">Wesentliche Elemente eines NDAs</h2> <ul> <li> <p><strong>Definition vertraulicher Informationen</strong>: Legt genau fest, was als vertrauliche Information gilt. Dazu gehören Geschäftsgeheimnisse, Geschäftspläne, Finanzdaten, Kundenlisten, proprietäre Technologien und andere sensible Daten, die nicht öffentlich bekannt sind. Es sollten alle Formen von Informationen abgedeckt werden, wie schriftliche Dokumente, elektronische Dateien und mündliche Mitteilungen.</p> </li> <li> <p><strong>Pflichten der empfangenden Partei</strong>: Beschreibt die Verantwortlichkeiten der Partei, die vertrauliche Informationen empfängt. Dazu gehört die Verwendung der Informationen nur für die im NDA festgelegten Zwecke, die Beschränkung des Zugriffs auf autorisierte Personen und das Ergreifen angemessener Maßnahmen zum Schutz der Informationen vor unbefugtem Zugriff oder Offenlegung. Sicherheitsmaßnahmen wie Verschlüsselung und sichere Speicherung können angegeben werden.</p> </li> <li> <p><strong>Ausnahmen von vertraulichen Informationen</strong>: Definiert, welche Informationen nicht als vertraulich gelten. Gängige Ausnahmen umfassen Informationen, die öffentlich bekannt sind, der empfangenden Partei bereits bekannt waren, von der empfangenden Partei unabhängig entwickelt wurden oder von einem Dritten ohne Vertraulichkeitspflichten offenbart wurden.</p> </li> <li> <p><strong>Laufzeit der Vereinbarung</strong>: Gibt an, für welchen Zeitraum die Vertraulichkeitspflichten gelten. Dies kann variieren, wird aber oft als fester Zeitraum angegeben, z. B. ein bis fünf Jahre, oder kann unbegrenzt fortbestehen, bis die vertraulichen Informationen nicht mehr als solche gelten.</p> </li> <li> <p><strong>Konsequenzen bei Verletzung</strong>: Spezifiziert die Strafen für den Verstoß gegen die Bedingungen des NDAs. Dies kann rechtliche Schritte, Schadensersatz und einstweilige Verfügungen zur Verhinderung weiterer Offenlegung umfassen. Die klare Darlegung der Konsequenzen schreckt Verstöße ab und bietet einen klaren Handlungsweg, falls ein Verstoß auftritt.</p> </li> </ul> <h2 id="automatisierungsvorteile">Vorteile der Automatisierung von NDA-E-Signaturen</h2> <p>Die manuelle Bearbeitung von NDAs ist mühsam und fehleranfällig. Der traditionelle Prozess umfasst mehrere Schritte: das Verfassen des NDAs, das Ausdrucken und Unterzeichnen, das Scannen und Versenden sowie das anschließende Speichern des Dokuments. Dieser manuelle Prozess ist nicht nur zeitaufwendig, sondern erhöht auch das Fehlerrisiko, wie fehlende Unterschriften oder verlorene Dokumente.</p> <p>Die Automatisierung des NDA-Prozesses mit E-Signatur-Technologie bietet zahlreiche Vorteile. Zunächst spart sie Zeit, indem die für die Generierung, Unterzeichnung und Speicherung von NDAs erforderlichen Schritte reduziert werden. Die Automatisierung minimiert auch Fehler und stellt sicher, dass alle notwendigen Felder ausgefüllt und Unterschriften eingeholt werden. Diese verbesserte Effizienz ermöglicht es Ihrem Team, sich auf strategischere Aufgaben zu konzentrieren. Darüber hinaus bieten elektronische Signaturen eine sichere und manipulationssichere Möglichkeit, Dokumente zu unterzeichnen, was die Gesamtsicherheit erhöht. Schließlich unterstützt die Reduzierung des Papierverbrauchs umweltfreundliche Geschäftspraktiken.</p> <h2 id="nda-vorlage">Die NDA-Vorlage in DocuGenerate Erstellen</h2> <p>Für dieses Tutorial verwenden wir die <a href="https://www.docugenerate.com/assets/posts/012-nda-e-signature/Non Disclosure Agreement.docx">NDA-Vorlage</a> aus der <a href="https://www.docugenerate.com/de/vorlagen/#verträge">Vorlagenbibliothek</a>. Diese Vorlage enthält alle notwendigen Abschnitte und Platzhalter für dynamische Informationen und stellt sicher, dass jedes generierte NDA vollständig und korrekt ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/nda-template.png" alt="NDA-Vorlage in DocuGenerate"/></p> <h2 id="zapier-integration">DocuGenerate mit SignRequest über Zapier Integrieren</h2> <p>Um den NDA-Signaturprozess zu automatisieren, verwenden wir Zapier, ein No-Code-Automatisierungstool, das uns ermöglicht, <a href="https://zapier.com/apps/docugenerate/integrations" target="_blank" rel="noopener">DocuGenerate</a> mit <a href="https://zapier.com/apps/signrequest/integrations" target="_blank" rel="noopener">SignRequest</a> nahtlos zu integrieren. Seine Zapier-App bietet Flexibilität beim Versenden von Dokumenten zur E-Signatur, was es zu einer idealen Lösung für unseren Anwendungsfall macht. Während andere E-Signatur-Apps das Erstellen einer Vorlage und das Generieren eines Dokuments auf Basis dieser Vorlage erfordern, ermöglicht SignRequest die Angabe des zu unterzeichnenden Dokuments als URL, was sehr praktisch ist.</p> <p>Diese Integration automatisiert den gesamten NDA-Signaturprozess, ohne dass Code geschrieben werden muss. Wir richten einen Zap mit folgenden Schritten ein:</p> <h3 id="new-document-trigger">1. New Document (Trigger)</h3> <p>Der Workflow beginnt mit dem <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/#new-document-trigger">New Document</a>-Trigger in DocuGenerate, der aktiviert wird, sobald ein neues Dokument aus der NDA-Vorlage generiert wird. Dies stellt sicher, dass der Prozess startet, sobald das NDA fertig ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/new-document-trigger.png" alt="New Document Trigger in DocuGenerate"/></p> <p>Obwohl sich dieses Tutorial auf einen einfachen Workflow konzentriert, können Sie ihn weiter ausbauen, indem Sie Schritte zum Abrufen von Formularantworten, Generieren des Dokuments und Senden der Signieranfrage in einem einzigen Flow hinzufügen. Anstatt den <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/#new-document-trigger">New Document</a>-Trigger in DocuGenerate zu verwenden, könnten Sie die <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/#generate-document-action">Generate Document</a>-Aktion für eine stärker integrierte Automatisierung nutzen.</p> <h3 id="text-formatter-action">2. Text Formatter (Action)</h3> <p>Da wir den Workflow vereinfachen, indem wir die anfängliche Formulareinreichung und die Dokumentengenerierungsschritte überspringen, benötigen wir eine Möglichkeit, die E-Mail-Adresse des NDA-Empfängers zu erhalten. Eine Methode ist, die E-Mail-Adresse in den Dokumentnamen einzufügen, z. B. <em>“NDA - john.smith@gmail.com”</em>. Der <a href="https://zapier.com/apps/formatter/integrations" target="_blank" rel="nofollow noopener">Text Formatter</a> von Zapier kann dann die E-Mail-Adresse aus dem Dokumentnamen extrahieren, indem er den Teil <em>“NDA - “</em> entfernt. Wir können diese Aktion zum Beispiel <strong>Extract email address</strong> nennen:</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/text-formatter-action.png" alt="Text Formatter-Aktion zum Extrahieren der E-Mail-Adresse"/></p> <h3 id="send-signrequest-action">3. Send SignRequest (Action)</h3> <p>Verwenden Sie die Aktion <strong>Send SignRequest</strong> in SignRequest, um das NDA zur E-Signatur zu senden. Richten Sie die Parameter wie folgt ein:</p> <ul> <li><code class="language-plaintext highlighter-rouge">File From URL</code> erhält die <code class="language-plaintext highlighter-rouge">Document URL</code> von DocuGenerate.</li> <li><code class="language-plaintext highlighter-rouge">SignRequest Name</code> erhält den <code class="language-plaintext highlighter-rouge">File Name</code> von DocuGenerate.</li> <li><code class="language-plaintext highlighter-rouge">Signer Email</code> erhält den <code class="language-plaintext highlighter-rouge">Output</code> vom Text Formatter.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-action.gif" alt="Send SignRequest-Aktion konfigurieren"/></p> <p>Diese Einrichtung stellt sicher, dass das NDA, sobald es generiert wird, automatisch zur E-Signatur versendet wird, wodurch der Prozess optimiert und manuelle Eingriffe reduziert werden.</p> <h2 id="e-mail-und-signaturprozess">E-Mail und Signaturprozess</h2> <p>Sobald der Workflow aktiviert ist, erhält der Empfänger eine E-Mail mit dem zur E-Signatur bereitstehenden NDA. Lassen Sie uns durchgehen, wie das Dokument im SignRequest-Dashboard erscheint, welche E-Mail der Empfänger erhält und wie der Signaturprozess selbst abläuft.</p> <h3 id="signrequest-dashboard">1. SignRequest-Dashboard</h3> <p>Nachdem das Dokument generiert und zur Unterzeichnung gesendet wurde, erscheint es in Ihrem <a href="https://signrequest.com/#/documents" target="_blank" rel="nofollow noopener">SignRequest-Dashboard</a>. Hier können Sie den Status aller Ihrer Dokumente einfach verfolgen, sehen, wer bereits unterzeichnet hat, und wer noch unterzeichnen muss. Dieses Dashboard bietet eine zentrale Übersicht und erleichtert die Verwaltung aller Ihrer unterzeichneten Dokumente.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-dashboard.png" alt="SignRequest-Dashboard mit dem NDA-Dokument"/></p> <h3 id="empfaenger-e-mail">2. E-Mail-Benachrichtigung für den Empfänger</h3> <p>Der Empfänger erhält eine E-Mail-Benachrichtigung von SignRequest mit der Information, dass ein Dokument auf seine Unterschrift wartet. Diese E-Mail enthält einen sicheren Link zum Dokument und stellt sicher, dass nur der beabsichtigte Empfänger auf das NDA zugreifen und es unterzeichnen kann.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-email.png" alt="E-Mail, die der Empfänger erhält"/></p> <h3 id="signaturprozess">3. Signaturprozess</h3> <p>Das Klicken auf den Link in der E-Mail führt den Empfänger zur SignRequest-Plattform, wo er das NDA überprüfen und unterzeichnen kann. Der Signaturprozess ist intuitiv und unkompliziert und erfordert nur wenige Klicks. Der Empfänger kann das Dokument elektronisch unterzeichnen, und nach der Unterzeichnung erhalten beide Parteien eine Kopie des unterzeichneten NDAs.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-signature.gif" alt="Animation des Signaturprozesses"/></p> <p>Dieses nahtlose Erlebnis stellt sicher, dass das NDA schnell und sicher unterzeichnet wird, ohne dass Dokumente gedruckt, gescannt oder per Post versandt werden müssen.</p> <h2 id="beispiel-anwendungsfaelle">Beispiel-Anwendungsfälle</h2> <p>Die Automatisierung von NDA-Generierung und E-Signaturen kann in verschiedenen Szenarien äußerst vorteilhaft sein. Hier sind einige Beispiele:</p> <ul> <li> <p><strong>Vertriebsprozess</strong><br/> Im Vertriebsprozess müssen potenzielle Kunden vor einem Gespräch möglicherweise ein NDA unterzeichnen, um sensible Geschäftsinformationen zu schützen. Sie können ein Formular erstellen, das der Kunde mit den für das NDA benötigten Grundinformationen ausfüllt. Diese Formulareinreichung löst die Generierung des NDAs mit DocuGenerate aus, das dann über SignRequest zur E-Signatur gesendet wird. Detailliertere Anweisungen zur Erstellung eines solchen Formulars finden Sie in unserem Blogartikel über das <a href="https://www.docugenerate.com/de/blog/mit-tally-und-make-berichte-aus-formular-einsendungen-generieren/">Generieren von Berichten auf Basis von Formulareinreichungen</a> (obwohl dieses Tutorial Make statt Zapier verwendet, bleibt das Prinzip dasselbe).</p> </li> <li> <p><strong>Mitarbeiter-Onboarding</strong><br/> Beim Onboarding neuer Mitarbeiter verlangen Unternehmen oft die Unterzeichnung eines NDAs zum Schutz proprietärer Informationen. Die Automatisierung dieses Prozesses stellt sicher, dass jeder neue Mitarbeiter das NDA umgehend erhält und unterzeichnet. Neue Mitarbeiter können ihre Daten über ein Online-Formular eingeben, was die Generierung und den Versand des NDAs auslöst und so den HR-Workflow optimiert und die Compliance sicherstellt.</p> </li> <li> <p><strong>Partnerschaftsvereinbarungen</strong><br/> Beim Eingehen von Partnerschaften mit anderen Unternehmen oder Freiberuflern ist es entscheidend, ein NDA zum Schutz gemeinsamer Informationen zu haben. Die Automatisierung des NDA-Generierungs- und Signaturprozesses stellt sicher, dass diese Vereinbarungen effizient und sicher abgewickelt werden. Partner können das NDA einfach elektronisch unterzeichnen, was den Prozess beschleunigt und den Verwaltungsaufwand reduziert.</p> </li> <li> <p><strong>Beraterengagements</strong><br/> Unternehmen beauftragen häufig Berater für sensible Projekte. Ein NDA ist unerlässlich, um geistiges Eigentum und vertrauliche Daten zu schützen. Die Automatisierung des NDA-Prozesses ermöglicht es Unternehmen, NDAs schnell zu generieren und an Berater zu senden und so sicherzustellen, dass alle notwendigen rechtlichen Schutzmaßnahmen vor Beginn der Arbeit vorhanden sind.</p> </li> <li> <p><strong>Fusionen und Übernahmen</strong><br/> Bei Fusionen und Übernahmen sind NDAs entscheidend, um sensible Finanz- und Strategieinformationen während der Verhandlungen zu schützen. Die Automatisierung der Generierung und E-Signatur von NDAs stellt sicher, dass alle Beteiligten die notwendigen Vereinbarungen schnell unterzeichnen und darauf zugreifen können, was reibungslosere und schnellere Transaktionen ermöglicht.</p> </li> </ul> <h2 id="fazit">Fazit</h2> <p>Die Automatisierung von NDA-E-Signaturen mit DocuGenerate und SignRequest bietet erhebliche Vorteile, darunter Zeitersparnis, Fehlerreduzierung, verbesserte Effizienz, erhöhte Sicherheit und Umweltvorteile. Wenn Sie die in diesem Leitfaden beschriebenen Schritte befolgen, können Sie Ihren NDA-Workflow optimieren und sich auf strategischere Aufgaben konzentrieren, um die Gesamtproduktivität zu verbessern.</p> <p>Die Integration von DocuGenerate und SignRequest in Ihren Dokumentenmanagementprozess ist ein kluger Schritt für jedes Unternehmen, das seine Abläufe modernisieren und in der heutigen wettbewerbsintensiven Landschaft die Nase vorn behalten möchte. Beginnen Sie noch heute mit der Automatisierung Ihrer NDA-E-Signaturen und erleben Sie die transformative Wirkung dieser leistungsstarken Tools.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/012-nda-e-signature/Non Disclosure Agreement.docx">NDA-Vorlage</a> aus diesem Tutorial.</li> <li>Die <a href="https://zapier.com/apps/signrequest/integrations" target="_blank" rel="noopener">SignRequest App</a> auf Zapier.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="NDA"/> <category term="Zapier"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie E-Signaturen automatisieren und NDAs effizient in verschiedenen Geschäftsszenarien verwalten. Entdecken Sie die Vorteile der Integration von Dokumentengenerierung und elektronischer Signaturtechnologie zur Erhöhung der Sicherheit, Zeitersparnis und Produktivitätssteigerung.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/012-nda-e-signature/cover-image-v2.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/012-nda-e-signature/cover-image-v2.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Ein Skript mit SQL-Anweisungen aus Excel-Daten Generieren</title> <link href="https://www.docugenerate.com/de/blog/ein-skript-mit-sql-anweisungen-aus-excel-daten-generieren/" rel="alternate" type="text/html" title="Ein Skript mit SQL-Anweisungen aus Excel-Daten Generieren"/> <published>2024-07-05T00:00:00+00:00</published> <updated>2024-07-05T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/ein-skript-mit-sql-anweisungen-aus-excel-daten-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/ein-skript-mit-sql-anweisungen-aus-excel-daten-generieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>Das Generieren von SQL-Skripten erfordert oft entweder fundierte Programmierkenntnisse oder sorgfältige manuelle Dateneingabe. Mit den richtigen Tools kann dieser Prozess jedoch vereinfacht und für jeden zugänglich gemacht werden. DocuGenerate bietet eine leistungsstarke Lösung, die die Erstellung von SQL-Skripten aus Excel- oder CSV-Dateien automatisiert und manuelle Codierung überflüssig macht.</p> <p>Dieser Artikel führt Sie durch den Prozess der Erstellung eines parametrisierten SQL-Skripts, der Vorbereitung Ihrer Datenquelle und der Verwendung von DocuGenerate zur Automatisierung der Skriptgenerierung. Wir werden auch praktische Anwendungsfälle erkunden, um die Vielseitigkeit und Effizienz dieses Ansatzes zu demonstrieren.</p> <h2 id="zusammenfassung">Was Sie Lernen Werden</h2> <ol> <li><a href="#sql-skript">Erstellen eines parametrisierten SQL-Skripts</a><br/> Erfahren Sie, wie Sie ein SQL-Skript mit Platzhaltern anstelle von hartcodierten Werten schreiben.</li> <li><a href="#datenquelle">Vorbereiten Ihrer Datenquelle</a><br/> Verstehen Sie, wie Sie Ihre Daten in einer Excel- oder CSV-Datei strukturieren.</li> <li><a href="#docugenerate-automatisierung">Verwendung von DocuGenerate für die Automatisierung</a><br/> Sehen Sie, wie DocuGenerate den Prozess automatisieren kann, um ihn für nicht-technische Benutzer zugänglich zu machen.</li> <li><a href="#anwendungsfaelle">Praktische Anwendungsfälle</a><br/> Entdecken Sie, wie diese Technik in verschiedenen Szenarien eingesetzt werden kann, von der Datenmigration bis zur Berichtsgenerierung.</li> </ol> <h2 id="sql-skript">Erstellen eines Parametrisierten SQL-Skripts</h2> <p>Bevor wir uns mit der Erstellung parametrisierter SQL-Skripte befassen, lassen Sie uns zunächst verstehen, was sie sind und wie sie verwendet werden.</p> <p><strong>SQL (Structured Query Language)</strong> ist eine standardisierte Sprache für die Verwaltung relationaler Datenbanken. SQL-Befehle ermöglichen das Abfragen, Aktualisieren, Einfügen und Löschen von Datenbankdatensätzen. SQL ist unverzichtbar für die Interaktion mit der Datenbank, um Daten effizient abzurufen und zu verwalten.</p> <p>Ein <strong>SQL-Skript</strong> ist eine Datei mit einer Folge von SQL-Befehlen. Diese Skripte werden verwendet, um mehrere SQL-Befehle in einem Batch auszuführen, was die Automatisierung von Datenbankoperationen ermöglicht. SQL-Skripte können für verschiedene Aufgaben eingesetzt werden, darunter Datenmanipulation, Erstellung von Datenbankschemata und Datenmigration.</p> <p>Das Erstellen eines SQL-Skripts beinhaltet oft das Schreiben repetitiver Anweisungen mit unterschiedlichen Werten. Um dies zu veranschaulichen, betrachten Sie folgendes nicht-parametrisiertes SQL-Skript zum Einfügen von Daten in eine <code class="language-plaintext highlighter-rouge">customer</code>-Tabelle:</p> <div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">customer</span> <span class="p">(</span><span class="n">customer_id</span><span class="p">,</span> <span class="n">first_name</span><span class="p">,</span> <span class="n">last_name</span><span class="p">,</span> <span class="n">email</span><span class="p">,</span> <span class="n">phone_number</span><span class="p">,</span> <span class="n">created_at</span><span class="p">)</span>
<span class="k">VALUES</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">'John'</span><span class="p">,</span> <span class="s1">'Doe'</span><span class="p">,</span> <span class="s1">'john.doe@example.com'</span><span class="p">,</span> <span class="s1">'123-456-7890'</span><span class="p">,</span> <span class="s1">'2024-01-01 10:00:00'</span><span class="p">);</span>

<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">customer</span> <span class="p">(</span><span class="n">customer_id</span><span class="p">,</span> <span class="n">first_name</span><span class="p">,</span> <span class="n">last_name</span><span class="p">,</span> <span class="n">email</span><span class="p">,</span> <span class="n">phone_number</span><span class="p">,</span> <span class="n">created_at</span><span class="p">)</span>
<span class="k">VALUES</span> <span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s1">'Jane'</span><span class="p">,</span> <span class="s1">'Smith'</span><span class="p">,</span> <span class="s1">'jane.smith@example.com'</span><span class="p">,</span> <span class="s1">'098-765-4321'</span><span class="p">,</span> <span class="s1">'2024-01-02 11:00:00'</span><span class="p">);</span>

<span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">customer</span> <span class="p">(</span><span class="n">customer_id</span><span class="p">,</span> <span class="n">first_name</span><span class="p">,</span> <span class="n">last_name</span><span class="p">,</span> <span class="n">email</span><span class="p">,</span> <span class="n">phone_number</span><span class="p">,</span> <span class="n">created_at</span><span class="p">)</span>
<span class="k">VALUES</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s1">'Michael'</span><span class="p">,</span> <span class="s1">'Brown'</span><span class="p">,</span> <span class="s1">'michael.brown@example.com'</span><span class="p">,</span> <span class="s1">'234-567-8901'</span><span class="p">,</span> <span class="s1">'2024-01-03 12:00:00'</span><span class="p">);</span>
</code></pre></div></div> <p>Dieses Skript fügt einen neuen Datensatz in die Kundentabelle mit spezifischen Werten für jede Spalte ein. Bei mehreren Datensätzen kann ein SQL-Skript mehrere <code class="language-plaintext highlighter-rouge">INSERT</code>-Anweisungen enthalten, um mehrere Datensätze in die Datenbank einzufügen.</p> <p>Wie Sie sehen können, ist jede Zeile ähnlich, aber mit unterschiedlichen Werten. Dieser Prozess kann bei großen Datensätzen mühsam und fehleranfällig werden. Zur Abhilfe verwenden wir <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Platzhalter</a> für die Werte und machen das Skript parametrisiert:</p> <div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">INSERT</span> <span class="k">INTO</span> <span class="n">customer</span> <span class="p">(</span><span class="n">customer_id</span><span class="p">,</span> <span class="n">first_name</span><span class="p">,</span> <span class="n">last_name</span><span class="p">,</span> <span class="n">email</span><span class="p">,</span> <span class="n">phone_number</span><span class="p">,</span> <span class="n">created_at</span><span class="p">)</span>
<span class="k">VALUES</span> <span class="p">({</span><span class="n">customer_id</span><span class="p">},</span> <span class="s1">'{first_name}'</span><span class="p">,</span> <span class="s1">'{last_name}'</span><span class="p">,</span> <span class="s1">'{email}'</span><span class="p">,</span> <span class="s1">'{phone_number}'</span><span class="p">,</span> <span class="s1">'{created_at}'</span><span class="p">);</span>
</code></pre></div></div> <p>In diesem Skript werden die Platzhalter <code class="language-plaintext highlighter-rouge">{customer_id}</code>, <code class="language-plaintext highlighter-rouge">{first_name}</code>, <code class="language-plaintext highlighter-rouge">{last_name}</code>, <code class="language-plaintext highlighter-rouge">{email}</code>, <code class="language-plaintext highlighter-rouge">{phone_number}</code> und <code class="language-plaintext highlighter-rouge">{created_at}</code> durch tatsächliche Werte aus unserer Datenquelle ersetzt.</p> <h2 id="datenquelle">Vorbereiten Ihrer Datenquelle</h2> <p>Als nächstes bereiten wir eine Excel- oder CSV-Datei mit den Daten vor, die unser SQL-Skript befüllen sollen. Unten sehen Sie ein Beispiel einer <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.csv">CSV-Datei</a>-Struktur, die zu unseren Platzhaltern passt:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>customer_id,first_name,last_name,email,phone_number,created_at
1,John,Doe,john.doe@example.com,123-456-7890,2024-01-01 10:00:00
2,Jane,Smith,jane.smith@example.com,098-765-4321,2024-01-02 11:00:00
3,Michael,Brown,michael.brown@example.com,234-567-8901,2024-01-03 12:00:00
4,Emily,Davis,emily.davis@example.com,345-678-9012,2024-01-04 13:00:00
5,Daniel,Wilson,daniel.wilson@example.com,456-789-0123,2024-01-05 14:00:00
6,Amy,Johnson,amy.johnson@example.com,567-890-1234,2024-01-06 15:00:00
7,David,Martinez,david.martinez@example.com,678-901-2345,2024-01-07 16:00:00
8,Susan,Lee,susan.lee@example.com,789-012-3456,2024-01-08 17:00:00
9,James,Clark,james.clark@example.com,890-123-4567,2024-01-09 18:00:00
10,Mary,Lopez,mary.lopez@example.com,901-234-5678,2024-01-10 19:00:00
11,Robert,Garcia,robert.garcia@example.com,012-345-6789,2024-01-11 20:00:00
12,Linda,Hernandez,linda.hernandez@example.com,123-456-7890,2024-01-12 21:00:00
13,William,Martinez,william.martinez@example.com,234-567-8901,2024-01-13 22:00:00
14,Patricia,Robinson,patricia.robinson@example.com,345-678-9012,2024-01-14 23:00:00
15,Charles,Hall,charles.hall@example.com,456-789-0123,2024-01-15 08:00:00
16,Barbara,Allen,barbara.allen@example.com,567-890-1234,2024-01-16 09:00:00
17,Thomas,Young,thomas.young@example.com,678-901-2345,2024-01-17 10:00:00
18,Jennifer,Hernandez,jennifer.hernandez@example.com,789-012-3456,2024-01-18 11:00:00
19,Christopher,King,christopher.king@example.com,890-123-4567,2024-01-19 12:00:00
20,Karen,Wright,karen.wright@example.com,901-234-5678,2024-01-20 13:00:00
</code></pre></div></div> <p>Alternativ können Sie Ihre Daten in einer <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.xlsx">Excel-Datei</a> mit der gleichen Struktur vorbereiten:</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/excel-data.png" alt="Beispiel Excel-Daten"/></p> <p>Jede Zeile in der CSV- oder Excel-Datei entspricht einem neuen Datensatz, der in die Kundentabelle eingefügt werden soll. Diese Struktur stellt sicher, dass unsere Daten organisiert und bereit für die Zusammenführung mit der SQL-Skript-Vorlage sind.</p> <h2 id="docugenerate-automatisierung">Verwendung von DocuGenerate für die Automatisierung</h2> <p>DocuGenerate ermöglicht es Ihnen, den Prozess der Generierung von SQL-Skripten durch die Verwendung einer Vorlage und einer Datenquelle zu automatisieren. Hier ist eine Schritt-für-Schritt-Anleitung zur Umsetzung:</p> <h3 id="1-eine-vorlage-erstellen">1. Eine Vorlage Erstellen</h3> <p>Speichern Sie zunächst Ihr parametrisiertes SQL-Skript als Vorlagendatei. Die <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Template.sql">SQL Template.sql</a>-Datei enthält zum Beispiel das in diesem Artikel verwendete Skript.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/sql-template-v3.png" alt="SQL-Vorlage"/></p> <h3 id="2-die-vorlage-hochladen">2. Die Vorlage Hochladen</h3> <p>Melden Sie sich dann bei Ihrem DocuGenerate-Konto an und laden Sie Ihre SQL-Datei hoch, um <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">eine neue Vorlage zu erstellen</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/docugenerate-template.png" alt="SQL-Vorlage in DocuGenerate"/></p> <h3 id="3-die-datenquelle-hochladen">3. Die Datenquelle Hochladen</h3> <p>Als nächstes <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-einer-excel-oder-csv-datei-generieren/">laden Sie Ihre CSV- oder Excel-Datei hoch</a>, die die Kundendaten enthält. Verwenden Sie die intuitive Benutzeroberfläche von DocuGenerate, um das SQL-Skript zu generieren.</p> <p>Wählen Sie die Option zum <a href="https://www.docugenerate.com/de/hilfe/articles/generierte-dokumente-in-einer-einzelnen-datei-zusammenfuehren/">Zusammenführen der generierten Dokumente</a> in eine einzelne Datei ohne Seitenumbrüche. So werden die generierten Dokumente, in diesem Fall die SQL-Anweisungen, aufeinanderfolgend kombiniert, ohne Seitenumbrüche dazwischen.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/generate-script.gif" alt="SQL-Skript generieren"/></p> <h3 id="4-das-sql-skript-generieren">4. Das SQL-Skript Generieren</h3> <p>Beim Generieren des Dokuments werden die Platzhalter in der Vorlage durch tatsächliche Werte aus der CSV- oder Excel-Datei ersetzt.</p> <p>Exportieren Sie das generierte Dokument als <strong>Nur Text (.txt)</strong>-Datei und benennen Sie die exportierte Datei anschließend so um, dass sie die Erweiterung <code class="language-plaintext highlighter-rouge">.sql</code> anstelle von <code class="language-plaintext highlighter-rouge">.txt</code> erhält. So wird das SQL-Skript von Datenbankverwaltungssystemen erkannt, die die SQL-Anweisungen im Batch ausführen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/sql-script-v3.png" alt="SQL-Skript"/></p> <p>Wenn Sie diese Schritte befolgen, können Sie schnell mehrere SQL-Anweisungen ohne manuellen Eingriff generieren. Die resultierende Datei können Sie <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Script.sql">hier herunterladen</a>. Dies spart nicht nur Zeit, sondern reduziert auch Fehler bei der manuellen Dateneingabe.</p> <h2 id="anwendungsfaelle">Praktische Anwendungsfälle</h2> <p>Diese Technik kann in verschiedenen Szenarien äußerst nützlich sein:</p> <ul> <li> <p><strong>Datenmigration</strong>: Wenn Sie Daten von einem System auf ein anderes migrieren, können Sie SQL-Skripte generieren, um große Datenmengen präzise und effizient einzufügen. Wenn Sie beispielsweise Kundendaten aus einem alten CRM-System in ein neues CRM mit E-Mail-Marketing-Software verschieben, kann die Generierung der notwendigen SQL-Skripte sicherstellen, dass die Datenübertragung nahtlos und präzise erfolgt.</p> </li> <li> <p><strong>Berichtsgenerierung</strong>: Automatisieren Sie die Erstellung von SQL-Abfragen für die Berichtsgenerierung auf Basis dynamischer Dateneingaben. Dies kann besonders nützlich sein, um monatliche oder vierteljährliche Berichte zu generieren, bei denen sich die Daten regelmäßig ändern. Durch die Aktualisierung der Datenquelldatei können Sie aktuelle SQL-Skripte generieren, ohne die Abfragen manuell neu schreiben zu müssen.</p> </li> <li> <p><strong>Datenbank-Seeding</strong>: Generieren Sie SQL-Skripte zum Befüllen von Entwicklungs- und Testdatenbanken mit Beispieldaten. So können Entwickler ihre Anwendungen mit realistischen Datensätzen testen und sicherstellen, dass die Anwendung in einer Produktionsumgebung wie erwartet funktioniert.</p> </li> <li> <p><strong>Massenaktualisierungen</strong>: Führen Sie Massenaktualisierungen an Datenbankdatensätzen durch, indem Sie SQL-Update-Skripte aus einer CSV- oder Excel-Datei generieren. Dies kann besonders nützlich sein, um Massenänderungen anzuwenden, z. B. Preisinformationen für ein großes Produktinventar zu aktualisieren.</p> </li> <li> <p><strong>Personalisierte SQL-Skripte</strong>: Erstellen Sie maßgeschneiderte SQL-Skripte für verschiedene Kunden oder Anwendungsfälle, indem Sie einfach die Datenquelldatei ändern. Diese Flexibilität ermöglicht es Unternehmen, ihre Datenbankoperationen an spezifische Kundenanforderungen anzupassen, ohne umfangreiche manuelle Codierung.</p> </li> </ul> <h2 id="fazit">Fazit</h2> <p>Mit DocuGenerate wird die Generierung von SQL-Skripten aus einer Excel- oder CSV-Datei zu einem einfachen und zugänglichen Prozess. Dieses leistungsstarke Tool geht über traditionelle Dokumentengenerierungsaufgaben hinaus und bietet vielseitige Lösungen für Datenverwaltung und Automatisierung.</p> <p>Ob Sie ein Entwickler sind, der seinen Workflow optimieren möchte, oder ein nicht-technischer Benutzer, der repetitive Aufgaben automatisieren möchte – DocuGenerate bietet eine benutzerfreundliche Plattform, die Ihre Anforderungen erfüllt. Beginnen Sie noch heute damit, die Leistung von DocuGenerate zu nutzen, und verändern Sie, wie Sie mit der SQL-Skriptgenerierung und anderen Dokumentautomatisierungsaufgaben umgehen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Template.sql">SQL-Vorlage</a> aus diesem Tutorial.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.xlsx">Excel</a>- und <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.csv">CSV</a>-Beispieldateien.</li> <li>Das <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Script.sql">SQL-Skript</a> mit den generierten SQL-Anweisungen.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Script"/> <category term="SQL"/> <category term="Excel"/> <summary type="html"><![CDATA[Entdecken Sie eine Schritt-für-Schritt-Anleitung zur Erstellung parametrisierter SQL-Skripte, zur Vorbereitung von Datenquellen und zur Nutzung der leistungsstarken Automatisierungsfähigkeiten von DocuGenerate. Ideal für Entwickler und Nicht-techniker zur einfachen Datenverwaltung.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/cover-image-v3.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/cover-image-v3.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Veranstaltungstickets mit Barcodes mit Make Erstellen</title> <link href="https://www.docugenerate.com/de/blog/veranstaltungstickets-mit-barcodes-mit-make-erstellen/" rel="alternate" type="text/html" title="Veranstaltungstickets mit Barcodes mit Make Erstellen"/> <published>2024-06-14T00:00:00+00:00</published> <updated>2024-06-14T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/veranstaltungstickets-mit-barcodes-mit-make-erstellen</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/veranstaltungstickets-mit-barcodes-mit-make-erstellen/"><![CDATA[<h2 id="szenario-uebersicht">Szenario-Übersicht</h2> <p>Die Erstellung von Veranstaltungstickets mit Barcodes kann die Einlasskontrolle und das Kundenerlebnis erheblich verbessern. Automatisierung spart nicht nur Zeit, sondern reduziert auch Fehler und sorgt für eine professionelle Note. In dieser Anleitung verwenden wir <a href="https://www.make.com/en?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Make</a> (früher bekannt als Integromat), um den gesamten Prozess zu automatisieren. Wir integrieren <a href="https://stripe.com/en-fr" target="_blank" rel="nofollow noopener">Stripe</a> für die Zahlungsabwicklung, generieren Tickets mit <a href="https://www.docugenerate.com/">DocuGenerate</a> und versenden diese per E-Mail an Ihre Kunden. Folgendes werden Sie lernen:</p> <ul> <li><a href="#stripe-einrichten">Stripe Einrichten</a>: Konfiguration von Stripe für die Zahlungsabwicklung.</li> <li><a href="#docugenerate-einrichten">DocuGenerate Einrichten</a>: Entwerfen und Hochladen einer Ticket-Vorlage.</li> <li><a href="#make-szenario">Das Make-Szenario Erstellen</a>: Automatisierung der Ticketgenerierung und des E-Mail-Versands.</li> </ul> <p>Tauchen wir in den Schritt-für-Schritt-Prozess ein.</p> <h2 id="stripe-einrichten">Stripe Einrichten</h2> <p>Stripe ist eine leistungsstarke Zahlungsplattform, die es Ihnen ermöglicht, Zahlungen einfach online entgegenzunehmen. Für unser Veranstaltungsticket-System übernimmt Stripe die Zahlungen für das weiter unten erstellte Produkt <a href="#stripe-produkt">Event Admission</a>. So richten Sie es ein:</p> <h3 id="stripe-verbindung">1. Eine Stripe-Verbindung in Make Erstellen</h3> <p>Fügen Sie zunächst die <a href="https://www.make.com/en/integrations/stripe?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Stripe App</a> zu Ihrem Szenario hinzu und verwenden Sie den Trigger <strong>Watch Events</strong>, der aktiviert wird, wenn ein bestimmtes Ereignis eintritt. Für eine Stripe-Verbindung in Make benötigen Sie außerdem einen eingeschränkten API-Schlüssel. Gehen Sie auf die Seite <a href="https://dashboard.stripe.com/apikeys" target="_blank" rel="nofollow noopener">Developers</a> in Stripe, klicken Sie auf <strong>Create restricted key</strong> und konfigurieren Sie folgende Berechtigungen:</p> <ul> <li><strong>Balance</strong>: <code class="language-plaintext highlighter-rouge">Read</code></li> <li><strong>Checkout Sessions</strong>: <code class="language-plaintext highlighter-rouge">Read</code></li> <li><strong>Webhook Endpoints</strong>: <code class="language-plaintext highlighter-rouge">Write</code></li> </ul> <p>Dieser API-Schlüssel ermöglicht Make die sichere Interaktion mit Ihrem Stripe-Konto, das Abrufen notwendiger Informationen über Transaktionen und die Sicherstellung, dass die korrekten Daten für die Ticketgenerierung verwendet werden.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-restricted-api-key.png" alt="Stripe-Verbindung in Make erstellen"/></p> <p>Ausführliche Anweisungen zur Einrichtung der Stripe-Verbindung finden Sie in der <a href="https://www.make.com/en/help/app/stripe" target="_blank" rel="nofollow noopener">Dokumentation</a> zur Stripe-Integration. Diese Anleitung bietet eine Schritt-für-Schritt-Erklärung zur Verbindung von Stripe mit Make.</p> <h3 id="stripe-webhook">2. Einen Webhook für „Checkout Session Completed” Erstellen</h3> <p>Erstellen Sie als nächstes einen Webhook in Stripe. Webhooks sind entscheidend, da sie Ihr System benachrichtigen, wenn bestimmte Ereignisse in Ihrem Stripe-Konto auftreten. Für diese Einrichtung ist das Ereignis <strong>Checkout Session completed</strong> relevant, das ausgelöst wird, wenn ein Kunde einen Kauf erfolgreich abschließt.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-create-webhook.png" alt="Stripe-Webhook für abgeschlossene Checkout-Session erstellen"/></p> <p>Nach der Einrichtung ist dieser Webhook auf der Seite <a href="https://dashboard.stripe.com/webhooks" target="_blank" rel="nofollow noopener">Developers</a> von Stripe sichtbar. Diese Sichtbarkeit stellt sicher, dass Sie Ihre Webhooks effektiv überwachen und verwalten können, was Ihnen bei der Behebung etwaiger Probleme hilft.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-make-webhook.png" alt="Make-Webhook auf der Stripe Developers-Seite sichtbar"/></p> <h3 id="stripe-produkt">3. Das Produkt „Event Admission” Erstellen</h3> <p>Erstellen Sie nun ein Produkt in Stripe namens <strong>Event Admission</strong>. Dieses Produkt repräsentiert das Ticket für Ihre Veranstaltung. Wenn Kunden dieses Produkt kaufen, wird der gesamte Ticketing-Prozess ausgelöst.</p> <p>Die Erstellung eines Produkts in Stripe ist unkompliziert. Stellen Sie sicher, dass alle relevanten Details wie Preis und Beschreibung korrekt ausgefüllt sind, um Ihren Kunden klare Informationen zu bieten.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-event-product.png" alt="Das Produkt „Event Admission&quot; auf Stripe"/></p> <h3 id="stripe-zahlungslink">4. Einen Zahlungslink für Ihr Produkt Erstellen</h3> <p>Nach der Produkteinrichtung <a href="https://docs.stripe.com/payment-links/create" target="_blank" rel="nofollow noopener">erstellen Sie einen Zahlungslink</a>. Diesen Link verwenden Ihre Kunden zum Kauf von Veranstaltungstickets. Stripe macht es einfach, diese Links zu generieren, die Sie dann per E-Mail, in sozialen Medien oder auf Ihrer Website teilen können. Der Zahlungslink leitet Kunden zu einer sicheren Checkout-Seite weiter, auf der sie ihren Kauf abschließen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-create-payment-link.png" alt="Zahlungslink für das Produkt „Event Admission&quot; erstellen"/></p> <p>Sie können den Zahlungsprozess mit dem <a href="https://buy.stripe.com/test_8wM3eEcTF0Jxb2oeUV" target="_blank" rel="nofollow noopener">Zahlungslink</a> für das Produkt <strong>Event Admission</strong> testen. Geben Sie Ihre E-Mail-Adresse ein und für die Karteninformationen verwenden Sie <code class="language-plaintext highlighter-rouge">4242 4242 4242 4242</code> (Stripe-Testkartennummer). Für die Ablaufdaten und CVC-Werte können Sie beliebige Werte verwenden, solange das Ablaufdatum in der Zukunft liegt. Wenn Sie dann auf <strong>Pay</strong> klicken, erhalten Sie eine E-Mail mit Ihrem Test-PDF-Ticket, wie <a href="#vollstaendiges-make-szenario">weiter unten beschrieben</a>.</p> <h2 id="docugenerate-einrichten">DocuGenerate Einrichten</h2> <p>DocuGenerate ist ein leistungsstarkes Tool für die <a href="/de/produkt/">Automatisierung der Dokumentenerstellung</a>. In diesem Schritt richten wir DocuGenerate ein, um eine Ticket-Vorlage zu erstellen. Diese Vorlage wird verwendet, um für jeden Kunden personalisierte Tickets zu generieren.</p> <h3 id="ticket-design">1. Ihre Ticket-Vorlage Entwerfen</h3> <p>Entwerfen Sie zunächst eine Ticket-Vorlage in Microsoft Word. Die Vorlage sollte Platzhalter (auch <a href="/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> genannt) für folgende Felder enthalten: <code class="language-plaintext highlighter-rouge">ticket_number</code>, <code class="language-plaintext highlighter-rouge">full_name</code>, <code class="language-plaintext highlighter-rouge">event_date</code>, <code class="language-plaintext highlighter-rouge">event_time</code> und <code class="language-plaintext highlighter-rouge">event_address</code>. Diese Platzhalter werden beim Generieren der Tickets durch tatsächliche Daten ersetzt.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/ticket-word-template.png" alt="Die „Event Ticket Template&quot; in Word"/></p> <h3 id="vorlage-hochladen">2. Die Vorlage in DocuGenerate Hochladen</h3> <p>Sobald Ihre Vorlage fertig ist, <a href="/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">laden Sie sie in DocuGenerate hoch</a>. Dieser Schritt ist entscheidend, da er die Vorlage für die automatisierte Dokumentengenerierung vorbereitet. DocuGenerate verwendet diese Vorlage, um für jeden Kunden auf Basis der von Stripe erhaltenen Daten eindeutige Tickets zu erstellen.</p> <p>Aktivieren Sie die <a href="/de/hilfe/articles/wie-aktiviere-ich-die-erweiterte-syntax/">erweiterte Syntax</a>, die für den <code class="language-plaintext highlighter-rouge">barcode</code>-Filter zum <a href="/de/hilfe/articles/wie-fuege-ich-qr-codes-und-barcodes-hinzu/#barcodes-hinzufuegen">Hinzufügen eines Barcodes</a> zum Ticket erforderlich ist. Bitte beachten Sie, dass Zusammenführungs-Tags keine Leerzeichen enthalten dürfen, da diese mit der erweiterten Syntax nicht kompatibel sind. Stattdessen verwenden wir den Unterstrich (<code class="language-plaintext highlighter-rouge">_</code>), um Wörter innerhalb der Zusammenführungs-Tags zu trennen.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/docugenerate-ticket-template.png" alt="Die „Event Ticket Template&quot; in DocuGenerate"/></p> <p><a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Event Ticket Template.docx">Laden Sie die Vorlage herunter</a> und passen Sie sie an die Markenidentität und Details Ihrer Veranstaltung an.</p> <h2 id="make-szenario">Das Make-Szenario Erstellen</h2> <p>Mit eingerichtetem Stripe und DocuGenerate erstellen wir nun ein Szenario in Make, um die Ticketgenerierung und den E-Mail-Prozess zu automatisieren. Dieses Szenario verbindet alle Komponenten miteinander und gewährleistet einen nahtlosen Workflow von der Zahlung bis zur Ticketlieferung.</p> <h3 id="dokument-generieren">1. Die Aktion „Generate a Document” Einrichten</h3> <p>Richten Sie in Make die Aktion <a href="/de/hilfe/articles/dokumentenerstellung-mit-make-automatisieren/#generate-document-action">Generate a Document</a> durch Verbindung mit der <a href="https://www.make.com/en/integrations/docugenerate?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="noopener">DocuGenerate App</a> ein. Diese Aktion nimmt die Daten aus der Stripe-Checkout-Session und verwendet sie zur Generierung eines Tickets. Stellen Sie sicher, dass alle Platzhalter in Ihrer Ticket-Vorlage korrekt den Datenfeldern von Stripe zugeordnet sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/docugenerate-new-document.png" alt="Aktion „Generate a Document&quot; in Make einrichten"/></p> <p>Für dieses Tutorial haben wir die Ereignis-ID als Ticketnummer verwendet, aber Sie können jeden Wert verwenden, der Ihren Bedürfnissen entspricht. Wir haben auch die Eigenschaft <code class="language-plaintext highlighter-rouge">customer_details: name</code> aus dem Stripe-Ereignis-Payload verwendet, um den Dokumentnamen und das <code class="language-plaintext highlighter-rouge">full_name</code>-Tag im Dokument zu befüllen.</p> <h3 id="dateiinhalt-abrufen">2. Das HTTP-Modul zum Abrufen des Dateiinhalts Verwenden</h3> <p>Verwenden Sie nach der Dokumentengenerierung das <a href="https://www.make.com/en/help/tools/http" target="_blank" rel="noopener">HTTP-Modul</a> in Make, um den Inhalt der generierten PDF-Datei abzurufen. Dieses Modul holt das Ticket von DocuGenerate, bereit zum Versand per E-Mail.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/http-get-document.png" alt="HTTP-Modul zum Abrufen des generierten Dateiinhalts verwenden"/></p> <h3 id="e-mail-senden">3. Die Aktion „Send an Email” Einrichten</h3> <p>Konfigurieren Sie als nächstes die Aktion „Send an Email” aus der offiziellen <a href="https://www.make.com/en/integrations/email?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="noopener">Email App</a>. Diese Aktion sendet das generierte Ticket-PDF an die E-Mail-Adresse des Kunden. Stellen Sie sicher, dass Sie den E-Mail-Inhalt anpassen, um Veranstaltungsdetails und alle anderen relevanten Informationen einzuschließen.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/send-email.png" alt="Aktion „Send an Email&quot; in Make einrichten"/></p> <p>Der Wert <strong>To Email Address</strong> wird mit der Eigenschaft <code class="language-plaintext highlighter-rouge">customer_details: email</code> aus dem Stripe-Ereignis-Payload befüllt, der nach einer erfolgreichen Zahlung vom <a href="#stripe-webhook">Webhook</a> empfangen wurde.</p> <p>Der Wert für den <strong>Attachment</strong> wird von der zuvor konfigurierten Aktion <strong>HTTP - Get a file</strong> <a href="#dateiinhalt-abrufen">bereitgestellt</a>.</p> <p>Für eine fortgeschrittenere E-Mail-Marketing-Lösung ziehen Sie Mailmodo als Alternative zur generischen Email-App in Make in Betracht. Mit Mailmodos <a href="https://www.make.com/en/integrations/mailmodo?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Make App</a> können Sie interaktive, dynamische E-Mails direkt aus Ihrem Workflow erstellen und versenden. Diese Option ist besonders nützlich, wenn Sie Funktionen wie AMP-E-Mails, Tracking oder Analysen integrieren möchten.</p> <h3 id="vollstaendiges-make-szenario">4. Das Vollständige Make-Szenario</h3> <p>Die visuelle Darstellung des vollständigen Szenarios zeigt, wie jeder Schritt miteinander verbunden ist und einen reibungslosen Daten- und Aktionsfluss gewährleistet. Jedes Modul im Szenario spielt eine entscheidende Rolle:</p> <ul> <li>Der Trigger <strong>Watch Events</strong> überwacht Stripe auf abgeschlossene Checkouts.</li> <li>Die Aktion <strong>Generate a Document</strong> erstellt das Ticket mithilfe der DocuGenerate-Vorlage.</li> <li>Die Aktion <strong>Get a File</strong> ruft das generierte PDF-Ticket ab.</li> <li>Die Aktion <strong>Send an Email</strong> liefert das Ticket an den Kunden.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/make-scenario.gif" alt="Das vollständige Make-Szenario"/></p> <p>Sobald das Szenario ausgelöst und das Ticket generiert wurde, erhält der Kunde eine E-Mail mit dem Ticket als Anhang. Dieser automatisierte Prozess stellt sicher, dass Kunden ihre Tickets sofort und ohne manuellen Eingriff erhalten.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/email-ticket.png" alt="E-Mail mit dem generierten PDF-Ticket als Anhang"/></p> <p>Hier ein Beispiel für ein generiertes Ticket, das Sie <a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Ticket for Charlie Bucket.pdf">hier herunterladen können</a>, falls Sie interessiert sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Ticket for Charlie Bucket.png" alt="Beispiel eines generierten PDF-Tickets"/></p> <h2 id="fazit">Fazit</h2> <p>Mit dieser Anleitung können Sie den gesamten Prozess der Erstellung und des Versands von Veranstaltungstickets mit Barcodes über Make automatisieren. Das spart nicht nur Zeit, sondern gewährleistet auch ein reibungsloses und professionelles Erlebnis für Ihre Veranstaltungsteilnehmer. Die Integration von Stripe, DocuGenerate und Make bietet eine leistungsstarke Lösung zur Optimierung des Ticket-Managements für jede Veranstaltung.</p> <p>Die Automatisierung der Ticketgenerierung und -lieferung verbessert die Effizienz und reduziert Fehler, was das Veranstaltungsmanagement erheblich erleichtert. Darüber hinaus verbessert sie das Kundenerlebnis, indem sie sofortigen Zugang zu Tickets ermöglicht und sicherstellt, dass alle notwendigen Informationen direkt zur Hand sind.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Der <a href="https://buy.stripe.com/test_8wM3eEcTF0Jxb2oeUV" target="_blank" rel="nofollow noopener">Zahlungslink</a> zum Testen des Produktkaufs.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Event Ticket Template.docx">Event Ticket Template</a> aus diesem Tutorial.</li> <li>Ein Muster-<a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Ticket for Charlie Bucket.pdf" target="_blank">PDF-Ticket</a> mit diesem Szenario generiert.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Tickets"/> <category term="Make"/> <category term="No-Code"/> <summary type="html"><![CDATA[Automatisieren Sie die Erstellung von Veranstaltungstickets mit Barcodes mithilfe von Make. Durch die Integration von Stripe für die Zahlungsabwicklung und DocuGenerate für die PDF-Generierung können Sie ein Szenario entwerfen, das benutzerdefinierte Tickets erstellt und per E-Mail versendet.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Verträge mit Zapier und Google Sheets Automatisieren</title> <link href="https://www.docugenerate.com/de/blog/vertraege-mit-zapier-und-google-sheets-automatisieren/" rel="alternate" type="text/html" title="Verträge mit Zapier und Google Sheets Automatisieren"/> <published>2024-05-24T00:00:00+00:00</published> <updated>2024-05-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/vertraege-mit-zapier-und-google-sheets-automatisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/vertraege-mit-zapier-und-google-sheets-automatisieren/"><![CDATA[<h2 id="einfuehrung">Einführung</h2> <p>In der heutigen schnelllebigen digitalen Welt spart die Automatisierung repetitiver Aufgaben Zeit und minimiert Fehlerrisiken. Dies gilt insbesondere für die Dokumentengenerierung. Stellen Sie sich vor, Sie haben eine Tabelle voller Daten und können automatisch professionelle Dokumente mit minimalem Aufwand erstellen. In diesem Tutorial zeigen wir, wie das mit drei leistungsstarken Tools geht: Google Sheets, Zapier und DocuGenerate.</p> <p><a href="https://www.google.com/sheets/about/" target="_blank" rel="nofollow noopener">Google Sheets</a> ist ein vielseitiges Tool zur Verwaltung und Organisation von Daten. <a href="https://zapier.com/" target="_blank" rel="nofollow noopener">Zapier</a> ist eine Automatisierungsplattform, die Ihre Lieblingsapps miteinander verbindet und eine nahtlose Zusammenarbeit ermöglicht. <a href="https://www.docugenerate.com/">DocuGenerate</a> ist auf automatisierte Dokumentengenerierung spezialisiert und ermöglicht die Erstellung von Dokumenten wie Rechnungen, Verträgen und mehr.</p> <p>Diese Automatisierung ist besonders nützlich in verschiedenen Szenarien:</p> <ul> <li><strong>Vertrieb und Rechnungsstellung</strong>: Rechnungen automatisch aus in Google Sheets gespeicherten Verkaufsdaten generieren.</li> <li><strong>HR und Recruiting</strong>: Arbeitsverträge oder Angebotsschreiben aus Kandidatendaten erstellen.</li> <li><strong>Rechtliche Dokumentation</strong>: Rechtsvereinbarungen oder Verträge aus strukturierten Daten erstellen.</li> </ul> <p>Los geht’s!</p> <h2 id="google-sheets-daten">Daten in Google Sheets Importieren</h2> <p>Wir erstellen ein Szenario, bei dem wir Verträge aus in Google Sheets gespeicherten Daten generieren. Wir verwenden das Asset <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.zip">Accounting Contract</a> aus der DocuGenerate-Vorlagenbibliothek, das eine Word-Vorlage für den Vertrag und einen Beispieldatensatz im Excel-Format enthält.</p> <p>Zunächst importieren wir unsere Excel-Datei mit den Beispieldaten in Google Sheets. Öffnen Sie Google Sheets, erstellen Sie eine neue Tabelle und klicken Sie auf <strong>File -&gt; Import</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/new-sheet-import.png" alt="Select the File -&gt; Import option in Google Sheets"/></p> <p>Wählen Sie die Registerkarte <strong>Upload</strong> und laden Sie die <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.xlsx">Accounting Contract.xlsx</a>-Excel-Datei hoch.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/import-excel-to-google-sheet.gif" alt="Excel-Datei in Google Sheets importieren"/></p> <p>Nach dem Hochladen sollten Ihre Daten in Google Sheets erscheinen. Geben Sie der Tabelle einen Namen, z. B. <strong>Accounting Contract</strong>, und Sie sind fertig!</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/accounting-spreadsheet-v2.png" alt="Neue Google Sheets-Tabelle"/></p> <h2 id="google-sheets-trigger">Den Google Sheets Trigger Einrichten</h2> <p>Erstellen Sie zunächst einen neuen Zap und wählen Sie die Google Sheets App als Startpunkt. Fügen Sie dann den Trigger <strong>New or Updated Spreadsheet Row in Google Sheets</strong> in Zapier hinzu.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/google-sheets-event.png" alt="Trigger „Neue oder aktualisierte Tabellenzeile&quot; in Google Sheets"/></p> <p>Verbinden Sie als nächstes Ihr Google-Konto, das für den Datenimport in Google Sheets verwendet wurde. Wählen Sie auf der Registerkarte <strong>Trigger</strong> die Tabelle und das Arbeitsblatt Ihres Google Sheets-Dokuments aus:</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/google-sheets-trigger.png" alt="Trigger in der Google Sheets App einrichten"/></p> <p>Im Schritt <strong>Test</strong> können Sie die Verbindung überprüfen. Die Liste zeigt die drei neuesten Datensätze. Wählen Sie einen aus und klicken Sie auf <strong>Continue with selected record</strong>. Der ausgewählte Datensatz wird bei der Einrichtung der anderen Apps im Zap zur Datenvorschau verwendet.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/google-sheets-test.png" alt="Google Sheets App im Zap testen"/></p> <h2 id="vorlage-erstellen">Die Vorlage in DocuGenerate Erstellen</h2> <p>Melden Sie sich bei DocuGenerate an und erstellen Sie eine neue Vorlage mit der <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.docx">Accounting Contract.docx</a>-Datei. Folgen Sie der Anleitung in unserem <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">Hilfe-Center</a>, wenn Sie Hilfe benötigen. Ihr Bildschirm sollte ungefähr so aussehen:</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/accounting-contract-template.png" alt="Neue Vorlage in DocuGenerate"/></p> <h2 id="dokument-generieren-aktion">Die Aktion „Dokument Generieren” Einrichten</h2> <p>Suchen Sie nach der <a href="https://zapier.com/apps/docugenerate/integrations" target="_blank" rel="noopener">DocuGenerate App</a> und fügen Sie sie zum Zap hinzu. Wählen Sie dann die Aktion <strong>Generate Document</strong>. Weitere Informationen zur Verbindung von Zapier mit DocuGenerate finden Sie in unserem <a href="https://www.docugenerate.com/de/hilfe/articles/dokumentenerstellung-mit-zapier-automatisieren/">Hilfe-Center</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-action-v3.png" alt="Generate Document-Aktion zum Zap hinzufügen"/></p> <p>Nach der Verbindung Ihres DocuGenerate-Kontos mit Zapier konfigurieren Sie die Aufrufparameter auf der Registerkarte <strong>Action</strong>. Wählen Sie aus der Dropdown-Liste die im <a href="#vorlage-erstellen">vorherigen Schritt</a> erstellte <strong>Accounting Contract</strong>-Vorlage aus. Geben Sie einen <strong>Namen</strong> an, z. B. <code class="language-plaintext highlighter-rouge">Contract for [Client Name]</code>, wobei <code class="language-plaintext highlighter-rouge">[Client Name]</code> ein dynamisches Feld ist, das von Zapier beim API-Aufruf an DocuGenerate eingefügt wird. Für das Format können Sie <strong>PDF</strong> wählen.</p> <p>Wenn Sie die Vorlage auswählen, wird der Parameter <strong>Data</strong> mit einem leeren JSON-Objekt vorausgefüllt, das den Zusammenführungs-Tags der Vorlage entspricht. Für jeden Schlüssel müssen Sie die Werte aus der Google Sheets App zuordnen. Achten Sie darauf, die doppelten Anführungszeichen um jeden Wert zu behalten, da das JSON sonst ungültig wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-params-v2.png" alt="Parameter der Generate Document-Aktion einrichten"/></p> <p>Am Beispiel des ersten Schlüssels – so ist es korrekt:<br/> <code class="language-plaintext highlighter-rouge">"Effective Date": "1. Effective Date 12/13/2023"</code><br/> Und so wäre es falsch (fehlende Anführungszeichen):<br/> <code class="language-plaintext highlighter-rouge">"Effective Date": 1. Effective Date 12/13/2023</code></p> <p>Nachdem die Zuordnung abgeschlossen ist, können Sie diesen Schritt testen. Bei korrekter Einrichtung ist der API-Aufruf erfolgreich, und Sie sehen die JSON-Antwort von DocuGenerates API:</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-test-v2.png" alt="Generate Document-Aktion testen"/></p> <p>Fertig! Klicken Sie auf <strong>Publish</strong>, um Ihren Zap zu speichern und zu veröffentlichen.</p> <h2 id="mehrzeilig">Weiterführend: Mehrzeilige Datenwerte Behandeln</h2> <p>Manchmal können Werte aus der Datenquelle (hier Google Sheets) mehrzeilige Zeichenketten sein, auch wenn dies in der Regel nicht der Fall ist. Es ist jedoch sinnvoll, diesen Randfall zu behandeln.</p> <p>Betrachten Sie zum Beispiel denselben Datensatz, aber mit der <code class="language-plaintext highlighter-rouge">Client Address</code> in der letzten Zeile als mehrzeiligen Wert:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>83902 Karstens Junction
Suite C
</code></pre></div></div> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/multi-line-data-v2.png" alt="Datensatz mit mehrzeiligen Werten"/></p> <p>Wenn wir den Zap mit diesem aktualisierten Datensatz testen würden, würde der Generate Document-Schritt mit folgendem Fehler scheitern:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>data must be a valid JSON object or array. Bad control character in string literal in 
JSON at position 199 while parsing near "...02 Karstens Junction Suite C", "End Da..."
</code></pre></div></div> <p>So würde das in der Zapier-Oberfläche aussehen:</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/invalid-json-error-v2.png" alt="Generate Document-Fehler: data must be a valid JSON object or array"/></p> <p>Um dieses Problem zu beheben, müssen wir unserem Zap einen neuen Schritt hinzufügen, um den Wert <code class="language-plaintext highlighter-rouge">Client Address</code> zu formatieren. Fügen Sie die App <a href="https://zapier.com/apps/formatter/help" target="_blank" rel="nofollow noopener">Formatter by Zapier</a> vor dem Schritt <strong>Generate Document</strong> hinzu und wählen Sie das Ereignis <strong>Text</strong> aus.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/text-formatter-action.png" alt="Text Formatter von Zapier einrichten"/></p> <p>Wählen Sie dann die Aktion <strong>Replace</strong> und wählen Sie für die Eingabe das Feld <code class="language-plaintext highlighter-rouge">Client Address</code>. Geben Sie für den Wert <strong>Find</strong> <code class="language-plaintext highlighter-rouge">[:newline:]</code> ein, was Zeilenumbruchzeichen entspricht. Geben Sie für den Wert <strong>Replace</strong> <code class="language-plaintext highlighter-rouge">\n</code> ein. Dadurch werden alle Zeilenumbrüche im Text durch das Zeichen <code class="language-plaintext highlighter-rouge">\n</code> ersetzt.</p> <p>Weitere Informationen zum Suchen, Ersetzen oder Aufteilen von Sonderzeichen finden Sie in diesem <a href="https://help.zapier.com/hc/en-us/articles/8496278339725-Find-and-replace-values-in-your-Zaps" target="_blank" rel="nofollow noopener">ausführlichen Artikel</a> auf Zapier. Diese Anleitung enthält umfassende Anweisungen und Beispiele für den Umgang mit verschiedenen Textformatierungsaufgaben in Zapier und stellt sicher, dass Ihre Automatisierungs-Workflows reibungslos laufen, auch wenn Sie mit komplexen Textdaten umgehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/text-formatter-params.png" alt="Zeilenumbruchzeichen durch das \n-Zeichen ersetzen"/></p> <p>Im <strong>Test</strong>-Schritt sehen Sie, dass der Wert erfolgreich ersetzt wurde:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>83902 Karstens Junction\nSuite C
</code></pre></div></div> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/text-formatter-test.gif" alt="Text Formatter-Aktion erfolgreich testen"/></p> <p>Schließlich müssen wir die Aktion <strong>Generate Document</strong> aktualisieren, um den formatierten Wert für das Feld <code class="language-plaintext highlighter-rouge">Client Address</code> zu verwenden. So verwenden wir nicht mehr den direkten Wert aus Google Sheets, sondern die Ausgabe des <strong>Formatter</strong>-Schritts.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-update.png" alt="Formatierten Wert in der Generate Document-Aktion verwenden"/></p> <p>Wir haben die Formatierung nur für ein Feld durchgeführt, aber Sie können weitere Formatierungsschritte hinzufügen, wenn andere Werte aus dem Datensatz mehrzeilig sein könnten.</p> <p>Nach dieser Änderung schlägt beim Testen des letzten Schritts die Dokumentengenerierung nicht mehr fehl, und das Dokument wird erfolgreich erstellt.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-success.gif" alt="Dokument ohne Fehler generieren"/></p> <h2 id="fazit">Fazit</h2> <p>Die Automatisierung der Dokumentengenerierung mit Google Sheets, Zapier und DocuGenerate kann Ihren Workflow erheblich optimieren. Diese Einrichtung spart nicht nur Zeit, sondern reduziert auch Fehler und sorgt für Konsistenz in Ihren Dokumenten. Ob Rechnungen, Verträge oder Zertifikate – diese leistungsstarke Automatisierung kann alles bewältigen.</p> <p>Durch die Integration dieser Tools können Sie sich auf kritischere Aufgaben konzentrieren, während Ihre Dokumente nahtlos im Hintergrund erstellt werden. Wir empfehlen Ihnen, diese Einrichtung auszuprobieren und die Möglichkeiten zu erkunden, was Sie mit DocuGenerate und Zapier automatisieren können.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.docx">Accounting Contract</a>-Word-Vorlage und <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.xlsx">Excel-Datei</a> mit den in diesem Tutorial verwendeten Daten.</li> <li><a href="https://help.zapier.com/hc/en-us/articles/8496278339725-Find-and-replace-values-in-your-Zaps" target="_blank" rel="nofollow noopener">Texte in Zaps bearbeiten</a> Artikel auf Zapier, referenziert im Abschnitt <a href="#mehrzeilig">Mehrzeilige Datenwerte behandeln</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Contracts"/> <category term="Zapier"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie Sie die Vertragsgenerierung mit Zapier, Google Sheets und DocuGenerate automatisieren. Diese Anleitung führt Sie durch die Einrichtung eines Workflows zur Umwandlung von Tabellenzeilen in formatierte Dokumente – mit besonderem Augenmerk auf mehrzeilige Datenwerte.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Dokumente aus Airtable mit einer Scripting-Erweiterung Generieren</title> <link href="https://www.docugenerate.com/de/blog/dokumente-aus-airtable-mit-einer-scripting-erweiterung-generieren/" rel="alternate" type="text/html" title="Dokumente aus Airtable mit einer Scripting-Erweiterung Generieren"/> <published>2024-04-19T00:00:00+00:00</published> <updated>2024-04-19T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/dokumente-aus-airtable-mit-einer-scripting-erweiterung-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/dokumente-aus-airtable-mit-einer-scripting-erweiterung-generieren/"><![CDATA[<h2 id="erste-schritte-mit-airtable">Erste Schritte mit Airtable</h2> <p>Im heutigen Arbeitsumfeld müssen Manager manchmal mit einer Vielzahl von Tools umgehen, was die Produktivität verringert und das Fehlerrisiko beim Datentransfer von einem Tool zum anderen erhöht. Daher liegt es in ihrem Interesse, die richtige Kombination von Tools zu finden – für einen unkomplizierten und effizienten Prozess.</p> <p>Deshalb erstellen wir in diesem Artikel einen komfortablen Workflow, mit dem Sie Dokumente automatisch aus Ihrer Airtable-Oberfläche heraus generieren können, ohne Daten zwischen Anwendungen übertragen zu müssen. Außerdem verwenden Sie eine Word-Vorlage, die einfach mit der Textverarbeitungssoftware bearbeitet werden kann, mit der Sie am besten vertraut sind.</p> <p>Folgende Dienste werden für diesen Workflow benötigt:</p> <ol> <li> <p><a href="https://airtable.com/" target="_blank" rel="nofollow noopener">Airtable</a>: Eine No-Code-Kollaborationsplattform, die es Benutzern ermöglicht, einfach mit einer Datenbank zu interagieren – unter anderem mit einer tabellenähnlichen Oberfläche, Web-Formularen für die Eingabe und benutzerfreundlichen Berichten und Datenvisualisierungs-Schnittstellen für die Ausgabe.</p> </li> <li> <p><a href="https://www.docugenerate.com">DocuGenerate</a>: Eine Web-App und API zur Generierung von Dokumenten aus Word-Vorlagen und JSON-Daten durch Ersetzen von Zusammenführungs-Tags in Vorlagen durch dynamische Daten.</p> </li> </ol> <p>Dieser Artikel richtet sich hauptsächlich an Personen mit minimalen Grundkenntnissen in den Basisfunktionen von Airtable. Wir werden nicht auf alle Funktionen eingehen und uns nur auf die Aspekte konzentrieren, die für die Einrichtung unseres Prozesses notwendig sind.</p> <h2 id="airtable-page-designer">Verwendung von Airtables Page Designer</h2> <p>Sie könnten Airtables <a href="https://support.airtable.com/docs/page-designer-extension-overview" target="_blank" rel="nofollow noopener">Page-Designer-Erweiterung</a> verwenden, um eigene Vorlagen für Rechnungen, Visitenkarten, Kataloge und mehr zu erstellen – alles mit Daten direkt aus Ihren Datensätzen. Wenn alles schön gestaltet ist, können Sie Ihre Datensätze ausdrucken oder in PDFs umwandeln.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/page-designer-v2.png" alt="Page-Designer-Erweiterung"/></p> <p>Für unseren Anwendungsfall gibt es jedoch einige Einschränkungen:</p> <ul> <li>Dateien werden einzeln generiert.</li> <li>Es können nur PDF-Dateien generiert werden.</li> <li>Generierte Dateien können nicht in der Airtable-Datenbank gespeichert werden.</li> </ul> <p>Der Layout-Editor des Page Designers ist nicht schlecht, aber Sie werden nie so produktiv sein wie mit Ihrer gewohnten Textverarbeitungssoftware. Außerdem müssen Sie von vorne beginnen, wenn Sie ein neues Layout in einer anderen Basis erstellen möchten.</p> <h2 id="die-word-vorlage-erstellen">Die Word-Vorlage Erstellen</h2> <p>Angesichts der Einschränkungen des Page Designers verwenden wir stattdessen eine Word-Vorlage. Eine Vorlage ist ein Dokument, das <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> enthält – Platzhalter, die durch dynamische Daten ersetzt werden sollen. Sie ermöglichen es Ihnen, Dokumente zu erstellen, die optisch sehr ähnlich sind, sich aber je nach Datensatz unterscheiden.</p> <p>Unsere Vorlage ist eine <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.docx">leicht modifizierte Version</a> der Abschlusszertifikat-Vorlage aus der <a href="https://www.docugenerate.com/de/vorlagen/#zertifikate">Vorlagenbibliothek</a>. Die wichtigsten Änderungen waren das <strong>Hinzufügen eines Profilfotos</strong> zur Darstellung unserer <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bilder-zu-einer-vorlage-hinzu/">Bildgrößenanpassungs</a>-Funktion und die <strong>Integration einer Kompetenzliste</strong>, um Airtables <a href="https://support.airtable.com/docs/linked-record-field" target="_blank" rel="nofollow noopener">verknüpfte Datensatzfelder</a> zusammen mit DocuGenerates <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-listen-zu-einer-vorlage-hinzu/">Listensyntax</a> zu demonstrieren.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.png" alt="Abschlusszertifikat-Vorlage"/></p> <p>Diese Vorlage enthält folgende Tags: <code class="language-plaintext highlighter-rouge">{Company_Name}</code>, <code class="language-plaintext highlighter-rouge">{First_Name}</code>, <code class="language-plaintext highlighter-rouge">{Last_Name}</code>, <code class="language-plaintext highlighter-rouge">{Program}</code>, <code class="language-plaintext highlighter-rouge">{Photo}</code>, <code class="language-plaintext highlighter-rouge">{Start_Date}</code>, <code class="language-plaintext highlighter-rouge">{End_Date}</code>, <code class="language-plaintext highlighter-rouge">{Certificate_Date}</code> und <code class="language-plaintext highlighter-rouge">{Skills}</code> (mit folgender Syntax für eine Kompetenzliste):</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{#Skills}
- {.}
{/Skills}
</code></pre></div></div> <p><strong>💡 Weiterführend</strong> Die <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/">erweiterte Syntax</a> ist für diese Vorlage aktiviert, um die Bildgrößenanpassung zu ermöglichen. Vermeiden Sie <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/#whitespace-limitation">Leerzeichen</a> in Tag-Namen, um sie nutzen zu können. Deshalb verwenden aus zwei Wörtern zusammengesetzte Tag-Namen einen Unterstrich zwischen ihnen.</p> <h2 id="die-datenbank-gestalten">Die Datenbank Gestalten</h2> <p>Für unser Beispiel haben wir zunächst die Vorlage erstellt und dann eine passende Datenbankstruktur angelegt. In der Praxis wird es natürlich umgekehrt sein: Da Ihre Daten wahrscheinlich bereits konsistent vorhanden sind, erstellen Sie eine Vorlage, die zu Ihren Daten und Ihrer Basisstruktur passt, um die benötigten Dokumente zu generieren – und nicht eine Datenbankstruktur nach Ihrer Vorlage.</p> <p>Unsere Basis enthält drei Tabellen:</p> <ul> <li> <p><strong>Skills</strong> enthält die in den verschiedenen Programmen erworbenen Kompetenzen, nach Kategorie geordnet.</p> </li> <li> <p><strong>Programs</strong> enthält Daten zu jedem Programm: Name, Start- und Enddatum sowie die erworbenen Kompetenzen (Feld verknüpft mit der <strong>Skills</strong>-Tabelle).</p> </li> <li> <p><strong>Attendees</strong> enthält Daten zu jedem Programmteilnehmer, z. B. Vor- und Nachname sowie Foto, und auch ein Verknüpfungsfeld zum verfolgten Programm, von dem aus mehrere Lookup-Felder erstellt werden, um direkt in der <strong>Attendees</strong>-Tabelle auf die Programmdaten zuzugreifen. Dies ist notwendig, da das Skript zur Dokumentengenerierung derzeit <strong>eine einzelne Tabellenauswahl</strong> erlaubt, sodass alle Daten in dieser Tabelle vorhanden sein müssen.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/base-structure.png" alt="Vollständige Basisstruktur"/></p> <p>Bitte beachten Sie, dass das in der Vorlage benötigte <strong>Zertifikatsdatum</strong> nicht in den Daten gespeichert ist. Machen Sie sich darüber keine Sorgen – es wird beim Generieren des Dokuments mit dem <a href="#dokumente-generieren-und-speichern">heutigen Datum</a> befüllt.</p> <p>Wenn Sie unsere Basis erkunden oder damit experimentieren möchten, können Sie die <a href="https://airtable.com/appLSLnJfZrkdAqz8/shruEBCW3StTQjxIk/tblej46yoReMAFar1/viw3bonO9CVF4TPj0" target="_blank" rel="noopener">DocuGenerate-Skript-Trainingsdaten</a> einfach öffnen.</p> <h2 id="die-datenbank-befuellen">Die Datenbank Befüllen</h2> <p>Unsere Basis ist bereits mit Daten befüllt, um unseren Workflow zu testen. In einem echten Prozess benötigen Sie jedoch einen Mechanismus zur Datenerhebung. Eines der einfachsten Mittel hierfür ist das Erstellen von Formularen, die Benutzer selbst ausfüllen können.</p> <p>Ein Formular ist im Grunde eine Webseite, die Sie öffentlich zugänglich machen, mit mehreren Eingabefeldern, die mit den Feldern Ihrer Tabelle verknüpft sind – das Ausfüllen des Formulars erstellt einen neuen Datensatz in Ihrer Tabelle. Der Prozess zum Erstellen eines Formulars für die <strong>Attendees</strong>-Tabelle ist beispielsweise sehr unkompliziert:</p> <ul> <li><strong>Neues Formular erstellen</strong> in der Views-Seitenleiste.</li> <li><strong>Logo und/oder Titelbild hochladen</strong>.</li> <li><strong>Felder auswählen</strong>, die der Benutzer ausfüllen soll.</li> <li><strong>Für jedes Feld</strong>: Pflichtfeld angeben, Titel und Beschreibung hinzufügen.</li> <li><strong>Formular veröffentlichen</strong>, um eine öffentliche URL zum Teilen zu erhalten.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/create-form.gif" alt="Formular erstellen"/></p> <p><strong>💡 Weiterführend</strong> Weitere Informationen zum Erstellen und Teilen von Formularen in Airtable finden Sie in der <a href="https://support.airtable.com/docs/building-and-sharing-forms-in-airtable" target="_blank" rel="nofollow noopener">offiziellen Dokumentation</a>.</p> <h2 id="die-scripting-erweiterung-einrichten">Die Scripting-Erweiterung Einrichten</h2> <p>Nachdem unsere Vorlage und unsere Basis fertig sind, richten wir das Skript zur Dokumentengenerierung ein. Fügen Sie dazu eine <a href="https://support.airtable.com/docs/en/scripting-extension-overview" target="_blank" rel="nofollow noopener">Scripting-Erweiterung</a> in einem Ihrer Dashboards hinzu. Bitte beachten Sie, dass <strong>Erweiterungen nur in bezahlten Plänen verfügbar</strong> sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/add-scripting-extension.png" alt="Scripting-Erweiterung hinzufügen"/></p> <p>Kopieren Sie dann diesen <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/docugenerate-script.txt" target="_blank">JavaScript-Code</a> und fügen Sie ihn in die Scripting-Erweiterung ein:</p> <div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Click the "gear" icon in the top right to view settings</span>
<span class="kd">const</span> <span class="nx">config</span> <span class="o">=</span> <span class="nx">input</span><span class="p">.</span><span class="nf">config</span><span class="p">({</span>
    <span class="na">title</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Generate Document</span><span class="dl">'</span><span class="p">,</span>
    <span class="na">description</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Automate document generation using DocuGenerate</span><span class="dl">'</span><span class="p">,</span>
    <span class="na">items</span><span class="p">:</span> <span class="p">[</span>
        <span class="nx">input</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="dl">'</span><span class="s1">api_key</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span>
            <span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">API Key</span><span class="dl">'</span><span class="p">,</span>
             <span class="na">description</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Get your unique key from the Settings page in DocuGenerate</span><span class="dl">'</span>
        <span class="p">}),</span>
        <span class="nx">input</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="dl">'</span><span class="s1">template_id</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span>
            <span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Template ID</span><span class="dl">'</span><span class="p">,</span>
            <span class="na">description</span><span class="p">:</span> <span class="dl">"</span><span class="s2">ID of the template to use for generating the document</span><span class="dl">"</span>
        <span class="p">}),</span>
        <span class="nx">input</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nf">table</span><span class="p">(</span><span class="dl">'</span><span class="s1">table</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span>
            <span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Table</span><span class="dl">'</span><span class="p">,</span>
            <span class="na">description</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Source table for your records</span><span class="dl">'</span>
        <span class="p">}),</span>
        <span class="nx">input</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nf">field</span><span class="p">(</span><span class="dl">'</span><span class="s1">storage_field</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span>
            <span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Storage</span><span class="dl">'</span><span class="p">,</span>
            <span class="na">description</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Field for storing the generated documents (URL or Attachment)</span><span class="dl">'</span><span class="p">,</span>
            <span class="na">parentTable</span><span class="p">:</span> <span class="dl">'</span><span class="s1">table</span><span class="dl">'</span><span class="p">,</span>
        <span class="p">}),</span>
        <span class="nx">input</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nf">select</span><span class="p">(</span><span class="dl">'</span><span class="s1">output_format</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span>
            <span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Format</span><span class="dl">'</span><span class="p">,</span>
            <span class="na">description</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Output format of the generated documents</span><span class="dl">'</span><span class="p">,</span>
            <span class="na">options</span><span class="p">:</span> <span class="p">[</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">PDF (.pdf)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.pdf</span><span class="dl">'</span><span class="p">},</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Microsoft Word (.docx)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.docx</span><span class="dl">'</span><span class="p">},</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Microsoft Word 2007 (.doc)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.doc</span><span class="dl">'</span><span class="p">},</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">OpenDocument Format (.odt)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.odt</span><span class="dl">'</span><span class="p">},</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">Plain Text (.txt)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.txt</span><span class="dl">'</span><span class="p">},</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">HTML (.html)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.html</span><span class="dl">'</span><span class="p">},</span>
                <span class="p">{</span><span class="na">label</span><span class="p">:</span> <span class="dl">'</span><span class="s1">PNG (.png)</span><span class="dl">'</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="dl">'</span><span class="s1">.png</span><span class="dl">'</span><span class="p">}</span>
            <span class="p">]</span>
        <span class="p">})</span>
    <span class="p">]</span>
<span class="p">});</span>

<span class="c1">// Prompt the user to pick a record </span>
<span class="c1">// If this script is run from a button field, this will use the button's record instead</span>
<span class="kd">let</span> <span class="nx">record</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">input</span><span class="p">.</span><span class="nf">recordAsync</span><span class="p">(</span><span class="dl">'</span><span class="s1">Select a record to use</span><span class="dl">'</span><span class="p">,</span> <span class="nx">config</span><span class="p">.</span><span class="nx">table</span><span class="p">);</span>

<span class="k">if </span><span class="p">(</span><span class="nx">record</span><span class="p">)</span> <span class="p">{</span>
    <span class="c1">// Customize this section to handle the selected record</span>
    <span class="c1">// You can use record.getCellValue("Field name") to access cell values from the record</span>
    <span class="nx">output</span><span class="p">.</span><span class="nf">markdown</span><span class="p">(</span><span class="s2">`Generating document for **</span><span class="p">${</span><span class="nx">record</span><span class="p">.</span><span class="nx">name</span><span class="p">}</span><span class="s2">**`</span><span class="p">);</span>

    <span class="c1">// Get the program name</span>
    <span class="kd">const</span> <span class="nx">programsTable</span> <span class="o">=</span> <span class="nx">base</span><span class="p">.</span><span class="nf">getTable</span><span class="p">(</span><span class="dl">"</span><span class="s2">Programs</span><span class="dl">"</span><span class="p">);</span>
    <span class="kd">const</span> <span class="nx">programRecord</span> <span class="o">=</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">Program</span><span class="dl">"</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
    <span class="kd">const</span> <span class="nx">program</span> <span class="o">=</span> <span class="k">await</span> <span class="nx">programsTable</span><span class="p">.</span><span class="nf">selectRecordAsync</span><span class="p">(</span><span class="nx">programRecord</span><span class="p">.</span><span class="nx">id</span><span class="p">);</span>

    <span class="c1">// Construct the data object based on the selected record's values</span>
    <span class="kd">const</span> <span class="nx">data</span> <span class="o">=</span> <span class="p">[{</span>
        <span class="dl">"</span><span class="s2">Company Name</span><span class="dl">"</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">Company_Name</span><span class="dl">"</span><span class="p">),</span>
        <span class="dl">"</span><span class="s2">First Name</span><span class="dl">"</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">First_Name</span><span class="dl">"</span><span class="p">),</span>
        <span class="dl">"</span><span class="s2">Last Name</span><span class="dl">"</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">Last_Name</span><span class="dl">"</span><span class="p">),</span>
        <span class="dl">"</span><span class="s2">Program</span><span class="dl">"</span><span class="p">:</span> <span class="nx">program</span><span class="p">?.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">Name</span><span class="dl">"</span><span class="p">),</span>
        <span class="dl">"</span><span class="s2">Start Date</span><span class="dl">"</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">Start_Date</span><span class="dl">"</span><span class="p">),</span>
        <span class="dl">"</span><span class="s2">End Date</span><span class="dl">"</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">End_Date</span><span class="dl">"</span><span class="p">),</span>
        <span class="dl">"</span><span class="s2">Certificate Date</span><span class="dl">"</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">End_Date</span><span class="dl">"</span><span class="p">)</span>
    <span class="p">}];</span>

    <span class="kd">const</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span>
        <span class="na">method</span><span class="p">:</span> <span class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span class="p">,</span>
        <span class="na">headers</span><span class="p">:</span> <span class="p">{</span>
            <span class="dl">'</span><span class="s1">Accept</span><span class="dl">'</span><span class="p">:</span> <span class="dl">'</span><span class="s1">application/json</span><span class="dl">'</span><span class="p">,</span>
            <span class="dl">'</span><span class="s1">Content-Type</span><span class="dl">'</span><span class="p">:</span> <span class="dl">'</span><span class="s1">application/json</span><span class="dl">'</span><span class="p">,</span>
            <span class="dl">'</span><span class="s1">Authorization</span><span class="dl">'</span><span class="p">:</span> <span class="nx">config</span><span class="p">.</span><span class="nx">api_key</span>
        <span class="p">},</span>
        <span class="na">body</span><span class="p">:</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">stringify</span><span class="p">({</span>
            <span class="na">template_id</span><span class="p">:</span> <span class="nx">config</span><span class="p">.</span><span class="nx">template_id</span><span class="p">,</span>
            <span class="na">name</span><span class="p">:</span> <span class="s2">`Certificate for </span><span class="p">${</span><span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">First_Name</span><span class="dl">"</span><span class="p">)}</span><span class="s2"> </span><span class="p">${</span><span class="nx">record</span><span class="p">.</span><span class="nf">getCellValue</span><span class="p">(</span><span class="dl">"</span><span class="s2">Last_Name</span><span class="dl">"</span><span class="p">)}</span><span class="s2">`</span><span class="p">,</span>
            <span class="na">output_format</span><span class="p">:</span> <span class="nx">config</span><span class="p">.</span><span class="nx">output_format</span><span class="p">,</span>
            <span class="na">data</span><span class="p">:</span> <span class="nx">data</span>
        <span class="p">})</span>
    <span class="p">};</span>

    <span class="kd">let</span> <span class="nx">status</span><span class="p">;</span>
    <span class="kd">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="k">await</span> <span class="nf">fetch</span><span class="p">(</span><span class="dl">'</span><span class="s1">https://api.docugenerate.com/v1/document</span><span class="dl">'</span><span class="p">,</span> <span class="nx">options</span><span class="p">)</span>
        <span class="p">.</span><span class="nf">then</span><span class="p">(</span><span class="nx">response</span> <span class="o">=&gt;</span> <span class="p">{</span>
            <span class="nx">status</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">status</span><span class="p">;</span>
            <span class="k">return</span> <span class="nx">response</span><span class="p">.</span><span class="nf">json</span><span class="p">();</span>
        <span class="p">})</span>
        <span class="p">.</span><span class="k">catch</span><span class="p">(</span><span class="nx">err</span> <span class="o">=&gt;</span> <span class="nx">output</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="nx">err</span><span class="p">));</span>

    <span class="k">if </span><span class="p">(</span><span class="nx">status</span> <span class="o">!==</span> <span class="mi">201</span><span class="p">)</span> <span class="p">{</span>
        <span class="nx">output</span><span class="p">.</span><span class="nf">markdown</span><span class="p">(</span><span class="dl">'</span><span class="s1">Error generating document: </span><span class="dl">'</span> <span class="o">+</span> <span class="nx">response</span><span class="p">.</span><span class="nx">message</span><span class="p">);</span>
    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
        <span class="kd">const</span> <span class="nx">storageFieldValue</span> <span class="o">=</span> <span class="p">(</span><span class="nx">config</span><span class="p">.</span><span class="nx">storage_field</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="dl">'</span><span class="s1">multipleAttachments</span><span class="dl">'</span><span class="p">)</span> <span class="p">?</span> <span class="p">[{</span><span class="na">url</span><span class="p">:</span> <span class="nx">response</span><span class="p">.</span><span class="nx">document_uri</span><span class="p">}]</span> <span class="p">:</span> <span class="nx">response</span><span class="p">.</span><span class="nx">document_uri</span><span class="p">;</span>
        <span class="k">await</span> <span class="nx">config</span><span class="p">.</span><span class="nx">table</span><span class="p">.</span><span class="nf">updateRecordsAsync</span><span class="p">([{</span>
            <span class="na">id</span><span class="p">:</span> <span class="nx">record</span><span class="p">.</span><span class="nx">id</span><span class="p">,</span>
            <span class="na">fields</span><span class="p">:</span> <span class="p">{[</span><span class="nx">config</span><span class="p">.</span><span class="nx">storage_field</span><span class="p">.</span><span class="nx">name</span><span class="p">]:</span> <span class="nx">storageFieldValue</span><span class="p">}</span>
        <span class="p">}]);</span>
        <span class="nx">output</span><span class="p">.</span><span class="nf">markdown</span><span class="p">(</span><span class="dl">'</span><span class="s1">Document generated successfully! 🎉</span><span class="dl">'</span><span class="p">);</span>
    <span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
    <span class="nx">output</span><span class="p">.</span><span class="nf">markdown</span><span class="p">(</span><span class="dl">'</span><span class="s1">No record was selected</span><span class="dl">'</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div> <p>Wenn alles gut geht, sollten Sie jetzt auf die Einstellungsseite des Skripts zugreifen können, indem Sie auf das Zahnrad-Symbol klicken, das beim Hovern über die obere rechte Ecke Ihrer Erweiterung erscheint. Zögern Sie nicht, das Vollbild-Symbol neben dem Einstellungssymbol zu verwenden, für bessere Übersichtlichkeit.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/extension-settings.png" alt="Erweiterungs-Einstellungen"/></p> <p>Verfügbare Einstellungen:</p> <ul> <li> <p><strong>API Key</strong>: Ihr DocuGenerate-API-Schlüssel, den Sie auf der <a href="https://app.docugenerate.com/settings" target="_blank">Einstellungsseite</a> Ihres Kontos finden. Klicken Sie einfach darauf, um den <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">API-Schlüssel zu kopieren</a>.</p> </li> <li> <p><strong>Template ID</strong>: Die ID Ihrer Vorlage, die Sie <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erhalte-ich-die-vorlagen-id/">kopieren können</a> von der Seite Ihrer Vorlage. Bitte beachten Sie, dass sie auch direkt in der URL der Vorlagenseite erscheint, die das Format <code class="language-plaintext highlighter-rouge">https://app.docugenerate.com/templates/:template_id</code> hat.</p> </li> <li> <p><strong>Table</strong>: Die Tabelle mit den Datensätzen, die für die Tag-Ersetzung der Vorlage verwendet werden.</p> </li> <li> <p><strong>Storage</strong>: Das Feld zum Speichern des generierten Dokuments. Es kann entweder ein URL-Feld (speichert einen Link zum Dokument) oder ein Dateifeld (speichert die eigentliche Datei) sein.</p> </li> <li> <p><strong>Format</strong>: Ausgabeformat des generierten Dokuments. Die Optionen sind <code class="language-plaintext highlighter-rouge">.docx</code>, <code class="language-plaintext highlighter-rouge">.pdf</code>, <code class="language-plaintext highlighter-rouge">.doc</code>, <code class="language-plaintext highlighter-rouge">.odt</code>, <code class="language-plaintext highlighter-rouge">.txt</code>, <code class="language-plaintext highlighter-rouge">.html</code> oder <code class="language-plaintext highlighter-rouge">.png</code>.</p> </li> </ul> <p>Mit all diesen eingestellten Parametern sind wir nun bereit, den Dokumenterstellungsprozess zu automatisieren!</p> <h2 id="die-generieren-schaltflaeche-hinzufuegen">Die Generieren-Schaltfläche Hinzufügen</h2> <p>Die <a href="#die-scripting-erweiterung-einrichten">Scripting-Erweiterung</a> wartet darauf, dass der Benutzer einen bestimmten Datensatz zur Verarbeitung eingibt. Um die Bedienung für den Endbenutzer zu vereinfachen, möchten wir das Dokument durch einen einfachen Klick auf eine Schaltfläche generieren. Dafür fügen wir ein neues <a href="https://support.airtable.com/docs/button-field" target="_blank" rel="nofollow noopener">Schaltflächen-Feld</a> hinzu, das so konfiguriert ist, dass es beim Klicken unser Skript ausführt. So wird der Datensatz, von dem aus die Schaltfläche geklickt wurde, automatisch für die Skriptausführung ausgewählt.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/edit-generate-button.png" alt="Generieren-Schaltfläche hinzufügen"/></p> <h2 id="dokumente-generieren-und-speichern">Dokumente Generieren und Speichern</h2> <p>Mit allem eingerichtet, sehen wir uns den Dokumentengenerierungsprozess an. Wenn Sie auf die Schaltfläche <strong>Generate</strong> bei einem Datensatz klicken, führt das Skript folgende Aktionen aus:</p> <ol> <li>Es sammelt alle notwendigen Daten aus dem aktuellen Datensatz.</li> <li>Es sendet diese Daten zusammen mit Ihrer Vorlagen-ID an die DocuGenerate-API.</li> <li>DocuGenerate verarbeitet die Anfrage und ersetzt alle Zusammenführungs-Tags durch Ihre Daten.</li> <li>Das generierte Dokument wird zurückgegeben und automatisch in Ihrer Datenbank gespeichert.</li> </ol> <p>Das Ergebnis ist ein professionell aussehendes Zertifikat, das bereit für die Weitergabe an die Teilnehmer ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/docugenerate-demo.gif" alt="Zertifikatgenerierung"/></p> <h2 id="weiter-mit-automatisierungen">Weiterführend: Airtable-Automatisierungen</h2> <p>Während unser schaltflächengesteuertes Skript bereits sehr leistungsfähig ist, können Sie die Dokumentengenerierung durch die Integration mit <a href="https://support.airtable.com/docs/getting-started-with-airtable-automations" target="_blank" rel="nofollow noopener">Airtable-Automatisierungen</a> auf die nächste Stufe heben. So sind vollständig automatische Dokument-Workflows möglich, die auf bestimmten Bedingungen in Ihrer Datenbank basieren.</p> <p>Hier sind einige leistungsstarke Automatisierungsszenarien, die Sie umsetzen könnten:</p> <ul> <li> <p><strong>Automatische Zertifikatgenerierung</strong>: Zertifikate automatisch generieren, wenn sich der Status eines Teilnehmers auf “Abgeschlossen” ändert oder ein Programm-Enddatum erreicht wird – ohne manuelle Klicks auf die Schaltfläche.</p> </li> <li> <p><strong>E-Mail-Versand</strong>: Zertifikate direkt an Teilnehmer per E-Mail senden, sobald sie generiert wurden, für eine nahtlose Erfahrung der Programmteilnehmer.</p> </li> <li> <p><strong>Stapelverarbeitung</strong>: Wöchentliche oder monatliche Automatisierungen einrichten, die Zertifikate für alle Teilnehmer generieren, die in diesem Zeitraum Programme abgeschlossen haben.</p> </li> <li> <p><strong>Bedingte Dokumentengenerierung</strong>: Verschiedene Dokumenttypen basierend auf Kriterien wie Programmtyp, Leistungsniveau oder geografischem Standort erstellen.</p> </li> <li> <p><strong>Benachrichtigungssystem</strong>: Programmadministratoren benachrichtigen, wenn Zertifikate generiert und zugestellt wurden, um den Prozess nachzuverfolgen.</p> </li> </ul> <p>Um diese Automatisierungen einzurichten, müssen Sie den zuvor bereitgestellten Skript-Code in einen “Run script”-Automatisierungsschritt anpassen. Die eigentliche API-Integration bleibt dieselbe, aber Sie müssen anpassen, wie Datensätze ausgewählt und verarbeitet werden, basierend auf Ihren Auslösebedingungen.</p> <h2 id="fazit">Fazit</h2> <p>In diesem Tutorial haben wir gezeigt, wie Sie Ihre Airtable-Datenbank mithilfe der DocuGenerate-API und Airtables Scripting-Erweiterung in ein leistungsstarkes Dokumentengenerierungssystem verwandeln können. Durch die Kombination dieser Tools können Sie professionelle Dokumente direkt aus Ihren Airtable-Daten mit einem einzigen Klick generieren und die generierten Dokumente für einfachen Zugriff und Organisation in Ihrer Datenbank speichern.</p> <p>Auch wenn Automatisierungstools wie dieses Ihre Produktivität erheblich steigern können, ist es wichtig, daran zu denken, dass sie als Prozesserleichterer dienen sollen. Verlieren Sie sich nicht in komplexer Automatisierungsentwicklung, wenn ein einfacherer Ansatz effizienter sein könnte! Dieses Gleichgewicht zu erkennen ist der Schlüssel zur Schaffung wirklich effektiver Workflows. Beginnen Sie mit der bereitgestellten Basisimplementierung und erweitern Sie Ihre Automatisierung schrittweise, wenn Ihre Anforderungen wachsen und sich weiterentwickeln.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li><a href="https://airtable.com/appLSLnJfZrkdAqz8/shruEBCW3StTQjxIk/tblej46yoReMAFar1/viw3bonO9CVF4TPj0" target="_blank" rel="noopener">DocuGenerate-Test-Basis</a> in Airtable mit den Tabellen Skills, Programs und Attendees.</li> <li><a href="https://github.com/basteks/airtable-docugenerate" target="_blank" rel="noopener">Airtable DocuGenerate</a> GitHub-Repository von Benjamin Hatton, das die ursprüngliche Version der Airtable-Skripte zur Generierung von Dokumenten mit der DocuGenerate-API enthält.</li> <li>Alle Profilfotos sind lizenzfrei und stammen von <a href="https://pixabay.com/" target="_blank" rel="nofollow noopener">Pixabay</a>, der Plattform für lizenzfreie Bilder und Stock-Fotos.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.docx">Abschlusszertifikat</a>-Vorlage aus diesem Tutorial.</li> <li>Ein Beispiel eines aus Airtable-Daten generierten <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.pdf" target="_blank">PDF-Zertifikats</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Certificates"/> <category term="Airtable"/> <category term="No-Code"/> <summary type="html"><![CDATA[Erfahren Sie, wie DocuGenerate die Dokumentengenerierung auf Basis der in Ihren Tabellen gespeicherten Daten automatisieren kann, sodass Sie sich auf die wertvollsten Schritte Ihres Prozesses konzentrieren können. Folgen Sie unserem Tutorial und erstellen Sie einen No-Code-Dokumenten-Workflow in Airtable.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Top-Bewertete Günstige Vertragsmanagement-Software von GetApp</title> <link href="https://www.docugenerate.com/de/blog/top-bewertete-guenstige-vertragsmanagement-software-von-getapp/" rel="alternate" type="text/html" title="Top-Bewertete Günstige Vertragsmanagement-Software von GetApp"/> <published>2024-04-16T00:00:00+00:00</published> <updated>2024-04-16T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/top-bewertete-guenstige-vertragsmanagement-software-von-getapp</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/top-bewertete-guenstige-vertragsmanagement-software-von-getapp/"><![CDATA[<h2 id="vertragsmanagement-software">Vertragsmanagement-Software</h2> <p><a href="https://www.getapp.com/" target="_blank" rel="nofollow noopener">GetApp</a>, ein Unternehmen, das Unternehmen beim Software-Kaufprozess unterstützt, hat DocuGenerate in seine Liste <a href="https://www.getapp.com/resources/top-affordable-contract-management-software/" target="_blank" rel="nofollow noopener">“7 Top-Rated Affordable Contract Management Software”</a> aufgenommen. Diese Liste bewertet sieben der am besten bewerteten, erschwinglichen Vertragsmanagement-Software-Lösungen auf Basis verifizierter Nutzerbewertungen und der auf den Anbieter-Websites angegebenen Preise.</p> <p>Diese Auszeichnung ist ein Beweis für die herausragende Qualität unseres Produkts und das unerschütterliche Engagement, eine benutzerfreundliche und zuverlässige Lösung anzubieten, die den vielfältigen Bedürfnissen unserer Kunden gerecht wird. Unser Team ist der kontinuierlichen Verbesserung und Innovation verpflichtet und stellt sicher, dass unsere Nutzer stets die besten Tools zur Verfügung haben.</p> <p><img src="https://www.docugenerate.com/assets/posts/010-getapp-top-rated-software/top-affordable-contract-management-software.png" alt="7 Top-Rated Affordable Contract Management Software"/></p> <h2 id="nutzerbewertungen">Nutzerbewertungen</h2> <p><a href="https://www.getapp.com/resources/top-affordable-contract-management-software/#4-docugenerate" target="_blank" rel="nofollow noopener">DocuGenerate</a> gehörte zu den am besten bewerteten Produkten mit einer hervorragenden Bewertung von <a href="https://www.getapp.com/collaboration-software/a/docugenerate/reviews/" target="_blank" rel="nofollow noopener">4,8 von 5</a>. Da der Bericht auf echten Nutzerbewertungen basiert, möchten wir unseren geschätzten Nutzern danken, die unser Produkt lieben!</p> <p><img src="https://www.docugenerate.com/assets/posts/010-getapp-top-rated-software/docugenerate-getapp-snippet-v2.png" alt="DocuGenerate-Bewertungen auf GetApp"/></p> <p>Was Nutzer über unser Produkt sagen:</p> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Der Kundenservice war großartig. Man hat mit mir gesprochen wie mit einem echten Menschen, ohne vorgefertigte Antworten, die das Gespräch nur noch verwirrender gemacht hätten. Nachdem ich mein Problem mit dem Kundenservice gelöst hatte, war die Arbeit mit dem generierten Dokument extrem einfach. </p> <h6> Quelle: <a href="https://www.getapp.com/collaboration-software/a/docugenerate/reviews/9f16950ccb/" target="_blank"> GetApp </a> </h6> </div> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Ich brauchte eine einfache Möglichkeit, PDF-Dateien aus JSON-Daten zu generieren – und DocuGenerate hat das möglich gemacht. Der Support war ebenfalls großartig. Ich bin kein Entwickler, aber ich konnte es in wenigen Stunden mithilfe ihrer API umsetzen. </p> <h6> Quelle: <a href="https://www.getapp.com/collaboration-software/a/docugenerate/reviews/c31e5e9bc0/" target="_blank"> GetApp </a> </h6> </div> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Dokumentvorlagen sind sehr einfach zu verwenden, wir haben keinen einzigen Anwendungsfall gefunden, den sie nicht unterstützen würden. Die unkomplizierte API hat die Integration unseres Produkts sehr einfach gemacht. </p> <h6> Quelle: <a href="https://www.getapp.com/collaboration-software/a/docugenerate/reviews/b6e61422f5/" target="_blank"> GetApp </a> </h6> </div> <p>Helfen Sie uns, die Zukunft des Vertragsmanagements zu gestalten, indem Sie DocuGenerate auf GetApp <a href="https://reviews.getapp.com/products/new/f02a2815-804f-4a33-8e75-dae92de9d9a1" target="_blank" rel="nofollow noopener">hier</a> bewerten.</p> <h2 id="ueber-uns">Über Uns</h2> <p>DocuGenerate ist ein führender Anbieter von automatisierten Dokumentengenerierungslösungen. Unsere Plattform ermöglicht es Unternehmen, PDF-Dokumente wie Rechnungen, Briefe, Verträge, Vereinbarungen und Zertifikate einfach über unsere intuitive Web-App oder <a href="/de/entwickler/schnellstart/">REST-API</a> zu erstellen.</p> <p>Durch die Optimierung des Dokumentenerstellungsprozesses helfen wir Unternehmen, Zeit und Ressourcen zu sparen und gleichzeitig Genauigkeit und Konsistenz sicherzustellen. Mit flexiblen <a href="/de/preise/">Preisplänen</a> und vollem API-Zugang bedient DocuGenerate Unternehmen aller Größen, von Start-ups bis hin zu großen Unternehmen.</p> <h2 id="ueber-getapp">Über GetApp</h2> <p>GetApp ist die Empfehlungsmaschine, die kleinen Unternehmen hilft, die richtige Software-Wahl zu treffen. Mit über 2 Millionen verifizierten Nutzerbewertungen ermöglicht GetApp KMUs, ihre Mission zu erfüllen, indem es maßgeschneiderte, datengestützte Empfehlungen und Einblicke liefert, die für fundierte Software-Kaufentscheidungen benötigt werden. Weitere Informationen finden Sie unter <a href="https://www.getapp.com/" target="_blank" rel="nofollow noopener">GetApp.com</a>.</p>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Contracts"/> <category term="Review"/> <category term="GetApp"/> <summary type="html"><![CDATA[DocuGenerate wurde von GetApp als eine der am besten bewerteten, erschwinglichen Vertragsmanagement-Software-Lösungen ausgezeichnet. Unsere Bewertung von 4,8 von 5 spiegelt die Qualität unseres Produkts wider.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/010-getapp-top-rated-software/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/010-getapp-top-rated-software/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Mit Tally und Make Berichte auf Basis von Formular-Einsendungen Generieren</title> <link href="https://www.docugenerate.com/de/blog/mit-tally-und-make-berichte-aus-formular-einsendungen-generieren/" rel="alternate" type="text/html" title="Mit Tally und Make Berichte auf Basis von Formular-Einsendungen Generieren"/> <published>2024-03-16T00:00:00+00:00</published> <updated>2024-03-16T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/mit-tally-und-make-berichte-aus-formular-einsendungen-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/mit-tally-und-make-berichte-aus-formular-einsendungen-generieren/"><![CDATA[<h2 id="der-workflow-den-wir-aufbauen">Der Workflow, den Wir Aufbauen</h2> <p>In der heutigen schnelllebigen Geschäftswelt ist <strong>Automatisierung der Schlüssel</strong> zur Maximierung von Effizienz und Genauigkeit. Stellen Sie sich vor, Ihr Vertriebsteam muss nach Abschluss von Verkaufsgesprächen Berichte erstellen – dieser Prozess kann bei manueller Durchführung zeitaufwendig und fehleranfällig sein. In diesem Artikel erläutern wir, wie Sie die Leistungsfähigkeit von Tally, Make und DocuGenerate nutzen können, um die <strong>Generierung von Berichten</strong> auf Basis von Formular-Einsendungen zu automatisieren. Durch die Kombination dieser Tools können Sie Ihren Workflow verbessern und sicherstellen, dass Ihre Berichte stets korrekt und zeitnah erstellt werden.</p> <p>Im Kern geht es darum, dass ein Vertriebsmitarbeiter ein Formular mit Informationen über ein Verkaufsgespräch ausfüllt. Diese Informationen umfassen Details über das Unternehmen, die Kontaktperson und das Ergebnis des Gesprächs. Nach dem Absenden generiert das System automatisch einen PDF-Bericht anhand einer in DocuGenerate konfigurierten Vorlage. Die Schlüsselkomponenten dieses Workflows sind:</p> <ol> <li> <p><a href="https://tally.so/" target="_blank" rel="nofollow noopener">Tally</a>: Tally dient als Plattform für das Erstellen des benutzerfreundlichen Formulars. Es bietet eine Benutzeroberfläche für das Gestalten umfangreicher Formulare mit verschiedenen Feldern. Darüber hinaus bietet Tally Funktionen, die über die reine Formularerstellung hinausgehen, und macht es zu einem vielseitigen Tool zur nahtlosen Datenerfassung.</p> </li> <li> <p><a href="https://www.make.com/en?utm_source=docugenerate-app&amp;utm_medium=partner&amp;utm_campaign=docugenerate-app-partner-program" target="_blank" rel="nofollow noopener">Make</a>: Make (früher bekannt als Integromat) fungiert als Bindeglied zwischen Tally und DocuGenerate. Make ermöglicht die Erstellung von Automatisierungsszenarien, die Aktionen basierend auf bestimmten Ereignissen auslösen – in diesem Fall wartet es auf neue Formular-Einsendungen in Tally und ruft automatisch die DocuGenerate-API auf, um Berichte zu generieren.</p> </li> <li> <p><a href="https://www.docugenerate.com">DocuGenerate</a>: DocuGenerate ist eine Web-App und API zur Generierung von Dokumenten aus Vorlagen und Daten. Sie ermöglicht das Ersetzen von Zusammenführungs-Tags in Vorlagen durch Daten aus API-Anfragen. Dies ist entscheidend für die dynamische Befüllung von Berichtsvorlagen mit korrekten Informationen.</p> </li> </ol> <h2 id="die-berichtsvorlage-erstellen">Die Berichtsvorlage Erstellen</h2> <p>Zunächst benötigen Sie eine <a href="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.docx">Verkaufsgesprächsbericht</a>-Vorlage in DocuGenerate. Diese Vorlage dient als Grundlage für die generierten Berichte. Die Vorlage enthält Platzhalter, sogenannte <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a>, die beim Generieren des Dokuments durch tatsächliche Daten ersetzt werden.</p> <p>Die Vorlage enthält Zusammenführungs-Tags für verschiedene Felder wie <code class="language-plaintext highlighter-rouge">[city]</code>, <code class="language-plaintext highlighter-rouge">[state]</code>, <code class="language-plaintext highlighter-rouge">[zip]</code>, <code class="language-plaintext highlighter-rouge">[country]</code>, <code class="language-plaintext highlighter-rouge">[company_name]</code>, <code class="language-plaintext highlighter-rouge">[address]</code>, <code class="language-plaintext highlighter-rouge">[phone]</code>, <code class="language-plaintext highlighter-rouge">[email]</code>, <code class="language-plaintext highlighter-rouge">[project]</code>, <code class="language-plaintext highlighter-rouge">[date]</code>, <code class="language-plaintext highlighter-rouge">[author]</code>, <code class="language-plaintext highlighter-rouge">[representative_name]</code>, <code class="language-plaintext highlighter-rouge">[representative_title]</code>, <code class="language-plaintext highlighter-rouge">[receptivity]</code>, <code class="language-plaintext highlighter-rouge">[summary]</code> und <code class="language-plaintext highlighter-rouge">[action]</code>.</p> <p>Diese Tags sind Platzhalter, die mit den über das Formular übermittelten Daten befüllt werden. Wie Sie sehen, <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/#whitespace-limitation">enthalten sie keine Leerzeichen</a>, was eine Voraussetzung für den späteren Einsatz der <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/">erweiterten Syntax</a> ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.png" alt="Verkaufsgesprächsbericht" class="desktop-width-75"/></p> <h2 id="das-formular-in-tally-gestalten">Das Formular in Tally Gestalten</h2> <p>Mit der Vorlage können Sie nun ein <strong>entsprechendes Formular in Tally</strong> erstellen. Das Formular sammelt die notwendigen Informationen für die Berichtsgenerierung. Es ist in zwei Seiten aufgeteilt: eine für Unternehmensinformationen und eine für Details zum Gespräch (Kontaktperson, Gesprächszusammenfassung und Aktionspunkte).</p> <p>Tallys <strong>intuitive Benutzeroberfläche</strong> erleichtert das Gestalten des Formulars. Sie ordnen jedes Formularfeld einem bestimmten Zusammenführungs-Tag in der Vorlage zu. Diese Zuordnung stellt sicher, dass die über das Formular gesammelten Daten genau mit den Platzhaltern in der Berichtsvorlage übereinstimmen.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-form-submission-v2.gif" alt="Tally-Formular-Einsendung"/></p> <p>Sobald das Formular gestaltet ist, finden Sie den <strong>Freigabe-Link</strong>, der Benutzern den Zugang ermöglicht. Für den Verkaufsgesprächsbericht ist das Formular unter dieser URL erreichbar: <a href="https://tally.so/r/n99oAQ" target="_blank" rel="nofollow noopener">https://tally.so/r/n99oAQ</a></p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-share-form.png" alt="Tally-Freigabe-Link" class="desktop-width-75"/></p> <h2 id="tally-mit-make-verbinden">Tally mit Make Verbinden</h2> <p>Die Integration von Tally und Make ist ein entscheidender Schritt zur Workflow-Automatisierung. Diese Integration ermöglicht es Make, neue Formular-Einsendungen zu überwachen und nachfolgende Aktionen auszulösen. Nützliche Anleitungen zur Verbindung der beiden Tools finden Sie im <a href="https://tally.so/help/integromat-integration" target="_blank" rel="nofollow noopener">Tally-Hilfecenter</a> oder im <a href="https://www.make.com/en/help/app/tally" target="_blank" rel="nofollow noopener">Make-Hilfecenter</a>.</p> <p>Klicken Sie zunächst auf die Schaltfläche <strong>Plus</strong> und suchen Sie nach der <strong>Tally</strong>-Anwendung, dann klicken Sie darauf:</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-new-scenario-tally.png" alt="Tally zu einem Make-Szenario hinzufügen"/></p> <p>Wählen Sie dann den Trigger <strong>Watch New Responses</strong> aus, der bei jeder neuen Formular-Einsendung ausgelöst wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-watch-new-responses.png" alt="Neue Tally-Antworten beobachten"/></p> <p>Das folgende Video zeigt, wie die Verbindung von Make mit Tally funktioniert:<br/> 1. Klicken Sie auf <strong>Create a webhook</strong><br/> 2. Klicken Sie dann auf <strong>Create a connection</strong><br/> 3. Ein Pop-up-Fenster öffnet sich – klicken Sie auf <strong>Accept</strong>, um Make den Zugriff auf Ihr Tally-Konto zu erlauben<br/> 4. Und schließlich müssen Sie das Formular <strong>Sales Call Report</strong> aus der Liste der verfügbaren Tally-Formulare auswählen</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/create-tally-connection.gif" alt="Tally mit Make verbinden"/></p> <p>In Make sehen Sie die zugewiesene <strong>Webhook-URL</strong>. Ein Webhook ist ein Mechanismus, der es einer Anwendung (Tally) ermöglicht, Daten in Echtzeit an eine andere Anwendung (Make) zu senden. In diesem Fall sendet Tally bei jeder neuen Formular-Einsendung einen Webhook an Make.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-webhook-in-make.png" alt="Make-Webhook für neue Antworten"/></p> <p>Sobald die Verbindung hergestellt ist, sehen Sie auf dem Tab <strong>Integration</strong> im Tally-Formular dieselbe Webhook-URL wie in Make, was bestätigt, dass alles korrekt eingerichtet ist.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-webhook-to-make.png" alt="Tally-Webhook-Integration zu Make"/></p> <h2 id="docugenerate-mit-make-verbinden">DocuGenerate mit Make Verbinden</h2> <p>Mit der Tally-Make-Verbindung ist es an der Zeit, <strong>DocuGenerate in den Workflow zu integrieren</strong>. Makes Flexibilität ermöglicht das Hinzufügen von Modulen zum Szenario. In diesem Fall fügen Sie ein HTTP-Modul hinzu, um die DocuGenerate-API aufzurufen und den Bericht zu erstellen.</p> <p>Die Konfiguration des <strong>HTTP-Moduls</strong> umfasst die Angabe des API-Endpunkts für DocuGenerate sowie die Authentifizierung mit einem API-Schlüssel, den Sie auf der Einstellungsseite von DocuGenerate finden. Der API-Schlüssel ist für die sichere Kommunikation zwischen Make und DocuGenerate unerlässlich.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-add-http.png" alt="HTTP-Modul in Make hinzufügen"/></p> <p>Wählen Sie zuerst die Option <strong>Make an API Key Auth request</strong>. Dadurch wird eine HTTPS-Anfrage an eine bestimmte URL gesendet, die API-Key-Auth-Autorisierung erfordert.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-api-key-auth-request.png" alt="API Key Auth-Anfrage erstellen"/></p> <p>Klicken Sie dann auf <strong>Create a keychain</strong> im Bereich <strong>Credentials</strong>, um einen neuen Keychain hinzuzufügen.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-create-keychain.png" alt="Keychain erstellen"/></p> <p>Geben Sie dem neuen Keychain einen <strong>Namen</strong>, z. B. <code class="language-plaintext highlighter-rouge">DocuGenerate API Key</code>. Als <strong>Key</strong>-Wert geben Sie Ihren API-Schlüssel ein, den Sie auf der <a href="https://www.docugenerate.com/de/hilfe/articles/wo-finde-ich-meinen-api-schluessel/">Einstellungsseite</a> von DocuGenerate finden. Für <strong>API Key placement</strong> können Sie den Standardwert <code class="language-plaintext highlighter-rouge">In the header</code> beibehalten. Als <strong>API Key parameter name</strong> geben Sie <code class="language-plaintext highlighter-rouge">Authorization</code> ein, wie auf der <a href="https://api.docugenerate.com/" target="_blank">API-Referenz</a> angegeben.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-api-key.png" alt="Dialog für neuen Keychain"/></p> <p>Nach der Konfiguration des <strong>Credentials</strong>-Bereichs geben Sie den API-Endpunkt an:<br/> 1. <strong>URL</strong> = <code class="language-plaintext highlighter-rouge">https://api.docugenerate.com/v1/document</code><br/> 2. <strong>Method</strong> = <code class="language-plaintext highlighter-rouge">POST</code><br/> 3. <strong>Body type</strong> = <code class="language-plaintext highlighter-rouge">Multipart/form-data</code></p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-api-call.png" alt="HTTP-Endpunkt-Konfiguration"/></p> <p>Als nächstes konfigurieren Sie die Felder für die HTTP-Anfrage. Die vollständige Liste der möglichen Parameter für den Endpunkt <strong>Create Document</strong> finden Sie auf der <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">API-Referenz</a>-Seite. Für dieses Tutorial verwenden wir nur die Parameter <strong>template_id</strong>, <strong>output_format</strong> und <strong>data</strong>.</p> <p>Für das Feld <strong>template_id</strong> geben Sie die ID der im Abschnitt <a href="#die-berichtsvorlage-erstellen">Berichtsvorlage erstellen</a> erstellten Vorlage ein. Für <strong>output_format</strong> verwenden wir <code class="language-plaintext highlighter-rouge">.pdf</code>, aber auch <code class="language-plaintext highlighter-rouge">.docx</code>, <code class="language-plaintext highlighter-rouge">.doc</code>, <code class="language-plaintext highlighter-rouge">.odt</code> oder <code class="language-plaintext highlighter-rouge">.txt</code> sind möglich.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-template-id.png" alt="template_id und output_format konfigurieren"/></p> <p>Als nächstes konfigurieren wir das <strong>data</strong>-Feld für die HTTP-Anfrage. Diese Daten werden für den Seriendruck verwendet und generieren Dokumente auf Basis der Vorlage. Das erwartete Format ist ein Array von JSON-Objekten, und für jedes Objekt im Array wird ein Dokument generiert, indem die Tags der Vorlage durch die Werte des Objekts ersetzt werden.</p> <p>Um das erwartete Format des JSON-Objekts zu erhalten, können Sie <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-json-daten-generieren/">Dokumente aus JSON-Daten generieren</a> in der Web-App ausprobieren und das vorausgefüllte JSON mit leeren Werten kopieren. Fügen Sie es dann in Make als Wert für das data-Feld ein.</p> <p>Danach ordnen Sie die Felder aus der Tally-Antwort den entsprechenden Schlüsseln im JSON-Objekt zu. Setzen Sie Ihren Cursor in den Wert <strong>”“</strong>, den Sie mit einem Formularfeld füllen möchten, und klicken Sie dann auf eines der rosa Felder im linken Panel. Stellen Sie sicher, dass die Tally-Felder in Anführungszeichen eingeschlossen sind, wie in <strong>”{{1.fields.City}}“</strong>, da sonst der Daten-Payload nicht korrekt formatiert wird und der Aufruf zur Dokumentengenerierung einen <code class="language-plaintext highlighter-rouge">400</code>-Fehlerstatuscode zurückgibt.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-field-mapping.gif" alt="Das data-Feld konfigurieren"/></p> <p>So sollte der data-Wert nach der Zuordnung aller Felder zu den entsprechenden JSON-Werten aussehen. Make ermöglicht die <strong>Zuordnung der Formularfelder</strong> zu den entsprechenden Zusammenführungs-Tag-Werten im Daten-Payload, sodass das generierte Dokument die Formulareingaben korrekt widerspiegelt.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-data.png" alt="Datenwerte mit dem JSON zugeordnet"/></p> <h2 id="das-szenario-ende-zu-ende-ausfuehren">Das Szenario Ende-zu-Ende Ausführen</h2> <p>Sobald sowohl Tally als auch das HTTP-Modul im Make-Szenario eingerichtet sind, können Sie die <strong>Szenario-Planung aktivieren</strong>. Diese Planung stellt sicher, dass der Workflow automatisch ausgeführt wird, sobald neue Formulardaten eingehen. Das Szenario kann um weitere Schritte erweitert werden, z. B. das Versenden einer E-Mail mit dem generierten Dokument als Anhang, aber für dieses Tutorial beschränken wir das Szenario auf diese 2 Aktionen.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-scheduling.png" alt="Make-Planung"/></p> <p>Um den Workflow zu testen, füllen Sie das <a href="https://tally.so/r/n99oAQ" target="_blank" rel="nofollow noopener">Tally-Formular</a> mit relevanten Informationen aus. Das Formular hat 2 Seiten, die nacheinander angezeigt werden, aber das folgende Bild zeigt beide Seiten zusammen, damit Sie die Formularwerte leichter überblicken können.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-form-submission-example.png" alt="Beispiel einer Tally-Formular-Einsendung"/></p> <p>Im folgenden Video sehen Sie, wie ein neues Dokument <strong>automatisch in DocuGenerate erscheint</strong>, nachdem das Formular abgesendet wurde. Sie können auf <strong>View</strong> klicken, um das Dokument anzuzeigen und zu überprüfen, dass es die im Formular eingegebenen Werte enthält:</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/docugenerate-new-document.gif" alt="DocuGenerate neues Dokument"/></p> <p>Nach der Einsendung generiert die Integration zwischen Tally, Make und DocuGenerate nahtlos den <strong>Verkaufsgesprächsbericht</strong>. Dieser Bericht enthält die im Formular eingegebenen Daten, die die Zusammenführungs-Tags in der Vorlage ersetzen, wie Sie im generierten PDF sehen können.</p> <object data="/assets/posts/006-make-tally-sales-call-report/Sales Call Report.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="fazit">Fazit</h2> <p>In diesem Artikel haben wir einen leistungsstarken Workflow erkundet, der die Fähigkeiten von Tally, Make und DocuGenerate nutzt. Durch die Schaffung eines <strong>optimierten Prozesses zur Berichtsgenerierung</strong> auf Basis von Formular-Einsendungen können Sie Zeit sparen, Fehler reduzieren und eine konsistente Berichtsqualität sicherstellen.</p> <p>Die Integration dieser Tools eröffnet neue Möglichkeiten zur Automatisierung verschiedener Aufgaben und zur Steigerung der Effizienz Ihres Unternehmens. Ob Sie ein Vertriebsteam sind, das seine Berichterstellung optimieren möchte, oder ein Unternehmen, das repetitive Prozesse automatisieren möchte – dieser Workflow zeigt das Potenzial von <strong>No-Code-Lösungen</strong> in der heutigen technologiegetriebenen Welt.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Das <a href="https://tally.so/r/n99oAQ" target="_blank" rel="nofollow noopener">Tally-Formular</a> zum Testen dieses Workflows.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.docx">Verkaufsgesprächsbericht</a>-Vorlage aus diesem Tutorial.</li> <li>Ein Beispiel eines generierten <a href="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.pdf" target="_blank">PDF-Berichts</a>.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Reports"/> <category term="Make"/> <category term="No-Code"/> <summary type="html"><![CDATA[Entdecken Sie, wie Tally, Make und DocuGenerate die Berichtsgenerierung auf Basis von Formular-Einsendungen automatisieren und so die Workflow-Effizienz und -Genauigkeit verbessern. Erkunden Sie die nahtlose Integration dieser Tools zur Optimierung Ihres PDF-Generierungsprozesses.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/cover-image-v3.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/cover-image-v3.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Teilnahmezertifikate mit Profilbildern Personalisieren</title> <link href="https://www.docugenerate.com/de/blog/teilnahmezertifikate-mit-profilbildern-personalisieren/" rel="alternate" type="text/html" title="Teilnahmezertifikate mit Profilbildern Personalisieren"/> <published>2024-02-02T00:00:00+00:00</published> <updated>2024-02-02T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/teilnahmezertifikate-mit-profilbildern-personalisieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/teilnahmezertifikate-mit-profilbildern-personalisieren/"><![CDATA[<h2 id="was-ist-ein-teilnahmezertifikat">Was ist ein Teilnahmezertifikat?</h2> <p>Teilnahmezertifikate nehmen einen wichtigen Platz in der Welt der Anerkennung und Wertschätzung ein. Sie sind greifbare Zeichen der Würdigung, die die aktive Beteiligung einer Person an verschiedenen Veranstaltungen und Aktivitäten würdigen. Ein Anlass, der häufig die Ausgabe solcher Zertifikate rechtfertigt, ist der <strong>jährliche Team-Building-Tag</strong>. Dieser besondere Anlass bringt Mitarbeiter in einer Atmosphäre der Kameradschaft und Kompetenzentwicklung zusammen und fördert ein Gefühl der Einheit.</p> <p>Im digitalen Zeitalter, in dem Personalisierung zu einem Markenzeichen ansprechender Erlebnisse geworden ist, verleiht die Einbeziehung von <strong>Profilbildern</strong> der Mitarbeiter in Teilnahmezertifikate eine innovative und bedeutungsvolle Note. Im Gegensatz zu generischen Zertifikaten sprechen personalisierte Zertifikate mit individuellen Profilbildern auf einer tieferen Ebene an. Sie feiern nicht nur die Anwesenheit, sondern auch den einzigartigen Beitrag jedes Einzelnen. Dadurch wird eine routinemäßige Verwaltungsaufgabe in eine durchdachte Geste der Anerkennung verwandelt.</p> <h2 id="die-perfekte-vorlage-erstellen">Die Perfekte Vorlage Erstellen</h2> <p>Für diese Personalisierung ist eine gut gestaltete Zertifikatvorlage unerlässlich. Diese Vorlage dient als Leinwand, auf die die Profilbilder nahtlos integriert werden. Mit dynamischen <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> wie <code class="language-plaintext highlighter-rouge">{Company Name}</code>, <code class="language-plaintext highlighter-rouge">{Name}</code>, <code class="language-plaintext highlighter-rouge">{Date}</code> und <code class="language-plaintext highlighter-rouge">{%Photo}</code> kann die Vorlage angepasst werden, um den Namen und das Profilbild des jeweiligen Mitarbeiters anzuzeigen. Das Ergebnis ist ein optisch ansprechendes Zertifikat, das sowohl das Wesen der Veranstaltung als auch die Rolle des Einzelnen widerspiegelt.</p> <p>Zum Einfügen des Profilbilds wird das Tag <code class="language-plaintext highlighter-rouge">{%Photo}</code> verwendet, wie im Artikel <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bilder-zu-einer-vorlage-hinzu/">Wie füge ich Bilder zu einer Vorlage hinzu</a> beschrieben. Das Bild muss im Base64-Format kodiert sein, und die unterstützten Bildformate sind PNG, JPG und SVG.</p> <p>So sieht die <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation.docx">Teilnahmezertifikat</a>-Vorlage aus. Sie können sie herunterladen und selbst ausprobieren:</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation.png" alt="Teilnahmezertifikat"/></p> <h2 id="bilder-als-base64-kodieren">Bilder als Base64 Kodieren</h2> <p>Die Integration von Base64-kodierten Bildern bietet einen noch dynamischeren und effizienteren Ansatz. Die Base64-Kodierung wandelt Bilder in Textzeichenfolgen um, wodurch externe Bilddateien überflüssig werden, ohne dabei die visuelle Qualität zu beeinträchtigen.</p> <p>Online-Tools wie <a href="https://www.base64-image.de/" target="_blank" rel="nofollow noopener">Base64 Image Encoder</a> vereinfachen diesen Konvertierungsprozess. So verwenden Sie dieses kostenlose Tool, um ein Bild in Base64 zu konvertieren und den kodierten Wert in die Zwischenablage zu kopieren:</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/base64-image.gif" alt="Base64-Konvertierungsdemonstration"/></p> <p>Darüber hinaus können Entwickler Programmiersprachen wie Python für eine programmatische Konvertierung nutzen:</p> <div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">import</span> <span class="n">base64</span>

<span class="k">with</span> <span class="nf">open</span><span class="p">(</span><span class="sh">"</span><span class="s">profile_picture.jpg</span><span class="sh">"</span><span class="p">,</span> <span class="sh">"</span><span class="s">rb</span><span class="sh">"</span><span class="p">)</span> <span class="k">as</span> <span class="n">image_file</span><span class="p">:</span>
    <span class="n">base64_image</span> <span class="o">=</span> <span class="n">base64</span><span class="p">.</span><span class="nf">b64encode</span><span class="p">(</span><span class="n">image_file</span><span class="p">.</span><span class="nf">read</span><span class="p">()).</span><span class="nf">decode</span><span class="p">(</span><span class="sh">"</span><span class="s">utf-8</span><span class="sh">"</span><span class="p">)</span>
</code></pre></div></div> <p>Dieser Ansatz vereinfacht den Zertifikatgenerierungsprozess und stellt sicher, dass jedes Zertifikat eigenständig und leicht teilbar ist.</p> <h2 id="zertifikat-fuer-eine-person-testen">Testen Sie das Zertifikat für Eine Person</h2> <p>Vor der Generierung von Zertifikaten für alle Teilnehmer empfiehlt es sich, ein Testzertifikat zu erstellen, um das Endergebnis zu visualisieren. Die intuitive Web-App von DocuGenerate vereinfacht diesen Prozess: Sie können die Daten durch <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-durch-ausfuellen-eines-formulars-generieren/">Ausfüllen eines Formulars</a> eingeben, wobei jedes Eingabefeld einem Tag in Ihrer Vorlage entspricht. Für das Feld <code class="language-plaintext highlighter-rouge">Photo</code> können Sie einfach den im <a href="#bilder-als-base64-kodieren">vorherigen Schritt</a> kopierten Base64-kodierten Wert einfügen.</p> <p>Ein Testlauf bestätigt nicht nur die Korrektheit des Zertifikats, sondern bietet auch eine Vorschau der personalisierten Note, die jeder Teilnehmer erhalten wird.</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/one-certificate.gif" alt="Teilnahmezertifikat mit Profilbild für eine Person"/></p> <h2 id="zertifikate-fuer-alle-teilnehmer-generieren">Zertifikate für Alle Teilnehmer Generieren</h2> <p>Bei Veranstaltungen mit mehreren Teilnehmern kann die manuelle Erstellung von Zertifikaten zeitaufwendig sein. Hier zeigt sich die wahre <strong>Kraft der Automatisierung</strong>. Durch die Nutzung von JSON-Daten können Zertifikate für alle Teilnehmer <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-json-daten-generieren/">in einem Durchgang generiert</a> werden. Dieser Ansatz gewährleistet Konsistenz, Genauigkeit und Effizienz bei der Erstellung eines personalisierten Zertifikats für jeden Teilnehmer.</p> <p>Den <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/certificate-data.json" target="_blank">JSON-Datensatz</a> für die Generierung aller Zertifikate können Sie erkunden. Bitte beachten Sie, dass der JSON-Schlüssel für das Tag <code class="language-plaintext highlighter-rouge">{%Photo}</code> <code class="language-plaintext highlighter-rouge">"Photo"</code> und nicht <code class="language-plaintext highlighter-rouge">"%Photo"</code> ist, da das Zeichen <code class="language-plaintext highlighter-rouge">%</code> nicht enthalten sein darf.</p> <p>Hier ist eine Demo, wie Sie die Web-App von DocuGenerate verwenden können, um alle Zertifikate auf einmal zu generieren. In diesem Beispiel wird eine <a href="https://www.docugenerate.com/de/hilfe/articles/generierte-dokumente-in-einer-einzelnen-datei-zusammenfuehren/">einzelne PDF-Datei</a> mit allen Zertifikaten generiert, aber Sie können in den Zusammenführungsoptionen auch wählen, eine <a href="https://www.docugenerate.com/de/hilfe/articles/separate-dokumente-fuer-jedes-datenelement-generieren/">separate PDF-Datei</a> für jeden Teilnehmer zu generieren.</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/many-certificates.gif" alt="Teilnahmezertifikat mit Profilbild für mehrere Personen"/></p> <p>Das Ergebnis ist ein <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation Generated.pdf" target="_blank">PDF-Dokument</a>, das den Geist der Veranstaltung und die Beiträge jedes Teilnehmers verkörpert. Diese generierten PDF-Zertifikate bieten eine professionelle Präsentation, die zur Verteilung und Ausstellung bereit ist.</p> <object data="/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation Generated.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="fazit">Fazit</h2> <p>Die Integration von Profilbildern in Teilnahmezertifikate durch Tools wie DocuGenerate bedeutet einen Paradigmenwechsel in der Art und Weise, wie Anerkennung und Wertschätzung ausgedrückt werden. Jenseits der traditionellen Vorstellung von Zertifikaten liegt eine Leinwand für die Personalisierung, auf der die Identität des Einzelnen in das Zertifikat eingewoben wird.</p> <p>Diese Verbindung von Technologie, Anerkennung und persönlicher Note dient als Katalysator für Motivation und fördert ein stärkeres Zugehörigkeitsgefühl am Arbeitsplatz. Da Organisationen ihre Ansätze zur Mitarbeiterbindung weiterentwickeln, stehen personalisierte Teilnahmezertifikate als Beweis für die Kraft, jeden individuellen Beitrag anzuerkennen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Das <a href="https://www.base64-image.de/" target="_blank" rel="nofollow noopener">Base64 Image Encoder</a>-Tool für die Konvertierung von Bildern in Base64.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation.docx">Teilnahmezertifikat</a>-Vorlage aus diesem Artikel.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/certificate-data.json" target="_blank">JSON-Beispieldaten</a> für die Generierung aller Zertifikate.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation Generated.pdf" target="_blank">PDF-Zertifikate</a> aus den Beispieldaten generiert.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Certificates"/> <category term="Images"/> <category term="Base64"/> <summary type="html"><![CDATA[Teilnahmezertifikate für Veranstaltungen wie den jährlichen Team-Building-Tag lassen sich mit Profilbildern persönlicher gestalten. Nutzen Sie die Kraft der Automatisierung, um Zertifikate aus einer dynamischen Vorlage und Base64-kodierten Bildern effizient zu generieren.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">Arbeitsverträge mit Variablen Klauseln Erstellen</title> <link href="https://www.docugenerate.com/de/blog/arbeitsvertraege-mit-variablen-klauseln-erstellen/" rel="alternate" type="text/html" title="Arbeitsverträge mit Variablen Klauseln Erstellen"/> <published>2024-01-30T00:00:00+00:00</published> <updated>2024-01-30T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/arbeitsvertraege-mit-variablen-klauseln-erstellen</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/arbeitsvertraege-mit-variablen-klauseln-erstellen/"><![CDATA[<h2 id="was-ist-ein-arbeitsvertrag">Was ist ein Arbeitsvertrag?</h2> <p>Ein <strong>Arbeitsvertrag</strong> ist ein rechtlich bindendes Dokument, das die Beschäftigungsbedingungen zwischen einem Arbeitgeber und einem Arbeitnehmer festlegt. Er beschreibt die Rechte, Verantwortlichkeiten und Pflichten beider Parteien und bildet den Rahmen für das Arbeitsverhältnis. Arbeitsverträge decken in der Regel <strong>wesentliche Aspekte</strong> wie Berufsbezeichnung, Aufgaben und Verantwortlichkeiten, Vergütung, Arbeitszeiten, Leistungen, Kündigungsregelungen und Vertraulichkeitsanforderungen ab.</p> <p>Diese Vereinbarungen bilden die Grundlage des Arbeitsverhältnisses, bieten Klarheit und Schutz für beide Parteien und helfen dabei, Erwartungen, Rechte und Pflichten festzulegen, sodass beide Parteien ihre Rollen und Verantwortlichkeiten verstehen. Arbeitsverträge spielen auch eine entscheidende Rolle beim <strong>Schutz der Interessen von Arbeitgebern</strong>, da sie Bestimmungen zu Geheimhaltung, Wettbewerbsverboten und geistigen Eigentumsrechten enthalten können.</p> <p>Neben <strong>rechtlichen und praktischen Überlegungen</strong> können Arbeitsverträge ein positives Arbeitsumfeld fördern, indem sie klare Kommunikation unterstützen, Erwartungen setzen und Missverständnisse vermeiden. Sie bieten einen umfassenden schriftlichen Nachweis der vereinbarten Bedingungen, der bei der Beilegung von Streitigkeiten und Meinungsverschiedenheiten helfen kann, die im Laufe des Arbeitsverhältnisses entstehen können.</p> <h2 id="einen-arbeitsvertrag-ausarbeiten">Einen Arbeitsvertrag Ausarbeiten</h2> <p>Bei der Ausarbeitung von <strong>Arbeitsverträgen</strong> ist eine der schwierigsten Aufgaben die Erstellung einer Vorlage, die <strong>variable Klauseln</strong> berücksichtigen kann. Herkömmliche Vorlagen erfordern oft manuelles Bearbeiten für jeden Vertrag, was zeitaufwendig und fehleranfällig sein kann.</p> <p>Mit dem Einsatz dynamischer Bedingungen ist es jedoch möglich, flexible Vorlagen zu erstellen, die individuelle Arbeitsverträge effizient generieren können. In diesem Artikel erläutern wir den Prozess der Erstellung von Arbeitsverträgen mit variablen Klauseln und wie dieser Ansatz den Dokumentenerstellungsprozess optimieren kann.</p> <h2 id="vorlage-mit-zusammenfuehrungs-tags-erstellen">Eine Vorlage mit Zusammenführungs-Tags Erstellen</h2> <p>Das Erstellen einer Vorlage für einen Arbeitsvertrag beinhaltet das Hinzufügen von <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a>, die beim Generieren des endgültigen Dokuments durch tatsächliche Daten ersetzt werden. Die erste Version der Vorlage enthält Zusammenführungs-Tags wie <code class="language-plaintext highlighter-rouge">[employee_name]</code>, <code class="language-plaintext highlighter-rouge">[employer_name]</code>, <code class="language-plaintext highlighter-rouge">[job_title]</code> und andere.</p> <p>Um diese Zusammenführungs-Tags beim Testen leicht erkennbar zu machen, sind sie in der Vorlage und den generierten Dokumenten gelb hervorgehoben. Es wird jedoch empfohlen, die Hervorhebung zu entfernen, sobald die Vorlage validiert wurde und einsatzbereit ist.</p> <p>Variable Klauseln in der Vorlage werden durch <strong>Kontrollkästchen</strong> gehandhabt. Beim Ausfüllen der Vorlage kann die für die Dateneingabe verantwortliche Person das entsprechende Kontrollkästchen aktivieren, um die gewünschte Option auszuwählen. Wenn nur eine Option gewählt werden soll, ist in der Vorlage der Hinweis <code class="language-plaintext highlighter-rouge">(Check one)</code> enthalten.</p> <p>Dieser Ansatz führt jedoch dazu, dass das endgültige Dokument <strong>länger als nötig</strong> ist, da alle möglichen Optionen für jede Klausel enthalten sind. Außerdem kann es aus Datenschutzgründen mehr Informationen offenbaren als erforderlich, da Mitarbeiter möglicherweise nichts von bestimmten Klauseln wissen müssen, die existieren könnten.</p> <p>Die erste Version der Vorlage mit Platzhaltern und Kontrollkästchen können Sie unten anzeigen oder <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Checkboxes.docx">herunterladen</a>, um sie im Detail zu untersuchen.</p> <object data="/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Checkboxes.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="bedingungen-und-logische-ausdruecke-hinzufuegen">Bedingungen und Logische Ausdrücke Hinzufügen</h2> <p>Eine Vorlage mit mehreren Optionen für jede Klausel ist eine gute Lösung, aber noch besser ist die Verwendung von <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-bedingungen-zu-einer-vorlage-hinzu/">dynamischen Bedingungen</a> und <a href="https://www.docugenerate.com/de/hilfe/articles/mehr-moeglichkeiten-mit-erweiterter-syntax/">erweiterter Syntax</a> in der Vorlage. Diese Techniken ermöglichen die Einbeziehung von Bedingungen, Negationen und logischen Ausdrücken, die steuern, welche Klauseln im endgültigen Dokument enthalten sein sollen, anstatt Kontrollkästchen zu verwenden.</p> <p>Wie in der <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.docx">aktualisierten Vorlage</a> unten zu sehen, sind die Bedingungen grün hervorgehoben, um sie in der Vorlage zu unterscheiden. Bei der Dokumentengenerierung werden die Bedingungen ausgewertet und die entsprechenden Abschnitte im Endergebnis entweder angezeigt oder nicht. Die Bedingungs-Tags erscheinen natürlich nicht im generierten Dokument und sorgen so für ein sauberes und professionelles Ergebnis.</p> <p>Einfachere Bedingungen und Negationen wie <code class="language-plaintext highlighter-rouge">[#full_time]</code><strong>Vollzeit</strong><code class="language-plaintext highlighter-rouge">[/][^full_time]</code><strong>Teilzeit</strong><code class="language-plaintext highlighter-rouge">[/]</code> können standardmäßig in jeder Vorlage verwendet werden. Um jedoch Ausdrücke wie <code class="language-plaintext highlighter-rouge">[#payments_per_month == 1]</code> zu verwenden, muss die <strong>erweiterte Syntax</strong> <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktiviere-ich-die-erweiterte-syntax/">aktiviert</a> werden. Dadurch ist es auch möglich, die „Punkt-Notation” in der Vorlage zu verwenden, um auf Objekteigenschaften wie <code class="language-plaintext highlighter-rouge">[#non_compete.option1]</code> und <code class="language-plaintext highlighter-rouge">[#non_compete.option2]</code> zu verweisen.</p> <p>Bitte beachten Sie abschließend, dass Sie, da die erweiterte Syntax für diese Vorlage aktiviert ist, bemerken werden, dass Zusammenführungs-Tags keine Leerzeichen enthalten. Es ist wichtig sicherzustellen, dass keine Leerzeichen in den Zusammenführungs-Tags vorhanden sind, da dies die ordnungsgemäße Funktionsweise des Dokumentengenerierungsprozesses beeinträchtigen könnte.</p> <object data="/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="datensatz-an-die-vorlage-anpassen">Den Datensatz an die Vorlage Anpassen</h2> <p>Für dynamische Arbeitsverträge sind Daten erforderlich, die Objektnotation unterstützen. <strong>JSON</strong> (JavaScript Object Notation) ist ein geeignetes Format – es ist ein leichtgewichtiges Datenaustauschformat, das eine strukturierte Datenrepräsentation ermöglicht.</p> <p>Im Gegensatz zu Excel-Daten, die auf einem tabellarischen Format basieren, bietet JSON eine hierarchische Struktur, die gut zu den variablen Klauseln in Arbeitsverträgen passt. Diese hierarchische Struktur ermöglicht eine bessere Organisation und Darstellung der Daten und erleichtert die Handhabung und Verwaltung der Variablen im Vertrag.</p> <p>Um die Organisation und Übersichtlichkeit der JSON-Daten weiter zu verbessern, können Variablen durch <strong>Objekte gruppiert</strong> werden. Die Gruppierung ähnlicher Variablen unter relevanten Objektnamen verbessert die Lesbarkeit und Wartbarkeit. Beispielsweise können ausgabenbezogene Variablen unter einem <code class="language-plaintext highlighter-rouge">expenses</code>-Objekt und streitbeilegungsbezogene Variablen unter einem <code class="language-plaintext highlighter-rouge">dispute</code>-Objekt gruppiert werden. Dieser Ansatz erleichtert die Identifizierung und Verwaltung spezifischer Klauseln in der Vorlage.</p> <p>Den <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/agreement-data.json" target="_blank">JSON-Beispieldatensatz</a> können Sie erkunden, um zu sehen, wie die Klauseln und Zusammenführungs-Tags befüllt werden.</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"effective_date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"March 29th, 2023"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"employee_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Jane Smith"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"employer_name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Dream Marketing Inc."</span><span class="p">,</span><span class="w">
    </span><span class="nl">"job_title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Marketing Specialist"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"full_time"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"duties"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
      </span><span class="s2">"Developing marketing campaigns"</span><span class="p">,</span><span class="w">
      </span><span class="s2">"Managing social media accounts"</span><span class="p">,</span><span class="w">
      </span><span class="s2">"Analyzing market trends"</span><span class="w">
    </span><span class="p">],</span><span class="w">
    </span><span class="nl">"fixed_term"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
    </span><span class="nl">"start_date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"April 1st, 2023"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"end_date"</span><span class="p">:</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w">
    </span><span class="nl">"probation_period"</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w">
    </span><span class="nl">"salary_amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">4000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"salary_interval"</span><span class="p">:</span><span class="w"> </span><span class="s2">"month"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"payments_per_month"</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w">
    </span><span class="nl">"payment_day"</span><span class="p">:</span><span class="w"> </span><span class="s2">"15th"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"overtime"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"rate"</span><span class="p">:</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w">
      </span><span class="nl">"threshold"</span><span class="p">:</span><span class="w"> </span><span class="mi">40</span><span class="p">,</span><span class="w">
      </span><span class="nl">"period"</span><span class="p">:</span><span class="w"> </span><span class="s2">"week"</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="nl">"expenses"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"entertainment"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"travel"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"meals"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"phone"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"other"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Miscellaneous"</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="nl">"work_address"</span><span class="p">:</span><span class="w"> </span><span class="s2">"456 Park Avenue, Cityville, USA"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"work_hours"</span><span class="p">:</span><span class="w"> </span><span class="s2">"9 AM - 6 PM"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"work_days"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Monday to Friday"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"time_off_days"</span><span class="p">:</span><span class="w"> </span><span class="mi">20</span><span class="p">,</span><span class="w">
    </span><span class="nl">"sick_leave_days"</span><span class="p">:</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w">
    </span><span class="nl">"personal_leave_days"</span><span class="p">:</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w">
    </span><span class="nl">"other_benefits"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Health insurance, flexible spending account"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"disability_days"</span><span class="p">:</span><span class="w"> </span><span class="mi">60</span><span class="p">,</span><span class="w">
    </span><span class="nl">"disability_percentage"</span><span class="p">:</span><span class="w"> </span><span class="mi">75</span><span class="p">,</span><span class="w">
    </span><span class="nl">"non_compete_months"</span><span class="p">:</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w">
    </span><span class="nl">"non_compete"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"option1"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"option2"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"option3"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"option4"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"other"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Disclose marketing strategies, client lists, and upcoming product launches."</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="nl">"confidential_information"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
    </span><span class="nl">"employer_notice_days"</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w">
    </span><span class="nl">"employee_notice_days"</span><span class="p">:</span><span class="w"> </span><span class="mi">30</span><span class="p">,</span><span class="w">
    </span><span class="nl">"severance_amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">3000</span><span class="p">,</span><span class="w">
    </span><span class="nl">"governing_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"New York"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"dispute"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"court"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
      </span><span class="nl">"arbitration"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
      </span><span class="nl">"mediation"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
      </span><span class="nl">"mediation_arbitration"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w">
    </span><span class="p">}</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span></code></pre></div></div> <h2 id="beispiel-eines-generierten-arbeitsvertrags">Beispiel eines Generierten Arbeitsvertrags</h2> <p>Zur Veranschaulichung der besprochenen Konzepte können Sie einen <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement Generated.pdf" target="_blank">Muster-Arbeitsvertrag</a> ansehen, der auf der Vorlage mit Bedingungen und den bereitgestellten JSON-Daten basiert.</p> <object data="/assets/posts/004-dynamic-employment-agreements/Employment Agreement Generated.pdf" type="application/pdf" class="inline-pdf-blog"></object> <p>Sie können eine Vielzahl von Vertragsversionen generieren, indem Sie einfach die Dateneigenschaften ändern. Beispielsweise würde durch <code class="language-plaintext highlighter-rouge">"expenses": null</code> statt des Beispielwerts der <strong>Abschnitt 5. Ausgaben</strong> nur <em>Employee will NOT be reimbursed for out-of-pocket expenses</em> enthalten.</p> <p>Probieren Sie es selbst aus: <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">Erstellen Sie eine neue Vorlage</a> mit dem <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.docx">Vertrag mit Bedingungen</a>. Fügen Sie dann die <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/agreement-data.json" target="_blank">JSON-Daten</a> in das Dateneingabefeld ein und ändern Sie einige der Werte nach Belieben.</p> <p><img src="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/new-document.png" alt="Neues Dokument erstellen"/></p> <h2 id="fazit">Fazit</h2> <p>Die Erstellung von Arbeitsverträgen mit variablen Klauseln kann eine herausfordernde Aufgabe sein, aber mit erweiterter Syntax, dynamischen Bedingungen und JSON-Daten wird sie deutlich handhabbarer. Durch den Einsatz dieser Techniken können Organisationen den Dokumentenerstellungsprozess optimieren, die Effizienz verbessern und die Genauigkeit sowie Individualisierung von Arbeitsverträgen sicherstellen.</p> <p>Ob es sich um verschiedene Beschäftigungstypen, Vergütungsstrukturen oder Leistungspakete handelt – dynamische Vorlagen bieten die Flexibilität und Kontrolle, die für umfassende und maßgeschneiderte Verträge erforderlich sind. Dieser Ansatz ermöglicht es Unternehmen, sich auf strategische Initiativen zu konzentrieren und gleichzeitig den Verwaltungsaufwand zu reduzieren.</p> <p>Um Ihre HR-Prozesse weiter zu verbessern, sollten Sie die Integration von Tools in Betracht ziehen, die die Dokumentengenerierung ergänzen. Plattformen wie <a href="https://www.qandle.com/" target="_blank" rel="nofollow noopener">Qandle</a> bieten beispielsweise umfassende HR-Lösungen für moderne Arbeitsplätze, die alles von der Gehaltsabrechnung bis zum Mitarbeiterengagement abdecken. In Kombination mit fortschrittlicher Dokumentengenerierung können diese Tools ein effizientes Vertragsmanagement in Ihren HR-Abläufen sicherstellen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.docx">Arbeitsvertrags</a>-Vorlage mit Bedingungen und logischen Ausdrücken.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/agreement-data.json" target="_blank">JSON-Beispieldaten</a> für die Vertragsgenerierung.</li> <li>Der <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement Generated.pdf" target="_blank">PDF-Arbeitsvertrag</a> aus der Vorlage mit Bedingungen und den JSON-Daten generiert.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Contracts"/> <category term="Conditions"/> <category term="Expressions"/> <summary type="html"><![CDATA[Optimieren Sie die Dokumentenerstellung und erstellen Sie mühelos individuelle Arbeitsverträge. Entdecken Sie, wie erweiterte Syntax, dynamische Bedingungen und JSON-Daten den Prozess vereinfachen, die Effizienz verbessern und korrekte Verträge sicherstellen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">4 Möglichkeiten, Angebotsbriefe in Massen zu Generieren</title> <link href="https://www.docugenerate.com/de/blog/4-moeglichkeiten-angebotsschreiben-in-massen-zu-generieren/" rel="alternate" type="text/html" title="4 Möglichkeiten, Angebotsbriefe in Massen zu Generieren"/> <published>2024-01-15T00:00:00+00:00</published> <updated>2024-01-15T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/4-moeglichkeiten-angebotsschreiben-in-massen-zu-generieren</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/4-moeglichkeiten-angebotsschreiben-in-massen-zu-generieren/"><![CDATA[<h2 id="was-ist-ein-angebotsschreiben">Was ist ein Angebotsschreiben?</h2> <p>Ein Angebotsschreiben ist ein formelles Dokument, das ein Arbeitgeber einem Kandidaten ausstellt, der für eine Stelle ausgewählt wurde. Es enthält die Details des Stellenangebots, einschließlich der Berufsbezeichnung, des Startdatums, der Vergütung und der Leistungen. Es dient als <strong>schriftliche Vereinbarung</strong> zwischen <strong>Arbeitgeber und Kandidat</strong> und legt die Erwartungen an das Arbeitsverhältnis fest.</p> <p>Das Angebotsschreiben ist ein wichtiger Schritt im Einstellungsprozess, da es die <strong>Beschäftigungsbedingungen</strong> darlegt und sicherstellt, dass Arbeitgeber und Kandidat auf derselben Seite sind. Es bietet dem Kandidaten außerdem die Möglichkeit, die Details des Stellenangebots zu prüfen und Fragen zu stellen oder um Klarstellung zu bitten, bevor er die Stelle annimmt.</p> <p>Neben den Bedingungen des Stellenangebots kann das Schreiben auch Informationen über das Unternehmen enthalten, wie z. B. seine Mission, Werte und Kultur sowie relevante Richtlinien und Verfahren. Das Angebotsschreiben ist ein entscheidendes Dokument, das einen reibungslosen Übergang in eine neue Stelle und ein positives Arbeitsverhältnis zwischen Arbeitgeber und Mitarbeiter fördert.</p> <h2 id="die-richtige-briefvorlage-finden">Die Richtige Briefvorlage Finden</h2> <p>Es gibt verschiedene Ressourcen zum Auffinden von Vorlagen für Angebotsschreiben:</p> <ul> <li> <p><strong>Online-Vorlagenbibliotheken</strong> bieten kostenlose und kostenpflichtige Vorlagen für Angebotsschreiben. Diese Vorlagen lassen sich leicht anpassen und bieten eine Grundstruktur für professionell wirkende Angebotsschreiben.</p> </li> <li> <p><strong>HR-Websites</strong> bieten Vorlagen und Muster-Angebotsschreiben für ihre Mitglieder. Diese Vorlagen können für HR-Fachleute und Manager, die Angebotsschreiben für ihre Organisationen erstellen müssen, eine nützliche Ressource sein.</p> </li> <li> <p><strong>Rechtswebsites</strong> bieten Vorlagen und Anleitungen zur Erstellung von Angebotsschreiben, die den Arbeitsgesetzen entsprechen. Diese Vorlagen können besonders für kleine Unternehmen und Start-ups nützlich sein, die rechtskonforme Angebotsschreiben erstellen müssen.</p> </li> <li> <p><strong>Professionelle Dienstleister</strong> wie Arbeitsrechtskanzleien und HR-Beratungsunternehmen bieten Angebotsschreiben-Vorlagen als Teil ihrer Dienstleistungen an. Diese Vorlagen sind in der Regel umfassender und können Informationen zur Einhaltung der Arbeitsgesetze sowie Hinweise zur Anpassung des Schreibens an die spezifischen Bedürfnisse Ihrer Organisation enthalten.</p> </li> </ul> <p>Unabhängig von der Quelle ist es wichtig, jede Vorlage oder jedes Muster-Angebotsschreiben <strong>sorgfältig zu prüfen</strong>, bevor Sie es verwenden. Es empfiehlt sich, einen Anwalt oder HR-Fachmann zu konsultieren, um sicherzustellen, dass das Schreiben allen relevanten Arbeitsgesetzen und -vorschriften entspricht.</p> <h2 id="vorlage-hochladen">Laden Sie die Vorlage Hoch</h2> <p>Für dieses Tutorial verwenden wir eine standardmäßige <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.docx">Angebotsschreiben</a>-Vorlage mit einer einfachen Struktur, die <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tags</a> wie <code class="language-plaintext highlighter-rouge">Employee Name</code>, <code class="language-plaintext highlighter-rouge">Company Name</code>, <code class="language-plaintext highlighter-rouge">Position Title</code>, <code class="language-plaintext highlighter-rouge">Start Date</code> und einige weitere enthält. Gehen Sie in Ihrem DocuGenerate-Konto zum Bereich <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">neue Vorlage erstellen</a> und laden Sie die Briefvorlagendatei hoch. Das Ergebnis sollte wie im Bild unten aussehen.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/letter-template.png" alt="Briefvorlage mit Zusammenführungs-Tags"/></p> <p>Wenn Sie mehr darüber erfahren möchten, wie Sie einen bestehenden Brief in eine Vorlage umwandeln, lesen Sie den vorherigen Blogartikel <a href="https://www.docugenerate.com/de/blog/so-wandeln-sie-eine-bestehende-rechnung-in-eine-vorlage-um/">So Wandeln Sie eine Bestehende Rechnung in eine Vorlage Um</a> – das Prinzip ist dasselbe.</p> <h2 id="angebotsschreiben-generieren">Angebotsschreiben Generieren</h2> <p>Sobald die Vorlage eingerichtet ist, ist der nächste Schritt die Massengenerierung der Schreiben. Es gibt zwei Hauptansätze: Der erste Ansatz ist die <strong>Verwendung der Web-App</strong> zur Generierung der Schreiben über die Weboberfläche – die einfachere und direktere Option.</p> <p>Der zweite, technischere Ansatz beinhaltet die <strong>Verwendung der API</strong>. Diese Methode wird typischerweise von Organisationen mit fortgeschritteneren technischen Anforderungen und dem Bedarf nach mehr Anpassung und Automatisierung verwendet. Die API ermöglicht die Integration des Angebotsschreiben-Generierungsprozesses in bestehende Systeme, was die Massengenerierung erleichtert und den Einstellungsprozess optimiert.</p> <p>Für jeden Ansatz kommen die <strong>Daten</strong> für die Generierung der Schreiben aus 2 verschiedenen Quellen (einer <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">Excel-Datei</a> und einem <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">JSON-Objekt</a>), sodass sich insgesamt 4 Wege zur Generierung der Schreiben ergeben. <strong>Los geht’s!</strong></p> <h3 id="web-app-und-excel-daten">1. Mit der <strong>Web-App</strong> &amp; <strong>Excel</strong>-Daten</h3> <p>Zunächst generieren wir die Angebotsschreiben über die Web-App mit der <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">Excel-Datei</a> als Datenquelle. Klicken Sie auf <code class="language-plaintext highlighter-rouge">New document</code> und wählen Sie dann die Option <code class="language-plaintext highlighter-rouge">Excel or CSV file</code>. Mehr über das Generieren von Dokumenten mit Excel-Daten erfahren Sie in <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-einer-excel-oder-csv-datei-generieren/">diesem Artikel</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-excel-data-source.png" alt="Excel-Datenquelle auswählen" class="desktop-width-50"/></p> <p>Für jede ausgewählte Zeile in der Excel-Datei wird ein PDF-Dokument aus der Vorlage generiert, indem die Zusammenführungs-Tags durch die tatsächlichen Daten ersetzt werden. Standardmäßig werden alle Zeilen der Excel-Datei zur Generierung verwendet. Sie können aber auch auswählen, welche Zeilen verwendet werden sollen, indem Sie auf sie klicken – ausgewählte Zeilen werden gelb hervorgehoben. Wenn Sie <strong>schnell eine Vorschau</strong> des Schreibens sehen möchten, können Sie <strong>eine Zeile auswählen</strong>, wie im folgenden Video:</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-excel-data.gif" alt="PDF-Brief aus Angebotsschreiben-Vorlage und Excel-Daten generieren"/></p> <p><strong>Wichtig</strong>: Damit die Dokumente korrekt generiert werden, müssen die <strong>Spaltennamen</strong> in der Excel-Datei genau den <strong>Zusammenführungs-Tags</strong> der Vorlage entsprechen: <code class="language-plaintext highlighter-rouge">Employee Name</code>, <code class="language-plaintext highlighter-rouge">Company Name</code>, <code class="language-plaintext highlighter-rouge">Position Title</code>, <code class="language-plaintext highlighter-rouge">Start Date</code> usw. Sie können die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter (Excel data).pdf" target="_blank">generierten Schreiben herunterladen</a>, um das Endergebnis zu sehen.</p> <h3 id="web-app-und-json-daten">2. Mit der <strong>Web-App</strong> &amp; <strong>JSON</strong>-Daten</h3> <p>Als nächstes generieren wir die Angebotsschreiben über die Web-App mit <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">JSON-Daten</a>. Klicken Sie auf <code class="language-plaintext highlighter-rouge">New document</code> und wählen Sie dann die Option <code class="language-plaintext highlighter-rouge">JSON data</code>. Mehr über das Generieren von Dokumenten mit JSON erfahren Sie in <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-json-daten-generieren/">diesem Artikel</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-json-data-source.png" alt="JSON-Datenquelle auswählen" class="desktop-width-50"/></p> <p>Öffnen Sie die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">JSON-Datei</a> und kopieren Sie den Inhalt, oder kopieren Sie ihn direkt aus dem Textfeld unten. Wie Sie sehen, enthält der JSON-Wert das Äquivalent der Excel-Datei, aber anstelle von Zeilen haben wir eine Liste von Objekten, die die Daten darstellen. Wie bei den Spaltennamen in der Excel-Datei müssen die <strong>JSON-Schlüssel</strong> genau den <strong>Zusammenführungs-Tags</strong> der Vorlage entsprechen: <code class="language-plaintext highlighter-rouge">Employee Name</code>, <code class="language-plaintext highlighter-rouge">Company Name</code>, <code class="language-plaintext highlighter-rouge">Position Title</code>, <code class="language-plaintext highlighter-rouge">Start Date</code> usw.</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Gerhardt Le Teve"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Dynabox"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Engineer III"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"5/4/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Ripley Radin"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$49790.29"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$3184.79"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$3394.85"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">43581</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"4/29/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Cally Pollak"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Analog Circuit Design manager"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Jobi Bertson"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Twinte"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Geologist II"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"4/20/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Maxi Poge"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$17782.46"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$4254.18"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$2543.53"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">27069</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"12/18/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Laurene Coldbathe"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Senior Financial Analyst"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Mitchell Brettel"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Kazu"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"VP Accounting"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"4/28/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Paolo Egerton"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$56473.97"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$4753.14"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$3355.65"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">32523</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"4/11/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Laurence Glabach"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Environmental Specialist"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Terrye Barrs"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Twitterwire"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Senior Sales Associate"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"1/11/2023"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Deina Campana"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$2850.24"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$6657.63"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$2666.43"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">32831</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"3/26/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Ginevra Stelfox"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Desktop Support Technician"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Orbadiah Seear"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Zoozzy"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Technical Writer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"6/7/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Filia Boutcher"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$9147.02"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$410.52"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$9620.76"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">49604</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"10/10/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Tressa Lewendon"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Quality Engineer"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Kaja Kubek"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Kamba"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Software Engineer IV"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"1/7/2023"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Siobhan Rossi"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$57442.88"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$4211.76"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$556.41"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">20061</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"3/12/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Phillipp Cromarty"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Technical Writer"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Sherry Slowly"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Roodel"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Web Designer III"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"12/7/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Ranique Stockdale"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$52731.84"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$454.63"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$8856.27"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">49158</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"4/1/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Vernen Hedaux"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Software Consultant"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Maje McElrea"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Eazzy"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Senior Quality Engineer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"11/6/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Mabel Alvis"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$93416.00"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$5614.70"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$1808.73"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">23205</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"5/29/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Normie Mariaud"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Staff Scientist"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Babs Vsanelli"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Blogtags"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Food Chemist"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"7/9/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Hertha Jancik"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$94107.02"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$2421.30"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$8328.46"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">32179</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"9/14/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Stearn Dominec"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Marketing Assistant"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Justina Halbord"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"InnoZ"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Chief Design Engineer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"7/9/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Tandie Goffe"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$97200.78"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$3011.41"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$9805.45"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">33500</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"6/3/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Michal Paling"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Account Representative III"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Mark Dunstall"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Zoonder"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Programmer Analyst IV"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"9/26/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Jennine Lilford"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$73016.76"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$1984.14"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$1870.99"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">13785</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"2/28/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Amble Giller"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Desktop Support Technician"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Delmar O'Rodane"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Trudeo"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Human Resources Manager"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"6/5/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Klemens Drover"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$62596.21"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$414.20"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$7814.08"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">33729</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"7/13/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Shepard Skillen"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Software Engineer III"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Christophorus Breyt"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Skinte"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Structural Analysis Engineer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"1/12/2023"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Cori Cattemull"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$23244.42"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$8168.93"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$3392.79"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">37771</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"7/12/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Tim Bulstrode"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Nurse"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Ginelle Reams"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Demizz"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Recruiter"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"4/30/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Bartram Whitlaw"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$43442.37"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$1202.09"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$8469.55"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">31971</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"9/14/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Dusty Haisell"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Programmer Analyst III"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Doralynn Korlat"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Topiclounge"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Senior Developer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"12/24/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Dacy McGrath"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$77291.56"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$9879.53"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$7814.24"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">20870</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"3/30/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Link Coggon"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Assistant Media Planner"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Aile Rist"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Edgeclub"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Cost Accountant"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"11/26/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Evelin Rannald"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$67605.67"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$8648.40"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$636.04"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">12029</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"4/3/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Saw Custance"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Junior Executive"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Ramon Fearn"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Twiyo"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Payment Adjustment Coordinator"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"1/17/2023"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Hunfredo Brinicombe"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$96561.93"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$2201.53"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$5735.85"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">27966</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"10/7/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Kurt Ickovic"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Research Associate"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Laverna Fullalove"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Buzzster"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Civil Engineer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"10/7/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Avictor Rentalll"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$22680.40"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$9615.83"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$3511.52"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">47127</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"10/12/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Moss Priden"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Community Outreach Specialist"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Lotte Piggford"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Jaxbean"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Electrical Engineer"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"2/13/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Anjela Scone"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$88211.64"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$2298.14"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$209.56"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">39588</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"7/15/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Izabel Kynaston"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Recruiting Manager"</span><span class="p">},</span><span class="w">
</span><span class="p">{</span><span class="nl">"Employee Name"</span><span class="p">:</span><span class="s2">"Hansiain Hanmer"</span><span class="p">,</span><span class="nl">"Company Name"</span><span class="p">:</span><span class="s2">"Bluejam"</span><span class="p">,</span><span class="nl">"Position Title"</span><span class="p">:</span><span class="s2">"Project Manager"</span><span class="p">,</span><span class="nl">"Start Date"</span><span class="p">:</span><span class="s2">"3/25/2022"</span><span class="p">,</span><span class="nl">"Manager Name"</span><span class="p">:</span><span class="s2">"Nicolai Aleksich"</span><span class="p">,</span><span class="nl">"Yearly Compensation"</span><span class="p">:</span><span class="s2">"$91649.01"</span><span class="p">,</span><span class="nl">"Bonus Amount"</span><span class="p">:</span><span class="s2">"$3503.64"</span><span class="p">,</span><span class="nl">"Commision Amount"</span><span class="p">:</span><span class="s2">"$6059.65"</span><span class="p">,</span><span class="nl">"Stocks Number"</span><span class="p">:</span><span class="mi">34179</span><span class="p">,</span><span class="nl">"Expiry Date"</span><span class="p">:</span><span class="s2">"3/10/2022"</span><span class="p">,</span><span class="nl">"Name of Signatory"</span><span class="p">:</span><span class="s2">"Lukas Kenchington"</span><span class="p">,</span><span class="nl">"Title of Signatory"</span><span class="p">:</span><span class="s2">"Marketing Manager"</span><span class="p">}]</span><span class="w">
</span></code></pre></div></div> <p>Nachdem Sie die JSON-Daten kopiert haben, gehen Sie zurück zur DocuGenerate-Web-App und fügen Sie den Wert in das Feld <code class="language-plaintext highlighter-rouge">Enter a JSON array of objects</code> ein. Im Gegensatz zur <a href="#web-app-und-excel-daten">Excel-Daten</a>-Option ist es bei JSON nicht möglich auszuwählen, welche Elemente aus dem JSON-Array verwendet werden sollen – es werden <strong>alle Datenelemente</strong> zur Dokumentengenerierung verwendet.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-json-data.gif" alt="Mehrere PDF-Briefe aus Angebotsschreiben-Vorlage und JSON-Daten generieren"/></p> <p>Wenn Sie die aus den JSON-Daten generierten Angebotsschreiben ansehen möchten, können Sie die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter (JSON data).pdf" target="_blank">PDF-Datei herunterladen</a>.</p> <h3 id="api-und-excel-daten">3. Mit der <strong>API</strong> &amp; <strong>Excel</strong>-Daten</h3> <p>Für die letzten beiden Abschnitte verwenden wir die <a href="https://api.docugenerate.com/" target="_blank">DocuGenerate-API</a> zur Generierung der Angebotsschreiben. Um die Interaktion mit der API zu erleichtern, haben wir eine <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/DocuGenerate.postman_collection.json" target="_blank">Postman-Collection</a> erstellt, die Sie in Ihren <a href="https://www.postman.com/" target="_blank" rel="noopener">Postman</a>-Workspace importieren können. Nach dem Import sollten die Endpunkte <code class="language-plaintext highlighter-rouge">Template</code> und <code class="language-plaintext highlighter-rouge">Document</code> wie im folgenden Bild aufgelistet sein:</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-api-collection.png" alt="DocuGenerate API-Collection in Postman einrichten" class="desktop-width-50"/></p> <p>Als nächstes müssen Sie den Bereich <code class="language-plaintext highlighter-rouge">Authorization</code> der Postman-Collection konfigurieren, indem Sie Ihren eindeutigen API-Schlüssel eingeben, der auf der <a href="https://app.docugenerate.com/settings" target="_blank">Einstellungsseite</a> nach dem Einloggen zu finden ist. Für dieses Tutorial verwenden wir den Demo-Schlüssel <code class="language-plaintext highlighter-rouge">491c000c5fad32ed7787005b0723ad55</code>, den Sie aber durch Ihren eigenen API-Schlüssel ersetzen können.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-api-key.png" alt="DocuGenerate API-Schlüssel in Postman einrichten"/></p> <p>Öffnen Sie den Endpunkt <code class="language-plaintext highlighter-rouge">Document / Generate Document</code> aus der Postman-Collection und geben Sie den Parameter <code class="language-plaintext highlighter-rouge">template_id</code> an. Falls Sie eine Vorlage mit dem <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.docx">Angebotsschreiben</a> erstellt haben, verwenden Sie die ID dieser Vorlage. Andernfalls können Sie die Demo-Vorlagen-ID <code class="language-plaintext highlighter-rouge">ZtHBhb9jLh6TcZuaVteI</code> verwenden, die dem Demo-API-Schlüssel zugeordnet ist.</p> <p>Vergessen Sie nicht, die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">Job Offer Letter.xlsx</a> für den Parameter <code class="language-plaintext highlighter-rouge">file</code> der Anfrage auszuwählen. Der Parameter <code class="language-plaintext highlighter-rouge">output_format</code> ist optional – der Standardwert ist <code class="language-plaintext highlighter-rouge">.docx</code>, aber Sie können das Angebotsschreiben auch im Format <code class="language-plaintext highlighter-rouge">.pdf</code>, <code class="language-plaintext highlighter-rouge">.doc</code> oder <code class="language-plaintext highlighter-rouge">.odt</code> generieren, wie in der <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">API-Referenz</a> beschrieben.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-post-document-excel.png" alt="Mehrere PDF-Briefe aus Angebotsschreiben-Vorlage mit Postman und Excel-Daten generieren"/></p> <p>Im vorherigen Bild sehen Sie alle Anfrageparameter sowie die Antwort vom Server. Das Feld <code class="language-plaintext highlighter-rouge">document_uri</code> ist ein Link zur <a href="https://storage.googleapis.com/docugenerate.appspot.com/documents/GMtZRU1F7Pae3yw8oens/Job%20Offer%20Letter.pdf?GoogleAccessId=firebase-adminsdk-4i7q5%40docugenerate.iam.gserviceaccount.com&amp;Expires=1834036706&amp;Signature=akFb3v5XMR4NkjdGDEdSX04Lp3J40XQFQtuMMudTek5%2FyQWL62uh18GQemiT4pE2XlF%2FYSooNMWDczToNLQ45Eh0WCIyqlXsIfkOpD3m7yQ%2FCqYvv5kWr%2BNUyKgVsFPcBcXYdiq1u6nPSCTYgICzX9i%2F2I91mRiEY7EmQHppB9W7u8C4y%2FLinvUM3aNb34YGV%2Bn7syhjWfng%2Fogu6d%2BBAtvy5BpaU8Duk%2BMDNI4bC6N9aSkgTDadRtnWm4M9YCg2y60DXM4j%2FoYSuE5ijQyDQDrqiDUlrYHLLXr%2FHaG4x%2BkvfZQhGqoyD0dmjI80%2FakxnAOg%2BugKc1NM4LPkgLSJuQ%3D%3D" target="_blank" rel="noopener">generierten PDF-Datei</a> mit den Angebotsschreiben.</p> <h3 id="api-und-json-daten">4. Mit der <strong>API</strong> &amp; <strong>JSON</strong>-Daten</h3> <p>Schließlich ist der letzte Weg zur Generierung der Angebotsschreiben die Verwendung der API mit JSON-Daten. Die Anfrageparameter sind ähnlich wie <a href="#api-und-excel-daten">zuvor</a>, aber anstatt den Parameter <code class="language-plaintext highlighter-rouge">file</code> anzugeben, müssen Sie den Parameter <code class="language-plaintext highlighter-rouge">data</code> auswählen und die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">JSON-Daten</a> als Wert einfügen. Sehen Sie sich das folgende Video an, um zu sehen, wie das aussieht:</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-post-document-json.gif" alt="Mehrere PDF-Briefe aus Angebotsschreiben-Vorlage mit Postman über DocuGenerate API generieren"/></p> <p>Wie beim vorherigen Antwortobjekt ist das Feld <code class="language-plaintext highlighter-rouge">document_uri</code> ein Link zur <a href="https://storage.googleapis.com/docugenerate.appspot.com/documents/2GhuZ9GIDbFAl2PdEeAr/Job%20Offer%20Letter.pdf?GoogleAccessId=firebase-adminsdk-4i7q5%40docugenerate.iam.gserviceaccount.com&amp;Expires=1834037410&amp;Signature=J2Y7g%2Be3Xr7CvRTfskT3v8%2BGMS6tfFzuEDwvIPM7zH3xQGHcEekos9s7hQTDjeYbYKrJngxhVeOhAAbKhLAahZqwrKBSyuyoXhCMiwiS0Uhfpe8W9a%2BZ973OlBNnOpxZ18DxDwZPmYNq4afFKuxaaNUdYFUXE3RiG5Fs7KOJjNZ8%2FDcSHVm1%2FITzamT96SdYm6KTLNEiuS0bjYaJZ97hAT7DxG5dMRinIZQ1pkRPjXrz8U%2Fe%2BdVeCWMVps6HzONECCM4ismU26waadXiWcsqsd9qi9STAsnc7caaEQASLoZkO6Y0wJXcJao%2FBsby1P7OY2XJx%2F8NyCgzcFWscObgbw%3D%3D" target="_blank" rel="noopener">generierten PDF-Datei</a> mit den Angebotsschreiben. Weitere Informationen zu den anderen Feldern des Antwortobjekts finden Sie auf der <a href="https://api.docugenerate.com/" target="_blank">API-Referenz</a>-Seite.</p> <h2 id="fazit">Fazit</h2> <p>In diesem Artikel haben wir gezeigt, wie Angebotsschreiben in Massen aus einer vordefinierten Vorlage mit 4 verschiedenen Methoden generiert werden. Für die ersten beiden Methoden haben wir die <strong>Web-App</strong> verwendet und die Daten entweder als <strong>Excel-Datei</strong> oder als <strong>JSON-Objekt</strong> bereitgestellt. Die letzten beiden Methoden umfassten die <strong>Verwendung der API</strong> mit denselben zwei Datentypen. Dies ist eine technischere Option, bietet aber mehr Flexibilität bei Anpassung und Automatisierung.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/DocuGenerate.postman_collection.json" target="_blank">DocuGenerate API-Collection</a> für Postman.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.docx">Angebotsschreiben</a>-Vorlage aus diesem Tutorial.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">Excel-Datei</a> und die <a href="https://storage.googleapis.com/docugenerate.appspot.com/documents/GMtZRU1F7Pae3yw8oens/Job%20Offer%20Letter.pdf?GoogleAccessId=firebase-adminsdk-4i7q5%40docugenerate.iam.gserviceaccount.com&amp;Expires=1834036706&amp;Signature=akFb3v5XMR4NkjdGDEdSX04Lp3J40XQFQtuMMudTek5%2FyQWL62uh18GQemiT4pE2XlF%2FYSooNMWDczToNLQ45Eh0WCIyqlXsIfkOpD3m7yQ%2FCqYvv5kWr%2BNUyKgVsFPcBcXYdiq1u6nPSCTYgICzX9i%2F2I91mRiEY7EmQHppB9W7u8C4y%2FLinvUM3aNb34YGV%2Bn7syhjWfng%2Fogu6d%2BBAtvy5BpaU8Duk%2BMDNI4bC6N9aSkgTDadRtnWm4M9YCg2y60DXM4j%2FoYSuE5ijQyDQDrqiDUlrYHLLXr%2FHaG4x%2BkvfZQhGqoyD0dmjI80%2FakxnAOg%2BugKc1NM4LPkgLSJuQ%3D%3D" target="_blank" rel="noopener">PDF-Briefe</a> aus der Excel-Datei generiert.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">JSON-Daten</a> und die <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter (JSON data).pdf" target="_blank">PDF-Briefe</a> aus den JSON-Daten generiert.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Letters"/> <category term="API"/> <category term="Postman"/> <summary type="html"><![CDATA[Das Angebotsschreiben ist ein wichtiger Schritt im Einstellungsprozess, der die Beschäftigungsbedingungen für einen neuen Mitarbeiter festlegt. Erfahren Sie, wie Sie Angebotsschreiben in Massen aus einer vordefinierten Vorlage generieren – über unsere Web-App oder unsere einfache REST-API.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">So Wandeln Sie eine Bestehende Rechnung in eine Vorlage Um</title> <link href="https://www.docugenerate.com/de/blog/so-wandeln-sie-eine-bestehende-rechnung-in-eine-vorlage-um/" rel="alternate" type="text/html" title="So Wandeln Sie eine Bestehende Rechnung in eine Vorlage Um"/> <published>2023-12-12T00:00:00+00:00</published> <updated>2023-12-12T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/so-wandeln-sie-eine-bestehende-rechnung-in-eine-vorlage-um</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/so-wandeln-sie-eine-bestehende-rechnung-in-eine-vorlage-um/"><![CDATA[<h2 id="was-ist-eine-rechnung">Was ist eine Rechnung?</h2> <p>Eine Rechnung ist ein <strong>Dokument, das ein Verkäufer an einen Käufer sendet</strong> und die gelieferten Waren oder Dienstleistungen sowie die Gesamtkosten auflistet. Sie enthält in der Regel das Datum der Transaktion, die Rechnungsnummer, die Kontaktdaten des Kunden und eine Beschreibung der gelieferten Waren oder Dienstleistungen. Außerdem können die Menge jedes gekauften Artikels, der Stückpreis und der fällige Gesamtbetrag enthalten sein.</p> <p>Die Rechnung dient als Nachweis der Transaktion und wird häufig für Buchhaltungs- und Steuerzwecke verwendet. Sie dient auch als Zahlungsaufforderung an den Kunden. Rechnungen werden häufig im Geschäftsverkehr zwischen Unternehmen verwendet, können aber auch bei Verbrauchertransaktionen eingesetzt werden.</p> <h2 id="tools-zur-rechnungserstellung">Tools zur Rechnungserstellung</h2> <p>Es gibt viele Tools zur Rechnungserstellung, von <strong>Buchhaltungssoftware</strong> bis hin zu klassischen <strong>Textverarbeitungsprogrammen</strong>. Der manuelle Aufwand für die Rechnungserstellung variiert ebenfalls auf dieser Skala. Mit dedizierter Rechnungssoftware ist es in der Regel einfacher, da sie gebrauchsfertige Vorlagen und einen integrierten Editor bieten, mit dem Benutzer die verschiedenen Rechnungsfelder ausfüllen können. Am anderen Ende dieses Spektrums befinden sich Dokumenteneditoren wie <strong>Microsoft Word</strong> und Tabellenkalkulationseditoren wie <strong>Microsoft Excel</strong>, die die manuelle Erstellung von Rechnungen ermöglichen, aber weniger Out-of-the-Box-Automatisierung bieten.</p> <p>In der Mitte befinden sich Dokumentengeneratoren wie <strong>DocuGenerate</strong>, die Automatisierung auf bestehende Vorlagen aufsetzen können. Einige verwenden WYSIWYG-Webeditoren zum Erstellen und Bearbeiten von Vorlagen, aber bei DocuGenerate haben wir uns entschieden, reguläre <strong>Word-Dokumente</strong> als Vorlagen zu verwenden, da sie weit verbreitet sind – Sie müssen also keine neue Software erlernen – und wegen der Flexibilität und Anpassungsmöglichkeiten, die reguläre Word-Dokumente bieten. So können Sie eine bestehende Rechnung einfach in eine wiederverwendbare Vorlage umwandeln und Zeit und Aufwand bei zukünftigen Rechnungsaufgaben sparen.</p> <h2 id="die-rechnungsvorlage-erstellen">Die Rechnungsvorlage Erstellen</h2> <p>Für dieses Tutorial verwenden wir eine einfache <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Original.docx">Verkaufsrechnung</a> mit einigen grundlegenden Informationen und einer Tabelle mit Dummy-Artikeln. Sie erfahren, wie Sie diese Rechnung in eine Vorlage umwandeln, sodass sie für die Erstellung ähnlicher Rechnungen für andere Kunden mit gleichem Layout, aber unterschiedlichem Inhalt verwendet werden kann.</p> <h3 id="zusammenfuehrungs-tags-hinzufuegen">Zusammenführungs-Tags Hinzufügen</h3> <p>Ein <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-zusammenfuehrungs-tags/">Zusammenführungs-Tag</a> ist ein <strong>spezieller Platzhalter</strong> in einer Dokumentvorlage, der automatisch durch Daten aus einer Datenbank oder Tabellenkalkulation ersetzt werden kann. Die Idee ist, personalisierte Dokumente in großen Mengen zu erstellen, anstatt jedes manuell erstellen zu müssen.</p> <p>Eine Rechnungsvorlage könnte beispielsweise Zusammenführungs-Tags für Rechnungsnummer, Kundenname, Adresse und andere relevante Informationen enthalten, die für jeden Kunden automatisch auf Basis der in einer Tabellenkalkulation gespeicherten Daten ausgefüllt werden. Dies spart Zeit und reduziert Fehler im Vergleich zur manuellen Dateneingabe und wird häufig in Branchen wie Immobilien, Finanzen und Versicherungen eingesetzt.</p> <p>Der <strong>erste Schritt</strong> zum Hinzufügen von Zusammenführungs-Tags besteht darin, die Bereiche der Rechnung zu identifizieren, die dynamisch sein müssen, und für jeden Bereich den vorhandenen Text auszuwählen und durch ein entsprechendes Zusammenführungs-Tag zu ersetzen. Zum Beispiel ersetzen wir den Text <code class="language-plaintext highlighter-rouge">#0135</code> durch <code class="language-plaintext highlighter-rouge">[Invoice No]</code>, dann <code class="language-plaintext highlighter-rouge">March 1st, 2023</code> durch <code class="language-plaintext highlighter-rouge">[Invoice Date]</code> usw., wie im folgenden Video zu sehen:</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/create-template-from-invoice.gif" alt="Text durch Zusammenführungs-Tags ersetzen"/></p> <p>Nach dem ersten Schritt sollte die Rechnungsvorlage die Zusammenführungs-Tags <code class="language-plaintext highlighter-rouge">[Invoice No]</code>, <code class="language-plaintext highlighter-rouge">[Invoice Date]</code>, <code class="language-plaintext highlighter-rouge">[CUSTOMER NAME]</code>, <code class="language-plaintext highlighter-rouge">[STREET]</code>, <code class="language-plaintext highlighter-rouge">[CITY]</code>, <code class="language-plaintext highlighter-rouge">[ST]</code>, <code class="language-plaintext highlighter-rouge">[ZIP CODE]</code> enthalten, wie im Bild unten. Wie Sie sehen, gibt es keine besondere Regel für die Formatierung der Zusammenführungs-Tags – Sie können Großbuchstaben, großgeschriebene Wörter usw. verwenden, solange sie dieselben <a href="https://www.docugenerate.com/de/hilfe/articles/was-sind-tag-begrenzer/">Tag-Begrenzer</a> verwenden, die in diesem Fall <code class="language-plaintext highlighter-rouge">[</code> als linker Begrenzer und <code class="language-plaintext highlighter-rouge">]</code> als rechter Begrenzer sind.</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-with-merge-tags.png" alt="Rechnung mit Zusammenführungs-Tags"/></p> <p>Sie können beim Erstellen der Vorlage beliebige Begrenzer verwenden, wie zum Beispiel <code class="language-plaintext highlighter-rouge">{Invoice No}</code>, <code class="language-plaintext highlighter-rouge">[[Invoice No]]</code> oder sogar exotischere Begrenzer wie <code class="language-plaintext highlighter-rouge">![[[Invoice No]]]!</code>. Der DocuGenerate-Parser kann <a href="https://www.docugenerate.com/de/produkt/#tags-uebersicht">automatisch erkennen</a>, welche der am häufigsten verwendeten Tags beim Hochladen einer Vorlage vorhanden sind. Wenn Sie jedoch ungewöhnliche Begrenzer verwenden, die nicht erkannt werden, können Sie diese jederzeit <a href="https://www.docugenerate.com/de/hilfe/articles/wie-aktualisiere-ich-die-tag-begrenzer/">aktualisieren</a> in den Vorlageneinstellungen, damit die Zusammenführungs-Tags korrekt erkannt werden.</p> <h3 id="die-artikeltabelle-dynamisch-machen">Die Artikeltabelle Dynamisch Machen</h3> <p>Der nächste Schritt bei der Erstellung der Rechnungsvorlage besteht darin, die statische <strong>Artikeltabelle</strong> in eine dynamische umzuwandeln. Rechnungsartikel sind die spezifischen <strong>Produkte oder Dienstleistungen</strong>, die einem Kunden in Rechnung gestellt werden. Sie erscheinen in der Rechnung im Tabellen- oder Listenformat und enthalten in der Regel Artikelname, Beschreibung, Menge, Stückpreis und Gesamtbetrag. Die Rechnungsartikel bilden den Gesamtbetrag der Rechnung und geben eine detaillierte Aufschlüsselung darüber, wofür der Kunde bezahlt.</p> <p>Wie beim <a href="#zusammenfuehrungs-tags-hinzufuegen">ersten Schritt</a> ersetzen wir den vorhandenen Text durch entsprechende Zusammenführungs-Tags. Zum Beispiel wird <code class="language-plaintext highlighter-rouge">Item 1</code> durch <code class="language-plaintext highlighter-rouge">[Name]</code> ersetzt, <code class="language-plaintext highlighter-rouge">500</code> durch <code class="language-plaintext highlighter-rouge">[Quantity]</code>, <code class="language-plaintext highlighter-rouge">$175</code> durch <code class="language-plaintext highlighter-rouge">[Price]</code> und <code class="language-plaintext highlighter-rouge">$87,500</code> durch <code class="language-plaintext highlighter-rouge">[Amount]</code>. Wir müssen nur die erste Zeile der Tabelle bearbeiten und den Inhalt der anderen Zeilen löschen, da diese dynamisch aus der Artikelliste generiert werden.</p> <p>Wir verwenden eine <a href="https://www.docugenerate.com/de/hilfe/articles/wie-fuege-ich-tabellen-zu-einer-vorlage-hinzu/">spezielle Syntax</a> zur Iteration über die Artikelliste und zum Hinzufügen mehrerer Zeilen zur Tabelle, wobei <code class="language-plaintext highlighter-rouge">[#Items]</code> den Beginn der Tabellenschleife markiert und <code class="language-plaintext highlighter-rouge">[/]</code> das Ende. Am Ende sollte die Tabelle so aussehen:</p> <table class="table table-bordered"> <thead> <tr> <th>ITEM</th> <th>QTY</th> <th>PRICE</th> <th>TOTAL</th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">[#Items][Name]</code></td> <td><code class="language-plaintext highlighter-rouge">[Quantity]</code></td> <td><code class="language-plaintext highlighter-rouge">[Price]</code></td> <td><code class="language-plaintext highlighter-rouge">[Amount][/]</code></td> </tr> </tbody> </table> <p>Und hier ist ein kurzes Video des gesamten Transformationsprozesses der Tabelle mit den Artikeln:</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-table.gif" alt="Dynamische Tabelle erstellen"/></p> <h2 id="die-vorlage-testen">Die Vorlage Testen</h2> <p>Nach all diesen Änderungen sollte die Rechnungsvorlage so aussehen. Sie können <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Template.docx">eine Kopie herunterladen</a> der bearbeiteten Rechnung, wenn Sie nicht alle Schritte durchlaufen möchten, sondern direkt die endgültige Version der Rechnungsvorlage zum Testen haben möchten.</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-template.png" alt="Fertige Rechnungsvorlage"/></p> <p>Zunächst müssen Sie <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">eine neue Vorlage erstellen</a>, indem Sie die Rechnungsvorlagendatei hochladen. Gehen Sie dann zu <strong>Generate a new document</strong> und wählen Sie das <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-json-daten-generieren/">JSON-Datenformat</a>. Sie können den folgenden JSON-Wert in das Texteingabefeld einfügen, oder wenn Sie möchten, können Sie <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-data.json" target="_blank">herunterladen</a> eine JSON-Datei mit diesen Daten.</p> <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">[</span><span class="w">
  </span><span class="p">{</span><span class="w">
    </span><span class="nl">"Invoice No"</span><span class="p">:</span><span class="w"> </span><span class="s2">"58-519-8945"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Invoice Date"</span><span class="p">:</span><span class="w"> </span><span class="s2">"03-01-2023"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"CUSTOMER NAME"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wisozk Inc"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"STREET"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1569 Fair Oaks Way"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"CITY"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Philadelphia"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"ST"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Pennsylvania"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"ZIP CODE"</span><span class="p">:</span><span class="w"> </span><span class="s2">"19184"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Total"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$180"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"Items"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
      </span><span class="p">{</span><span class="w">
        </span><span class="nl">"Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Table"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Quantity"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Price"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$80"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Amount"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$80"</span><span class="w">
      </span><span class="p">},</span><span class="w">
      </span><span class="p">{</span><span class="w">
        </span><span class="nl">"Name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Chairs"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Quantity"</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Price"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$25"</span><span class="p">,</span><span class="w">
        </span><span class="nl">"Amount"</span><span class="p">:</span><span class="w"> </span><span class="s2">"$100"</span><span class="w">
      </span><span class="p">}</span><span class="w">
    </span><span class="p">]</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">]</span><span class="w">
</span></code></pre></div></div> <p>So sollte es in der DocuGenerate-Web-App aussehen:</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/generate-new-document.png" alt="Fertige Rechnungsvorlage"/></p> <p>Wenn Sie dann das PDF-Dokument mit den standardmäßigen <a href="https://www.docugenerate.com/de/produkt/#die-zusammenfuehrungs-optionen">Zusammenführungsoptionen</a> generieren, sollte das Ergebnis wie das unten gezeigte aussehen. Wenn Sie es jetzt nicht ausprobieren möchten, können Sie einfach <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Generated.pdf" target="_blank">herunterladen</a> eine Kopie der generierten PDF-Rechnung, um zu sehen, wie sie aussieht.</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/sales-invoice-generated.png" alt="Fertige Rechnungsvorlage"/></p> <h2 id="fazit">Fazit</h2> <p>Eine Rechnung ist ein wesentliches Dokument, das die einem Käufer gelieferten Waren oder Dienstleistungen, die Kosten und andere Transaktionsdetails auflistet. Rechnungen dienen als Transaktionsnachweis und werden für Buchhaltungs- und Steuerzwecke verwendet. Es gibt verschiedene Tools zur Rechnungserstellung, darunter Buchhaltungssoftware, Textverarbeitungsprogramme und Dokumentengeneratoren. In diesem Artikel haben wir gezeigt, wie eine Verkaufsrechnung durch das Hinzufügen von Zusammenführungs-Tags mithilfe eines Dokumentengenerators in eine wiederverwendbare Vorlage umgewandelt werden kann.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Die <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Template.docx">Verkaufsrechnungs</a>-Vorlage mit dynamischer Artikeltabelle.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-data.json" target="_blank">JSON-Daten</a> zum Testen der Rechnungsgenerierung.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Generated.pdf" target="_blank">PDF-Rechnung</a> aus den JSON-Daten generiert.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Invoices"/> <category term="Templates"/> <category term="Tables"/> <summary type="html"><![CDATA[Es gibt verschiedene Tools zur Rechnungserstellung, darunter Buchhaltungssoftware, Textverarbeitungsprogramme und Dokumentengeneratoren. In diesem Artikel zeigen wir, wie Sie eine Verkaufsrechnung durch das Hinzufügen von Zusammenführungs-Tags in eine wiederverwendbare Vorlage umwandeln.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> <entry> <title type="html">So Verwenden Sie die Vorlagen aus der Vorlagenbibliothek</title> <link href="https://www.docugenerate.com/de/blog/so-verwenden-sie-die-vorlagen-aus-der-vorlagenbibliothek/" rel="alternate" type="text/html" title="So Verwenden Sie die Vorlagen aus der Vorlagenbibliothek"/> <published>2023-12-01T00:00:00+00:00</published> <updated>2023-12-01T00:00:00+00:00</updated> <id>https://www.docugenerate.com/de/blog/so-verwenden-sie-die-vorlagen-aus-der-vorlagenbibliothek</id> <content type="html" xml:base="https://www.docugenerate.com/de/blog/so-verwenden-sie-die-vorlagen-aus-der-vorlagenbibliothek/"><![CDATA[<h2 id="einfuehrung">Einführung in die Vorlagenbibliothek</h2> <p>Die <a href="https://www.docugenerate.com/de/vorlagen">Vorlagenbibliothek</a> von DocuGenerate bietet eine schnelle und effiziente Lösung zur Erstellung hochwertiger Dokumente. Mit einer breiten Auswahl an anpassbaren Vorlagen können Sie mühelos professionelle Rechnungen, Briefe, Verträge, Zertifikate und mehr erstellen – ganz ohne fortgeschrittene Design- oder Formatierkenntnisse.</p> <p>Unsere Vorlagenbibliothek ist darauf ausgelegt, Ihnen einen schnellen Einstieg zu ermöglichen. Die Vorlagen sind einfach anzupassen und zu verwenden. Ob Sie einen Vertrag für einen neuen Kunden, eine Rechnung oder ein Zertifikat für eine Preisverleihung benötigen – unsere Vorlagenbibliothek hat das Richtige für Sie.</p> <p>In diesem Artikel werfen wir einen genaueren Blick auf die Vorlagenbibliothek und zeigen, wie Sie deren Vorlagen nutzen können, um Ihren Dokumentenerstellungsprozess zu optimieren. Vom Auswählen der passenden Vorlage bis zur Anpassung an Ihre Bedürfnisse begleiten wir Sie Schritt für Schritt.</p> <h2 id="vorlage-auswaehlen">Eine Vorlage Auswählen</h2> <p>Die Vorlagenbibliothek enthält Beispielvorlagen, mit denen Sie sofort loslegen können, ohne eigene Vorlagen erstellen zu müssen. Diese Vorlagen bieten einen Ausgangspunkt für Ihre Dokumentenerstellung und lassen sich einfach an Ihre spezifischen Anforderungen anpassen.</p> <p>Die Beispielvorlagen sind in 4 Kategorien unterteilt:</p> <ul> <li> <p><a href="https://www.docugenerate.com/de/vorlagen#rechnungen">Rechnungen</a>: Marketing-Rechnung, Reparaturrechnung, Umzugsrechnung, Geschäftsrechnung</p> </li> <li> <p><a href="https://www.docugenerate.com/de/vorlagen#briefe">Briefe</a>: Bewerbungsschreiben, Empfehlungsschreiben, Geschäftsbrief, Marketing-Brief</p> </li> <li> <p><a href="https://www.docugenerate.com/de/vorlagen#verträge">Verträge</a>: Arbeitsvertrag, Buchhaltungsvertrag, Geheimhaltungsvereinbarung, Kaufvertrag</p> </li> <li> <p><a href="https://www.docugenerate.com/de/vorlagen#zertifikate">Zertifikate</a>: Leistungszertifikat, Leistungszertifikat, Abschlusszertifikat, Beschäftigungszertifikat</p> </li> </ul> <p>Sie können alle Ressourcen zu einer Vorlage herunterladen, indem Sie auf die Schaltfläche <strong>Download</strong> klicken. Das ZIP-Archiv enthält die DOCX-Vorlage, einen JSON-Datensatz, eine Excel-Datendatei und ein Muster-PDF-Dokument, das mit dem Datensatz erstellt wurde. So können Sie DocuGenerate schnell testen, ohne eigene Vorlagen erstellen zu müssen.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/download-button.png" alt="Download-Schaltfläche"/></p> <p>Für diesen Artikel verwenden wir die Vorlage <a href="https://www.docugenerate.com/assets/templates/letters/cover/Cover Letter.zip">Cover Letter</a>. Laden Sie das Archiv <strong>Cover Letter.zip</strong> herunter, entpacken Sie es und Sie sehen den Ordner <strong>Cover Letter</strong>. Im nächsten Abschnitt gehen wir den Inhalt dieses Ordners durch und betrachten jede Datei im Detail.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-unzip.png" alt="Vorlagenordner entpacken" class="desktop-width-50"/></p> <h2 id="dateien-kennenlernen">Die Vorlagendateien Kennenlernen</h2> <p>Die erste Datei im ZIP-Archiv ist die <code class="language-plaintext highlighter-rouge">.docx</code> Word-Vorlage selbst, die als Grundlage für den Dokumentenerstellungsprozess dient. Jede Vorlage ist mit Zusammenführungs-Tags versehen, die die Anpassung bestimmter Felder ermöglichen. Beim <strong>Cover Letter</strong> sind das die Tags <code class="language-plaintext highlighter-rouge">Name</code>, <code class="language-plaintext highlighter-rouge">Job Title</code>, <code class="language-plaintext highlighter-rouge">Company Name</code> und einige weitere.</p> <p>Sie können diese Datei verwenden, um eine neue wiederverwendbare Vorlage in DocuGenerate zu erstellen – entweder <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">über die App</a> oder <a href="https://www.docugenerate.com/de/entwickler/schnellstart/#vorlage-erstellen">über die API</a>. Ob Sie die benutzerfreundliche Oberfläche der App oder die Leistungsfähigkeit der API bevorzugen – Sie haben die Wahl der Methode, die am besten zu Ihrem Workflow passt.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-docx.png" alt="Die DOCX-Vorlagendatei"/></p> <p>Die zweite Datei im ZIP-Archiv ist eine <code class="language-plaintext highlighter-rouge">.json</code>-Datei, ein leichtes und einfach zu verwendendes Datenformat. Diese Datei enthält ein Array mit 20 <code class="language-plaintext highlighter-rouge">JSON</code>-Objekten, die die Datensätze für die Serienbrieffunktion darstellen. Damit die Zusammenführung korrekt durchgeführt wird, müssen die <strong>Schlüssel</strong> der JSON-Objekte genau den <strong>Zusammenführungs-Tags</strong> der Vorlage entsprechen: <code class="language-plaintext highlighter-rouge">Name</code>, <code class="language-plaintext highlighter-rouge">Job Title</code>, <code class="language-plaintext highlighter-rouge">Company Name</code> usw.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-json.png" alt="Die JSON-Datendatei"/></p> <p>Die nächste Datei mit der Erweiterung <code class="language-plaintext highlighter-rouge">.xlsx</code> ist eine Excel-Tabelle mit 20 Zeilen Beispieldaten. Wie bei den <strong>JSON-Schlüsseln</strong> zuvor müssen die <strong>Spaltennamen</strong> in der Excel-Datei genau den <strong>Zusammenführungs-Tags</strong> der Vorlage entsprechen: <code class="language-plaintext highlighter-rouge">Name</code>, <code class="language-plaintext highlighter-rouge">Job Title</code>, <code class="language-plaintext highlighter-rouge">Company Name</code> usw.</p> <p>Diese Datenstruktur ist entscheidend für die Erstellung präziser und konsistenter Dokumente, da sie sicherstellt, dass die richtigen Informationen in die richtigen Felder eingetragen werden. Durch die Abstimmung der <strong>Spaltennamen</strong> in der Excel-Datei mit den <strong>Zusammenführungs-Tags</strong> der Vorlage kann DocuGenerate den Dokumentenerstellungsprozess automatisieren.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-xlsx.png" alt="Die Excel-Datendatei"/></p> <p>Die letzte Datei im ZIP-Archiv ist ein generiertes <code class="language-plaintext highlighter-rouge">.pdf</code>-Dokument, das mit der Word-Vorlage und den Beispieldaten aus der Excel-Tabelle erstellt wurde. Dieses Dokument zeigt, was Sie mit DocuGenerate erreichen können, wenn Sie <strong>Ihre Dokumentenerstellung automatisieren</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-pdf.png" alt="Das generierte PDF-Beispiel"/></p> <h2 id="vorlage-verwenden">Die Vorlage zur PDF-Generierung Verwenden</h2> <p>Nachdem Sie sich mit den verschiedenen Dateien vertraut gemacht haben, besteht der nächste Schritt darin, sie zur Dokumentenerstellung zu verwenden. Sie können die Vorlage nach Bedarf bearbeiten oder sie unverändert für einen schnellen Einstieg verwenden. Laden Sie zunächst das Word-Dokument in die App hoch, um <a href="https://www.docugenerate.com/de/hilfe/articles/wie-erstelle-ich-eine-neue-vorlage/">eine neue Vorlage zu erstellen</a>. Danach sollte es so aussehen:</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/new-template-docx.png" alt="Neue Vorlage erstellen"/></p> <p>Sie können entweder die JSON-Daten oder die Excel-Tabelle als Datenquelle für die Dokumentenerstellung verwenden. Für die erste Option <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-json-daten-generieren/">mit JSON</a>, öffnen Sie die <code class="language-plaintext highlighter-rouge">.json</code>-Datei und kopieren Sie den Inhalt in die Zwischenablage. Fügen Sie die kopierten JSON-Daten dann in das dafür vorgesehene Textfeld ein und gehen Sie die Formularschritte bis zur Bestätigung der Dokumentenerstellung durch.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/new-document-json.png" alt="Neues Dokument aus JSON-Daten"/></p> <p>Für die zweite Option <a href="https://www.docugenerate.com/de/hilfe/articles/dokumente-aus-einer-excel-oder-csv-datei-generieren/">mit Excel</a>, laden Sie die <code class="language-plaintext highlighter-rouge">.xlsx</code>-Datei in den Bereich hoch, der mit <em>Wählen oder legen Sie eine .xlsx-, .xls-, .ods-, .csv- oder .tsv-Datei ab</em> beschriftet ist. Sie können die Excel-Daten in der Vorschau anzeigen und durch Anklicken auswählen, welche Zeilen für die Dokumentenerstellung verwendet werden sollen. Standardmäßig werden alle Zeilen für die Dokumentenerstellung verwendet.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/new-document-excel.png" alt="Neues Dokument aus Excel-Daten"/></p> <p>Nachdem Sie die <a href="https://www.docugenerate.com/de/produkt/#die-zusammenfuehrungs-optionen">Zusammenführungsoptionen</a> durch Angabe des <a href="https://www.docugenerate.com/de/hilfe/articles/zusammenfuehrungsformat-auswaehlen/">Exportformats</a> und weiterer Optionen angepasst haben, ist alles für die Massenerstellung der Anschreiben bereit. Unten sehen Sie ein Beispiel des generierten PDF mit der fertigen Vorlage und den Excel-Beispieldaten:</p> <object data="/assets/posts/001-use-the-template-library/Cover Letter.pdf" type="application/pdf" class="inline-pdf-blog"></object> <p>Jetzt, da Sie gesehen haben, wie man die Vorlage <a href="https://www.docugenerate.com/assets/templates/letters/cover/Cover Letter.zip">Cover Letter</a> verwendet, können Sie die anderen Vorlagen aus der Bibliothek ausprobieren und mit der einfachen Dokumentenerstellung beginnen.</p> <h2 id="fazit">Fazit</h2> <p>Zusammenfassend lässt sich sagen, dass die Vorlagenbibliothek von DocuGenerate eine breite Auswahl an anpassbaren Vorlagen bietet, mit denen Sie mühelos hochwertige Dokumente erstellen können. Durch die Nutzung der Bibliotheksvorlagen sparen Sie wertvolle Zeit und Ressourcen, ohne fortgeschrittene Design- oder Formatierkenntnisse zu benötigen.</p> <p>Ob Sie Rechnungen, Briefe, Verträge, Zertifikate oder andere Dokumente erstellen müssen – die Vorlagenbibliothek bietet das Richtige. Mit nach Kategorien geordneten Beispielvorlagen finden Sie schnell die passende Vorlage für Ihre Bedürfnisse und können sie an Ihre spezifischen Anforderungen anpassen.</p> <h3 id="ressourcen">Ressourcen</h3> <ul> <li>Das <a href="https://www.docugenerate.com/assets/templates/letters/cover/Cover Letter.zip">Cover Letter</a> ZIP-Archiv mit den verschiedenen Vorlagendateien.</li> <li>Die <a href="https://www.docugenerate.com/assets/posts/001-use-the-template-library/Cover Letter.pdf" target="_blank">PDF-Briefe</a>, die in diesem Artikel in Massenverarbeitung erstellt wurden.</li> </ul>]]></content> <author> <name>DocuGenerate</name> <email>support@docugenerate.com</email> </author> <category term="Resources"/> <category term="Templates"/> <category term="Library"/> <summary type="html"><![CDATA[Unsere Vorlagenbibliothek enthält Beispielvorlagen, mit denen Sie sofort mit DocuGenerate loslegen können, ohne eigene Vorlagen erstellen zu müssen. Diese Vorlagen sind nach Kategorien geordnet und lassen sich einfach an Ihre spezifischen Anforderungen anpassen.]]></summary> <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-image.png"/> <media:content medium="image" url="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-image.png" xmlns:media="http://search.yahoo.com/mrss/"/> </entry> </feed>