<?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr"> <generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator> <link href="https://www.docugenerate.com/fr/feed.xml" rel="self" type="application/atom+xml"/> <link href="https://www.docugenerate.com/fr/blog/" rel="alternate" type="text/html" hreflang="fr"/> <updated>2026-09-14T08:28:20+00:00</updated> <id>https://www.docugenerate.com/fr/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">Créer des Lettres d’Augmentation de Salaire avec n8n et DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/creer-des-lettres-d-augmentation-de-salaire-avec-n8n-et-docugenerate/" rel="alternate" type="text/html" title="Créer des Lettres d’Augmentation de Salaire avec n8n et DocuGenerate"/> <published>2026-08-18T00:00:00+00:00</published> <updated>2026-08-18T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/creer-des-lettres-d-augmentation-de-salaire-avec-n8n-et-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/creer-des-lettres-d-augmentation-de-salaire-avec-n8n-et-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les lettres d’augmentation de salaire font partie de ces documents qui doivent être envoyés à tous les employés concernés en même temps, avec une formulation cohérente et sans erreurs de copier-coller. Lorsqu’un cycle de révision concerne des dizaines d’employés, rédiger chaque lettre à la main ou fusionner manuellement une feuille de calcul dans un document Word devient rapidement un goulot d’étranglement pour les équipes RH. Dans ce tutoriel, nous allons créer un flux automatisé utilisant <a href="https://n8n.io/" target="_blank" rel="nofollow noopener">n8n</a> et <a href="https://www.docugenerate.com/">DocuGenerate</a> qui transforme une feuille de calcul Google Sheets de données de révision salariale en lettres PDF personnalisées, sans aucune création manuelle de document.</p> <p>Le flux surveille un dossier Google Drive à la recherche d’une nouvelle feuille de calcul. Dès qu’une apparaît, il lit chaque ligne, et pour chaque employé il fusionne les données de cette ligne dans un modèle Word, génère un PDF, et dépose la lettre terminée dans un dossier de sortie dédié sur Drive. Les RH n’ont qu’à préparer la feuille de calcul avec les augmentations du cycle ; les lettres sont générées et classées automatiquement. À la fin de ce guide, vous disposerez d’un flux n8n entièrement fonctionnel que vous pourrez importer et adapter à votre propre processus de révision salariale.</p> <h2 id="configurer-le-modele">Configurer le Modèle de Lettre d’Augmentation de Salaire</h2> <p>Avant de construire le flux n8n, nous avons besoin d’un modèle de document dans DocuGenerate. Nous utiliserons le modèle Word <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter.docx">Salary Increase Letter</a>, une courte lettre de révision de rémunération qui informe un employé de son augmentation, du nouveau salaire total, et de la personne à contacter en cas de question.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/docugenerate-template.png" alt="Modèle Salary Increase Letter avec balises de fusion"/></p> <p>Une fois que vous avez <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créé le modèle</a> dans votre compte DocuGenerate, 13 balises de fusion sont détectées automatiquement : <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>, et <code class="language-plaintext highlighter-rouge">Signatory Position</code>. Ces <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> couvrent à la fois les détails propres à l’employé concernant l’augmentation et les détails fixes de l’entreprise et du signataire, qui proviendront tous des lignes de la feuille de calcul.</p> <h2 id="preparer-les-donnees">Préparer les Données dans Google Sheets</h2> <p>Les données de ce flux se trouvent dans Google Sheets. Pour ce tutoriel, nous utilisons l’exemple de fichier Excel <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Data.xlsx">Salary Increase Data</a>, importé dans une feuille de calcul Google Sheets nommée <strong>Salary Increase August 2026</strong>. Chacune des 10 lignes représente l’augmentation d’un employé, avec une colonne pour chaque balise de fusion du modèle : nom, adresse, montant de l’augmentation, type de rémunération, somme totale, et date d’augmentation, ainsi que les détails partagés du contact et du signataire répétés sur chaque ligne.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/drive-drive-salary-increase-letter-sheet.png" alt="Feuille de calcul Salary Increase August 2026 dans Google Sheets"/></p> <p>Cette feuille de calcul se trouve dans un dossier <strong>Salary Increase Letter</strong> sur Google Drive, qui contient également les dossiers de lettres générées lors des cycles de révision précédents. Chaque nouveau cycle commence de la même manière : une nouvelle feuille de calcul contenant les données du cycle est ajoutée à ce dossier, ce qui est exactement l’événement que notre flux va surveiller.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/drive-salary-increase-letter-folder.png" alt="Dossier Salary Increase Letter dans Google Drive"/></p> <h2 id="vue-densemble-du-flux">Vue d’Ensemble du Flux n8n</h2> <p>Le modèle et la source de données étant prêts, voici à quoi ressemble le flux complet dans n8n. Vous pouvez télécharger le <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter Workflow.json" target="_blank">fichier JSON du flux</a> et l’importer directement dans votre instance n8n, puis mettre à jour le modèle DocuGenerate, vos identifiants Google, et l’ID du dossier Drive pour correspondre à votre propre configuration.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-complete-workflow.png" alt="Le flux n8n complet"/></p> <p>Le flux commence par un déclencheur qui surveille le dossier <strong>Salary Increase Letter</strong> à la recherche d’un nouveau fichier Google Sheets. Lorsqu’un apparaît, il crée un dossier de sortie correspondant, lit chaque ligne de la feuille, et parcourt les lignes une par une, générant une lettre PDF pour chaque employé et l’enregistrant dans le nouveau dossier. Passons en revue chaque nœud.</p> <h2 id="declencheur-google-drive">Surveiller les Nouvelles Feuilles de Calcul avec le Google Drive Trigger</h2> <p>Le nœud <a href="https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.googledrivetrigger/" target="_blank" rel="nofollow noopener">Google Drive Trigger</a> interroge périodiquement un dossier Google Drive spécifique et démarre le flux lorsqu’un changement correspondant se produit.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-google-drive-trigger.png" alt="Configuration du nœud Google Drive Trigger"/></p> <p>Le nœud est configuré pour interroger <strong>Every X</strong> <code class="language-plaintext highlighter-rouge">30</code> <strong>Minutes</strong>, avec <strong>Trigger On</strong> défini sur <strong>Changes Involving a Specific Folder</strong>. Le paramètre <strong>Folder</strong> accepte le dossier cible de trois manières : <strong>From list</strong>, <strong>By URL</strong>, ou <strong>By ID</strong> ; ici il est défini sur <strong>By ID</strong> avec l’ID du dossier <strong>Salary Increase Letter</strong>.</p> <p>Vous pouvez trouver l’ID d’un dossier dans son URL Google Drive, c’est la suite de caractères après <code class="language-plaintext highlighter-rouge">/folders/</code>. Par exemple, l’ID pour l’URL <code class="language-plaintext highlighter-rouge">https://drive.google.com/drive/folders/1dcLLzfZaH38hDd0acfUru2ISOoTsbGPI</code> est <code class="language-plaintext highlighter-rouge">1dcLLzfZaH38hDd0acfUru2ISOoTsbGPI</code>.</p> <p>Enfin, <strong>Watch For</strong> est défini sur <strong>File Created</strong>, et l’option <strong>File Type</strong> sous <strong>Options</strong> est limitée à <strong>Google Spreadsheets</strong>, de sorte que le déclencheur ne se déclenche que lorsqu’une nouvelle feuille de calcul est ajoutée au dossier.</p> <h2 id="creer-un-dossier">Créer un Dossier de Sortie</h2> <p>Une fois qu’une nouvelle feuille de calcul est détectée, le flux a besoin d’un endroit où placer les lettres générées. Le nœud <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/" target="_blank" rel="nofollow noopener">Google Drive</a> s’en charge grâce à l’opération <strong>Create</strong> sur la ressource <strong>Folder</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-create-folder.png" alt="Configuration du nœud Create folder"/></p> <p>Le paramètre <strong>Folder Name</strong> utilise l’expression <code class="language-plaintext highlighter-rouge">{{ $('Google Drive Trigger').item.json.name }}</code>, qui donne <code class="language-plaintext highlighter-rouge">Salary Increase August 2026</code>, le nom de la feuille de calcul qui a déclenché le flux. Le <strong>Parent Folder</strong> est défini sur le même ID de dossier utilisé dans le <a href="#declencheur-google-drive">déclencheur</a>, de sorte que le nouveau dossier de sortie est créé comme un dossier frère de la feuille de calcul source à l’intérieur de <strong>Salary Increase Letter</strong>. Nommer le dossier d’après sa feuille de calcul source permet de regrouper les lettres de chaque cycle de révision avec les données qui les ont produites.</p> <h2 id="lire-les-donnees">Lire les Données des Employés</h2> <p>Le dossier de destination étant prêt, le nœud <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/" target="_blank" rel="nofollow noopener">Google Sheets</a> lit les données des employés grâce à l’opération <strong>Get Row(s)</strong> sur la ressource <strong>Sheet Within Document</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-get-rows-in-sheet.png" alt="Configuration du nœud Get row(s) in sheet"/></p> <p>Le <strong>Document</strong> est défini sur <strong>Salary Increase August 2026</strong> et le <strong>Sheet</strong> sur <strong>Salary Increase Data</strong>, tous deux choisis dans les menus déroulants <strong>From list</strong>. Le nœud renvoie les 10 lignes sous forme d’éléments distincts, chacun contenant l’ensemble des champs que nous avons vus dans la <a href="#preparer-les-donnees">feuille de calcul</a> : détails de l’employé, chiffres de l’augmentation, et informations partagées de contact et de signataire.</p> <h2 id="parcourir-en-boucle">Parcourir Chaque Employé en Boucle</h2> <p>Pour générer une lettre par employé, le flux doit traiter les 10 lignes une par une. Le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/" target="_blank" rel="nofollow noopener">Loop Over Items</a> s’en charge avec une taille de lot de 1.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-loop-over-items.png" alt="Configuration du nœud Loop Over Items"/></p> <p>Chaque passage dans la boucle transporte la ligne d’un seul employé, comme la première pour James Mitchell avec une augmentation de 4 % portant son salaire annuel à 87 500 $, vers les nœuds suivants. La boucle continue jusqu’à ce que les 10 lignes aient été traitées, générant et enregistrant une lettre avant de passer à la suivante.</p> <h2 id="generer-la-lettre">Générer la Lettre</h2> <p>Le nœud <strong>Generate document</strong> utilise l’<a href="https://n8n.io/integrations/docugenerate/" target="_blank" rel="noopener">intégration DocuGenerate</a> pour n8n afin de fusionner les données de chaque ligne avec le modèle Word. Pour utiliser ce nœud, installez DocuGenerate dans votre instance n8n et <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/#install-docugenerate">configurez-le</a> avec votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-generate-document.png" alt="Configuration du nœud Generate document"/></p> <p>Le nœud est configuré avec les paramètres suivants :</p> <ul> <li><strong>Template Name or ID</strong> : le modèle <strong>Salary Increase Letter</strong> <a href="#configurer-le-modele">créé précédemment</a>.</li> <li><strong>Name</strong> : une expression, <code class="language-plaintext highlighter-rouge">Letter for {{ $json['Employee First Name'] }} {{ $json['Employee Last Name'] }}</code>, qui produit un nom comme <code class="language-plaintext highlighter-rouge">Letter for James Mitchell</code> pour la première ligne.</li> <li><strong>Format</strong> : défini sur <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code>.</li> <li><strong>Data</strong> : défini sur <code class="language-plaintext highlighter-rouge">{{ $json }}</code>, transmettant l’intégralité de la ligne courante, avec les 13 valeurs de balises de fusion, directement à l’API.</li> </ul> <p>Pour la première ligne, cela produit la réponse suivante :</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>Vous pouvez voir le document généré ci-dessous, ou télécharger un <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Letter for James Mitchell.pdf">exemple de PDF</a> directement.</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="telecharger-la-lettre">Télécharger la Lettre Générée</h2> <p>DocuGenerate renvoie un <code class="language-plaintext highlighter-rouge">document_uri</code> pointant vers le PDF généré plutôt que le fichier lui-même, le flux doit donc le récupérer avant de pouvoir l’envoyer ailleurs. Le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/" target="_blank" rel="nofollow noopener">HTTP Request</a> effectue une requête <code class="language-plaintext highlighter-rouge">GET</code> vers cette URL.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-http-request.png" alt="Configuration du nœud HTTP Request"/></p> <p>Le paramètre <strong>URL</strong> est défini sur <code class="language-plaintext highlighter-rouge">{{ $json.document_uri }}</code>, référençant la réponse du nœud <a href="#generer-la-lettre">Generate document</a>. <strong>Authentication</strong> est laissé sur <code class="language-plaintext highlighter-rouge">None</code>, puisque l’URI du document inclut déjà un jeton d’accès. La sortie du nœud contient le contenu binaire du fichier dans un champ <code class="language-plaintext highlighter-rouge">data</code>, prêt pour l’étape suivante.</p> <h2 id="enregistrer-sur-google-drive">Enregistrer la Lettre sur Google Drive</h2> <p>Le dernier nœud téléverse le PDF dans le dossier de sortie créé au <a href="#creer-un-dossier">début de l’exécution</a>, en utilisant l’opération <strong>Upload</strong> du nœud Google Drive sur la ressource <strong>File</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-upload-file.png" alt="Configuration du nœud Upload file"/></p> <p><strong>Input Data Field Name</strong> est défini sur <code class="language-plaintext highlighter-rouge">data</code>, correspondant au champ binaire produit par le nœud <a href="#telecharger-la-lettre">HTTP Request</a>. Le champ <strong>File Name</strong> est laissé vide, de sorte que le téléversement conserve le nom de fichier d’origine porté par les données binaires, <code class="language-plaintext highlighter-rouge">Letter for James Mitchell.pdf</code> pour cette ligne. Le <strong>Parent Folder</strong> utilise l’expression <code class="language-plaintext highlighter-rouge">{{ $('Create folder').item.json.id }}</code>, de sorte que chaque lettre atterrit dans le dossier créé pour ce cycle de révision plutôt qu’en vrac dans Drive.</p> <h2 id="executer-le-flux">Exécuter le Flux</h2> <p>Tous les nœuds étant configurés, il suffit d’ajouter une nouvelle feuille de calcul au dossier <strong>Salary Increase Letter</strong> pour générer un lot complet de lettres. L’animation ci-dessous montre une exécution complète : chaque nœud devient vert avec une coche à mesure qu’il se termine, et le segment <a href="#parcourir-en-boucle">Loop Over Items</a> s’exécute 10 fois de suite, pour chaque employé de la feuille de calcul.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/n8n-workflow-testing.gif" alt="Flux n8n s'exécutant de bout en bout"/></p> <p>Une fois l’exécution terminée, les 10 lettres se trouvent dans le dossier de sortie sur Google Drive, chacune nommée d’après son destinataire.</p> <p><img src="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/drive-generated-documents.png" alt="Lettres générées dans le dossier Salary Increase August 2026"/></p> <h2 id="conclusion">Conclusion</h2> <p>Dans ce tutoriel, nous avons construit un flux n8n qui transforme une feuille de calcul Google Sheets de données de révision salariale en un dossier de lettres PDF personnalisées, sans aucune création manuelle de document. Le flux surveille un dossier Drive à la recherche d’une nouvelle feuille de calcul, crée un dossier de sortie correspondant, parcourt chaque ligne, et génère et classe une lettre pour chaque employé, le tout déclenché simplement en ajoutant une feuille de calcul au bon dossier.</p> <p>Le même schéma s’applique à tout document RH lié à une révision périodique, des lettres de prime aux avis de renouvellement. Le déclencheur et la source de données pourraient tout aussi bien être un webhook provenant d’un système d’information des ressources humaines (SIRH) ou une requête sur une base de données plutôt qu’un dossier Drive, tandis que les étapes de génération et de livraison restent les mêmes.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter.docx">Salary Increase Letter</a> utilisé dans ce tutoriel.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Data.xlsx">fichier Excel d’exemple</a> avec les données d’augmentation des employés.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Salary Increase Letter Workflow.json" target="_blank">fichier JSON du flux</a> que vous pouvez importer dans votre instance n8n.</li> <li>Un <a href="https://www.docugenerate.com/assets/posts/036-n8n-salary-increase-letters/Letter for James Mitchell.pdf" target="_blank">exemple de PDF généré</a> montrant le résultat final.</li> <li>Le <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/">guide d’intégration</a> DocuGenerate pour 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[Créez un flux n8n qui surveille un dossier Google Drive à la recherche d'une nouvelle feuille de calcul de révision salariale et génère automatiquement une lettre d'augmentation de salaire PDF personnalisée pour chaque employé qui y figure. Les lettres finalisées sont enregistrées dans Google Drive.]]></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">Générer des Formulaires W-9 en PDF avec Power Automate et Smartsheet</title> <link href="https://www.docugenerate.com/fr/blog/generer-des-formulaires-w-9-en-pdf-avec-power-automate-et-smartsheet/" rel="alternate" type="text/html" title="Générer des Formulaires W-9 en PDF avec Power Automate et Smartsheet"/> <published>2026-07-24T00:00:00+00:00</published> <updated>2026-07-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/generer-des-formulaires-w-9-en-pdf-avec-power-automate-et-smartsheet</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/generer-des-formulaires-w-9-en-pdf-avec-power-automate-et-smartsheet/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Le formulaire W-9, « Request for Taxpayer Identification Number and Certification », est un formulaire de l’IRS que les entreprises aux États-Unis utilisent pour recueillir le nom légal, l’adresse et le numéro d’identification fiscale de leurs fournisseurs, freelances et prestataires indépendants avant de les payer. Les informations indiquées sur un formulaire W-9 servent ensuite à préparer les formulaires 1099 au moment de la déclaration fiscale, ce qui fait de la tenue de formulaires W-9 précis et uniformément mis en forme un élément important de tout processus d’intégration des fournisseurs. Les entreprises qui traitent avec un flux constant de nouveaux prestataires finissent souvent par gérer ces données dans une feuille de calcul ou un outil comme <a href="https://www.smartsheet.com/" target="_blank" rel="nofollow noopener">Smartsheet</a>, ce qui en fait un candidat naturel pour l’automatisation.</p> <p>Dans ce tutoriel, nous allons construire un flow <a href="https://www.microsoft.com/en-us/power-platform/products/power-automate" target="_blank" rel="nofollow noopener">Power Automate</a> qui surveille une feuille Smartsheet pour détecter les nouvelles lignes et génère automatiquement un PDF W-9 rempli à l’aide de <a href="https://www.docugenerate.com/">DocuGenerate</a>. Chaque fois qu’un nouvel enregistrement de fournisseur est ajouté à la feuille, que ce soit par un membre de l’équipe qui le saisit directement ou par une importation depuis un autre système, le flow fusionne les données de cette ligne dans un modèle Word et enregistre le PDF final dans Azure File Storage. Le même schéma s’applique à tout document devant être généré automatiquement à partir de données de feuille de calcul, mais un formulaire fiscal est une bonne illustration car il implique un mélange de déclarants particuliers et professionnels, des champs conditionnels, et une mise en page qui doit rester précise.</p> <h2 id="docugenerate-template">Préparer le Modèle DocuGenerate</h2> <p>La première étape consiste à créer un modèle Word dans DocuGenerate qui reproduit la mise en page officielle du W-9. Nous sommes partis du <a href="https://www.irs.gov/forms-pubs/about-form-w-9" target="_blank" rel="nofollow noopener">formulaire W-9 de l’IRS</a> et avons remplacé chaque champ à remplir par une <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balise de fusion</a>, puis nous l’avons <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">téléchargé</a> en tant que nouveau modèle nommé <strong>Form W-9</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/docugenerate-form-w-9-template.png" alt="Modèle Form W-9 avec balises de fusion dans DocuGenerate"/></p> <p>Le modèle contient 17 balises de fusion : <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>, et <code class="language-plaintext highlighter-rouge">signatureDate</code>. La plupart correspondent directement à une case étiquetée sur le formulaire. <code class="language-plaintext highlighter-rouge">taxClassification</code> correspond à la ligne « Other » de la section de classification fiscale fédérale et contient une courte description telle que « C Corporation » ou « Trust/estate », tandis que <code class="language-plaintext highlighter-rouge">ssn</code> et <code class="language-plaintext highlighter-rouge">ein</code> remplissent les deux cases de la Part I selon que le déclarant est un particulier ou une entité professionnelle. Vous pouvez télécharger le <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9.docx">modèle Word</a> utilisé dans ce tutoriel et l’adapter à votre propre mise en page.</p> <h2 id="smartsheet-data">Configurer la Source de Données dans Smartsheet</h2> <p>Une fois le modèle en place, l’étape suivante consiste à préparer la feuille qui servira de déclencheur pour notre flow. Dans Smartsheet, cliquez sur <strong>Create</strong> &gt; <strong>Sheet</strong> &gt; <strong>Table</strong> pour créer une nouvelle feuille, puis renommez-la <strong>Form W-9</strong>. Plutôt que de saisir des lignes d’exemple à la main, nous allons les importer depuis un fichier Excel en ouvrant le menu de la feuille et en sélectionnant <strong>Import</strong>. Gardez à l’esprit que l’importation remplace toutes les données existantes de la feuille par les données du fichier source.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/smartsheet-import-excel-data.png" alt="Importation de données Excel dans la feuille Form W-9 de Smartsheet"/></p> <p>Vous pouvez télécharger le <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Data.xlsx">fichier Excel d’exemple</a> utilisé pour cette importation. Il contient 10 lignes correspondant aux 18 colonnes qui seront associées aux balises de fusion du modèle : une colonne <code class="language-plaintext highlighter-rouge">Record ID</code> (<code class="language-plaintext highlighter-rouge">REC-001</code> à <code class="language-plaintext highlighter-rouge">REC-010</code>) suivie d’une colonne pour chaque champ du formulaire. Les données mélangent particuliers et entités professionnelles afin de tester les différentes branches du formulaire : six particuliers ou entrepreneurs individuels avec un SSN et sans EIN, et quatre entités (une LLC, une C Corp, un trust/succession et un partnership) avec un EIN et sans SSN. Une ligne a également les colonnes Exempt Payee Code et FATCA Code renseignées, puisque celles-ci ne s’appliquent que dans des cas spécifiques.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/smartsheet-table-form-w9-data.png" alt="Données Form W-9 importées dans la table Smartsheet"/></p> <h2 id="flow-overview">Créer le Flow Power Automate</h2> <p>Une fois le modèle et la source de données prêts, nous pouvons construire le flow lui-même. Dans Power Automate, cliquez sur <strong>New flow</strong> &gt; <strong>Automated cloud flow</strong>. Dans la boîte de dialogue <strong>Build an automated cloud flow</strong>, donnez au flow un nom tel que <code class="language-plaintext highlighter-rouge">Form W-9</code>, recherchez « Smartsheet » dans la liste des déclencheurs, et sélectionnez <strong>When a new row is created</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/when-a-new-row-is-created-trigger.png" alt="Sélection du déclencheur Smartsheet lors de la création d'un nouveau flow"/></p> <p>Le flow que nous allons construire comporte trois étapes : un déclencheur Smartsheet qui se déclenche lorsqu’une ligne est ajoutée, une action DocuGenerate qui génère le PDF, et une action Azure File Storage qui l’enregistre. Configurons chacune d’entre elles à tour de rôle.</p> <h3 id="smartsheet-trigger">Configurer le Déclencheur Smartsheet</h3> <p>Le déclencheur <strong>When a new row is created</strong> nécessite une connexion à votre compte Smartsheet, que Power Automate vous invitera à créer la première fois que vous l’utilisez. Une fois connecté, définissez le paramètre <strong>Sheet Id</strong> sur la feuille <strong>Form W-9</strong> <a href="#smartsheet-data">que nous avons créée précédemment</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/configure-sheet-id-trigger.png" alt="Configuration du paramètre Sheet Id sur le déclencheur Smartsheet"/></p> <h3 id="generate-document">Ajouter l’Action Generate Document</h3> <p>Ensuite, cliquez sur le bouton <strong>+</strong> sous le déclencheur et recherchez « DocuGenerate » pour voir la liste des actions disponibles.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/docugenerate-add-action.png" alt="Recherche du connecteur DocuGenerate dans Power Automate"/></p> <p>Sélectionnez <strong>Generate Document</strong>. La première fois que vous utilisez une action DocuGenerate dans votre environnement, vous serez invité à <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-power-apps/#add-the-custom-connector">créer une connexion</a> à l’aide de votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a> DocuGenerate. Une fois connecté, définissez le champ <strong>Template</strong> sur le modèle <strong>Form W-9</strong> <a href="#docugenerate-template">créé dans DocuGenerate</a>.</p> <p>Pour le champ <strong>Data</strong>, nous avons besoin d’un objet JSON contenant les valeurs des 17 balises de fusion. Le déclencheur Smartsheet n’expose pas les cellules de la ligne par nom de colonne, seulement sous forme de tableau, donc chaque valeur doit être référencée par son index numérique. D’après l’ordre des colonnes lors de l’importation, la correspondance est la suivante : la colonne 0 est Record ID, la colonne 1 est SSN, la colonne 2 est First Name, la colonne 3 est Last Name, et ainsi de suite jusqu’à la colonne 17, qui est Signature Date. Nous avons construit le JSON avec les expressions <code class="language-plaintext highlighter-rouge">concat</code> et <code class="language-plaintext highlighter-rouge">json</code> :</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>Les caractères <code class="language-plaintext highlighter-rouge">?</code> sont des opérateurs conditionnels null : <code class="language-plaintext highlighter-rouge">triggerBody()?.cells?[2]?.value</code> lit la propriété <code class="language-plaintext highlighter-rouge">value</code> de la cellule à l’index 2, et renvoie <code class="language-plaintext highlighter-rouge">null</code> au lieu de générer une erreur à chaque endroit où <code class="language-plaintext highlighter-rouge">cells</code> ou cette cellule spécifique serait absente. Ceci est important ici car plusieurs colonnes, comme <code class="language-plaintext highlighter-rouge">businessName</code> ou <code class="language-plaintext highlighter-rouge">ssn</code>, sont volontairement vides sur de nombreuses lignes. La fonction <code class="language-plaintext highlighter-rouge">concat</code> externe assemble toutes ces valeurs en une seule chaîne JSON, et <code class="language-plaintext highlighter-rouge">json()</code> analyse cette chaîne pour obtenir l’objet attendu par le champ <strong>Data</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/generate-document-action-data.png" alt="Configuration du champ Data sur l'action Generate Document"/></p> <p>Pour le champ <strong>Name</strong>, nous avons utilisé une expression qui vérifie si la colonne Business Name (index 4) est renseignée et choisit le modèle de nommage approprié, en utilisant la même correspondance d’index que ci-dessus :</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>Cela produit un nom tel que « Form W-9 John Smith » pour un déclarant particulier, ou « Form W-9 Bluepeak Software LLC » pour un déclarant professionnel. Enfin, laissez le champ <strong>Format</strong> à sa valeur par défaut <strong>.pdf</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/generate-document-action-name.png" alt="Configuration du champ Name sur l'action Generate Document"/></p> <h3 id="create-file">Enregistrer le Document dans Azure File Storage</h3> <p>Une fois le document généré, il existe de nombreuses façons de le livrer : l’envoyer par e-mail, l’ajouter à SharePoint ou OneDrive, le téléverser vers un bucket S3, etc. Pour ce tutoriel, nous allons l’enregistrer dans <a href="https://learn.microsoft.com/en-us/connectors/azurefile/" target="_blank" rel="nofollow noopener">Azure File Storage</a>. Cliquez sur le bouton <strong>+</strong> sous l’action <strong>Generate Document</strong>, recherchez « Create file », et sélectionnez l’action d’<strong>Azure File Storage</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/add-create-file-action.png" alt="Ajout de l'action Create file depuis Azure File Storage"/></p> <p>Créez une connexion en fournissant un <strong>Connection name</strong>, votre <strong>Azure Storage account name or file endpoint</strong>, et votre <strong>Azure Storage Account Access Key</strong>, tous deux disponibles depuis votre compte de stockage dans le portail Azure.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/create-file-config.png" alt="Création d'une connexion à Azure File Storage"/></p> <p>Une fois la connexion en place, configurez l’action <strong>Create file</strong> :</p> <ul> <li><strong>Folder path</strong> : <code class="language-plaintext highlighter-rouge">/form-w-9</code>, le dossier de destination dans le compte de stockage.</li> <li><strong>File name</strong> : <code class="language-plaintext highlighter-rouge">outputs('Generate_Document')?['body/filename']</code>, le nom de fichier du PDF généré.</li> <li><strong>File content</strong> : <code class="language-plaintext highlighter-rouge">outputs('Generate_Document')?['body/document_uri']</code>, l’URL du PDF généré.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/create-file-params.png" alt="Configuration des paramètres de l'action Create file"/></p> <h2 id="testing">Tester le Flow</h2> <p>Pour tester le flow, cliquez sur <strong>Test</strong> sur la page du flow, sélectionnez <strong>Manually</strong>, puis cliquez à nouveau sur <strong>Test</strong>. Power Automate affichera un message vous demandant d’ajouter une ligne à la feuille sélectionnée pour déclencher l’exécution.</p> <p><img src="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/test-flow-manually.png" alt="Test manuel du flow depuis Power Automate"/></p> <p>Ajoutez une nouvelle ligne à la feuille <strong>Form W-9</strong> dans Smartsheet avec un nouveau jeu de détails de fournisseur. Une fois le flow exécuté, le document généré apparaît dans le panneau <strong>Documents</strong> du modèle <strong>Form W-9</strong> dans DocuGenerate, et le PDF est enregistré dans le dossier indiqué dans Azure File Storage. Vous pouvez voir un exemple du <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Jessica Martinez.pdf">PDF généré</a> ci-dessous.</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="conclusion">Conclusion</h2> <p>Ce tutoriel a couvert l’ensemble du parcours, d’une ligne dans Smartsheet à un PDF W-9 prêt à être déposé, à l’aide d’un flow Power Automate sans aucun code personnalisé. Le déclencheur détecte les nouveaux enregistrements de fournisseurs au fur et à mesure qu’ils sont saisis, l’action <strong>Generate Document</strong> remplit la mise en page officielle du formulaire avec les données de cette ligne, et l’action <strong>Create file</strong> livre automatiquement le résultat vers Azure File Storage.</p> <p>Ce même schéma en trois étapes (déclencheur, génération, livraison) fonctionne pour tout document récurrent que votre équipe produit à partir de données de feuille de calcul ou de tableau, qu’il s’agisse de documents d’intégration, de factures ou de formulaires de conformité. Comme les actions DocuGenerate sont disponibles dans l’ensemble de la Power Platform, vous pourriez tout aussi bien déclencher ce flow depuis un formulaire Power Apps ou une liste SharePoint au lieu d’une ligne Smartsheet, tout en conservant la même configuration de l’action <strong>Generate Document</strong>.</p> <h2 id="ressources">Ressources</h2> <ul> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9.docx">Form W-9</a> utilisé dans ce tutoriel.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Data.xlsx">fichier Excel d’exemple</a> avec des données de fournisseurs à importer dans Smartsheet.</li> <li>Un <a href="https://www.docugenerate.com/assets/posts/035-power-automate-form-w9/Form W-9 Jessica Martinez.pdf">exemple de PDF généré</a> montrant le résultat final.</li> <li>La <a href="https://learn.microsoft.com/en-us/connectors/smartsheet/" target="_blank" rel="nofollow noopener">référence du connecteur Smartsheet</a> pour Power Automate.</li> <li>La <a href="https://learn.microsoft.com/en-us/connectors/azurefile/" target="_blank" rel="nofollow noopener">référence du connecteur Azure File Storage</a> pour Power Automate.</li> <li>La <a href="https://learn.microsoft.com/en-us/connectors/docugenerate/" target="_blank" rel="nofollow noopener">référence du connecteur DocuGenerate</a> pour Power Automate.</li> <li>Le <a href="https://www.irs.gov/forms-pubs/about-form-w-9" target="_blank" rel="nofollow noopener">formulaire W-9 officiel de l’IRS</a> et ses instructions.</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[Découvrez comment générer automatiquement des formulaires W-9 dès qu'une nouvelle ligne est ajoutée dans Smartsheet. Ce tutoriel construit un flow Power Automate qui fusionne les données de fournisseurs et de prestataires avec un modèle DocuGenerate pour produire le formulaire.]]></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">Organisez Vos Modèles en Dossiers pour un Accès Facile</title> <link href="https://www.docugenerate.com/fr/blog/organisez-vos-modeles-en-dossiers-pour-un-acces-facile/" rel="alternate" type="text/html" title="Organisez Vos Modèles en Dossiers pour un Accès Facile"/> <published>2026-06-15T00:00:00+00:00</published> <updated>2026-06-15T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/organisez-vos-modeles-en-dossiers-pour-un-acces-facile</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/organisez-vos-modeles-en-dossiers-pour-un-acces-facile/"><![CDATA[<h2 id="que-sont-les-dossiers">Que Sont les Dossiers de Modèles?</h2> <p>Les Dossiers de Modèles apportent un modèle organisationnel familier à DocuGenerate, vous permettant de regrouper des modèles apparentés dans une structure hiérarchique. Que vous gériez une poignée de modèles ou des centaines, les dossiers offrent un moyen clair et intuitif de trouver ce dont vous avez besoin et de garder votre bibliothèque de modèles organisée à mesure qu’elle s’agrandit.</p> <p>Jusqu’à présent, tous les modèles de votre compte DocuGenerate étaient affichés dans une seule liste plate, triée par date de création. Avec cette nouvelle fonctionnalité, nous introduisons un système de dossiers qui suit les conventions que vous connaissez déjà des gestionnaires de fichiers et des clients de messagerie, avec une profondeur d’imbrication arbitraire, une réorganisation intuitive, et une prise en charge complète à la fois dans l’<a href="#dossiers-application-web">application web</a> et dans l’<a href="#dossiers-api">API</a>.</p> <h2 id="pourquoi-les-dossiers-sont-importants">Pourquoi l’Organisation en Dossiers Est Importante</h2> <p>Pour les organisations qui s’appuient sur une bibliothèque de modèles en croissance, l’absence de structure organisationnelle peut devenir un véritable frein à la productivité avec le temps. À mesure que votre bibliothèque de modèles passe de quelques dizaines à des centaines de modèles, trouver le bon devient plus difficile, l’intégration de nouveaux membres d’équipe ralentit, et les modèles s’éloignent de toute structure logique qui existait autrefois dans la tête de quelqu’un.</p> <p><strong>1. Recherche de Modèles Plus Rapide</strong><br/> Avec les dossiers, vous n’avez plus besoin de parcourir une longue liste de modèles ou de vous fier à une correspondance partielle de nom pour trouver le bon. Une hiérarchie de dossiers bien organisée reflète la façon dont votre équipe pense réellement aux modèles, que ce soit par département, par client, par type de document, ou par phase de projet.</p> <p><strong>2. Modèle Mental Plus Clair pour les Équipes</strong><br/> Lorsque les modèles sont organisés en dossiers, la structure elle-même communique l’intention. Un nouveau membre de l’équipe consultant votre bibliothèque de modèles peut rapidement comprendre comment les documents sont catégorisés dans votre organisation, réduisant le besoin d’explications ou de documentation d’intégration.</p> <p><strong>3. Vues Filtrables</strong><br/> Les dossiers ne sont pas que des conteneurs visuels. Sélectionner un dossier filtre la vue des modèles pour n’afficher que les modèles qu’il contient, vous offrant un espace de travail ciblé lorsque vous travaillez dans une catégorie spécifique. Le dossier actuel est reflété dans l’URL de la page, vous pouvez donc mettre en favori ou partager une vue filtrée.</p> <h2 id="dossiers-application-web">Comment Fonctionnent les Dossiers de Modèles dans l’Application Web</h2> <p>Les dossiers sont accessibles partout dans l’application via l’icône de dossier dans la barre de navigation. Cliquer sur celle-ci ouvre le menu des dossiers, qui affiche votre arborescence de dossiers et vous permet de créer, modifier, ou supprimer des dossiers directement. Sur les appareils mobiles, le menu des dossiers est disponible depuis le menu utilisateur principal.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/folder-menu-v2.png" alt="Menu des dossiers dans la barre de navigation"/></p> <h3 id="creer-des-dossiers">Créer un Dossier</h3> <p>Pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-dossier/">créer un nouveau dossier</a>, cliquez sur l’icône <strong>New Folder</strong> à côté de l’en-tête <strong>Template Folders</strong> dans le menu des dossiers. Une boîte de dialogue s’ouvre où vous pouvez saisir le nom du dossier et, éventuellement, sélectionner un dossier parent si vous souhaitez créer le dossier à l’intérieur d’un dossier existant.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/new-folder-dialog-v2.png" alt="Boîte de dialogue de nouveau dossier"/></p> <p>Pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-des-dossiers-imbriques/">créer un sous-dossier</a> directement depuis un dossier existant, vous pouvez également utiliser l’action <strong>Add</strong> dans le <a href="#gerer-les-dossiers">menu contextuel</a> du dossier, qui pré-remplit la sélection du parent pour vous. Les noms de dossiers prennent en charge les lettres, les chiffres, et les espaces. Chaque dossier reçoit une URL unique dérivée de son nom, comme décrit dans la <a href="#filtrer-par-dossier">section de filtrage</a> ci-dessous.</p> <h3 id="assigner-des-modeles">Assigner des Modèles à des Dossiers</h3> <p>Vous pouvez <a href="https://www.docugenerate.com/fr/aide/articles/comment-assigner-un-modele-a-un-dossier/">assigner un modèle à un dossier</a> soit lors de la création d’un nouveau modèle, soit en modifiant les paramètres d’un modèle existant. Le menu déroulant de dossier dans les paramètres du modèle affiche l’arborescence complète des dossiers disponibles, avec une indentation reflétant les relations parent-enfant.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/template-settings-folder.png" alt="Sélection de dossier dans les paramètres du modèle"/></p> <p>Chaque modèle appartient à un seul dossier à la fois. Pour déplacer un modèle vers un autre dossier, vous changez la sélection de dossier dans les paramètres du modèle et enregistrez. Pour retirer un modèle de tout dossier, vous sélectionnez <strong>None</strong> dans le menu déroulant de dossier.</p> <h3 id="filtrer-par-dossier">Filtrer les Modèles par Dossier</h3> <p>Sélectionner un dossier dans le menu des dossiers <a href="https://www.docugenerate.com/fr/aide/articles/comment-filtrer-les-modeles-par-dossier/">filtre la vue des modèles</a> pour n’afficher que les modèles à l’intérieur de ce dossier. L’URL de la page se met à jour pour refléter le filtre actuel. Cela signifie que vous pouvez mettre en favori une vue de dossier, partager l’URL avec un collègue, ou ouvrir plusieurs onglets de navigateur chacun centré sur un dossier différent.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/filtered-view.png" alt="Modèles filtrés par dossier"/></p> <p>Le fil d’Ariane du dossier apparaît dans la barre de navigation, affichant le chemin complet du dossier sélectionné. Pour revenir à la vue par défaut avec tous les modèles, cliquez sur l’icône <strong>Clear Folder</strong> à côté du fil d’Ariane ou sélectionnez <strong>All Templates</strong> dans le menu des dossiers.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/nested-folders.png" alt="Vue filtrée de dossiers imbriqués"/></p> <p>Le dossier auquel appartient un modèle est visible à la fois dans les <a href="https://www.docugenerate.com/fr/aide/articles/comment-basculer-les-options-d-affichage/">vues Grille et Liste</a> de la page des modèles. Dans la vue <strong>Grille</strong>, le nom du dossier apparaît sous le titre du modèle avec une petite icône de dossier. Dans la vue <strong>Liste</strong>, une colonne <strong>Folder</strong> dédiée affiche la même information. Cliquer sur le nom du dossier dans l’une ou l’autre vue filtre la liste des modèles vers ce dossier.</p> <h3 id="gerer-les-dossiers">Modifier, Déplacer et Supprimer des Dossiers</h3> <p>Chaque dossier dans le menu des dossiers dispose d’un menu contextuel avec trois actions : <strong>Edit</strong> pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-modifier-un-dossier/">renommer le dossier</a> ou changer son parent, <strong>Delete</strong> pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-supprimer-un-dossier/">supprimer le dossier</a> et tous ses sous-dossiers, et <strong>Add</strong> pour créer un nouveau sous-dossier à l’intérieur de celui-ci.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/folder-context-menu-v2.png" alt="Menu contextuel de dossier"/></p> <p>Lorsque vous supprimez un dossier, tous ses sous-dossiers sont également supprimés. Les modèles à l’intérieur des dossiers supprimés ne sont pas eux-mêmes supprimés, ils deviennent simplement orphelins et retournent à la vue <strong>All Templates</strong>. Cela signifie que supprimer un dossier est toujours une opération sûre du point de vue de votre contenu de modèles.</p> <p>Déplacer un dossier sous un parent différent est pris en charge, avec une garantie de sécurité : un dossier ne peut pas être déplacé en lui-même ou dans l’un de ses propres descendants. La boîte de dialogue du dossier désactive automatiquement ces options lorsque vous modifiez un dossier existant, de sorte que la contrainte est appliquée visuellement avant même que vous puissiez tenter un déplacement invalide.</p> <h2 id="dossiers-collaboration-equipe">Dossiers pour la Collaboration d’Équipe</h2> <p>Pour les utilisateurs disposant de la fonctionnalité de <a href="https://www.docugenerate.com/fr/aide/articles/introduction-a-la-collaboration-d-equipe/">collaboration d’équipe</a>, l’organisation en dossiers s’étend naturellement aux modèles partagés. Les membres de l’équipe voient les dossiers du propriétaire de leur équipe dans une section <strong>Shared</strong> dédiée au sein du menu des dossiers, séparée de leurs propres dossiers par un séparateur visuel.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/shared-folders.png" alt="Menu des dossiers avec dossiers personnels et partagés"/></p> <p>Le modèle de visibilité est intentionnel : les membres de l’équipe peuvent parcourir et filtrer par les dossiers partagés du propriétaire de l’équipe, mais ils ne peuvent pas créer, renommer, ou supprimer de dossiers dans la hiérarchie du propriétaire de l’équipe. Cela maintient la structure de dossiers cohérente au sein de l’équipe et donne au propriétaire un contrôle clair sur la façon dont les modèles sont organisés pour tous.</p> <p>Lorsqu’un membre de l’équipe est ajouté ou retiré, la structure de dossiers reflète ce changement immédiatement, sans nécessiter d’action de la part du membre. De même, lorsque le propriétaire effectue des modifications à sa structure de dossiers, ces changements se propagent à la vue de chaque membre de l’équipe dès qu’ils sont enregistrés.</p> <h2 id="dossiers-api">Prise en Charge des Dossiers dans l’API</h2> <p>Pour les utilisateurs qui gèrent leurs modèles via l’<a href="https://api.docugenerate.com/" target="_blank">API DocuGenerate</a>, l’organisation en dossiers est accessible via les mêmes points de terminaison que vous utilisez déjà. Le dossier auquel appartient un modèle est représenté comme un paramètre <code class="language-plaintext highlighter-rouge">folder</code> sur le modèle, exprimé sous forme de tableau de noms de dossiers qui trace le chemin depuis la racine jusqu’au dossier assigné. Par exemple, un modèle à l’intérieur d’un sous-dossier nommé « Contracts » au sein d’un dossier parent nommé « Legal » a son champ <code class="language-plaintext highlighter-rouge">folder</code> défini sur <code class="language-plaintext highlighter-rouge">["Legal", "Contracts"]</code>.</p> <h3 id="api-creer-un-modele">Spécifier un Dossier lors de la Création d’un Modèle</h3> <p>Lors de la <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">création d’un modèle</a> via l’API, vous pouvez inclure le paramètre <code class="language-plaintext highlighter-rouge">folder</code> dans votre requête pour assigner le modèle à un dossier spécifique. Si le chemin de dossier n’existe pas encore dans votre compte, DocuGenerate le crée automatiquement, y compris tous les dossiers intermédiaires sur le chemin.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/api-create-template-v2.png" alt="Paramètre de dossier lors de la création d'un modèle"/></p> <p>Ce comportement de création automatique facilite la mise en place de votre structure de dossiers par programmation au fur et à mesure que vous créez des modèles, sans avoir besoin de préconfigurer la hiérarchie via l’application web au préalable.</p> <h3 id="api-mettre-a-jour-un-modele">Déplacer des Modèles Entre Dossiers</h3> <p>Pour déplacer un modèle existant vers un autre dossier, vous pouvez utiliser le point de terminaison <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">update template</a> avec une nouvelle valeur pour le paramètre <code class="language-plaintext highlighter-rouge">folder</code>. Le définir sur un tableau vide (<code class="language-plaintext highlighter-rouge">[]</code>) retire le modèle de tout dossier, le ramenant à l’état orphelin.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/api-update-template.png" alt="Paramètre de dossier lors de la mise à jour d'un modèle"/></p> <p>Comme pour la création de modèle, si le nouveau chemin de dossier n’existe pas encore, DocuGenerate crée automatiquement les dossiers manquants (à condition que vous soyez le propriétaire du modèle). Les membres de l’équipe disposant d’une permission d’écriture sur un modèle partagé peuvent mettre à jour le contenu et les paramètres du modèle, mais ils ne peuvent pas créer de nouveaux dossiers dans la hiérarchie du propriétaire du modèle, reflétant le <a href="#dossiers-collaboration-equipe">comportement de l’application web</a>.</p> <h3 id="api-lister-les-modeles">Filtrer les Modèles par Dossier</h3> <p>Le point de terminaison <a href="https://api.docugenerate.com/#/Template/getTemplates" target="_blank">list templates</a> accepte un paramètre de requête <code class="language-plaintext highlighter-rouge">folder</code> qui filtre la réponse vers un dossier spécifique. Le paramètre prend la même forme que pour la <a href="#api-creer-un-modele">création</a> ou la <a href="#api-mettre-a-jour-un-modele">mise à jour</a> d’un modèle, exprimé sous forme de tableau de noms de dossiers qui trace le chemin depuis la racine jusqu’au dossier assigné.</p> <p><img src="https://www.docugenerate.com/assets/posts/034-template-folders/api-query-template.png" alt="Paramètre de dossier lors de l'interrogation des modèles"/></p> <p>Ce filtre suit la même logique que le <a href="#filtrer-par-dossier">filtrage de l’application web</a> : sélectionner un dossier ne renvoie que les modèles directement assignés à celui-ci, pas les modèles des sous-dossiers. Pour récupérer les modèles d’un dossier et de tous ses sous-dossiers, vous devriez effectuer des requêtes séparées pour chaque sous-dossier.</p> <h2 id="scenarios-dusage">Scénarios d’Usage</h2> <p>Explorons quelques scénarios concrets où les dossiers de modèles peuvent apporter une valeur significative.</p> <h3 id="scenario-departements">Scénario 1 : Organisation par Département</h3> <p>Une <strong>entreprise de taille moyenne</strong> utilise DocuGenerate pour gérer des modèles dans plusieurs départements : RH, Juridique, Ventes, et Finance. Avec des dizaines de modèles dans chaque département, trouver le bon était devenu chronophage, et les nouvelles recrues avaient du mal à localiser les modèles pertinents pour leur rôle.</p> <p>Après avoir organisé les modèles en dossiers de premier niveau par département, avec des sous-dossiers pour des types de documents spécifiques (lettres d’offre, contrats, propositions, factures), les membres de l’équipe peuvent naviguer directement vers le dossier de leur département et ne voir que les modèles pertinents pour eux. Des URL de dossiers partageables sont ajoutées à la documentation d’intégration de chaque équipe, offrant aux nouvelles recrues un lien direct vers les modèles qu’elles utiliseront dès le premier jour.</p> <h3 id="scenario-clients">Scénario 2 : Organisation par Client pour une Agence</h3> <p>Une <strong>agence de marketing</strong> génère des contrats, propositions, et rapports personnalisés pour des dizaines de clients, chacun avec sa propre identité visuelle et ses propres conditions. Avant les dossiers, l’équipe de l’agence s’appuyait sur une convention de nommage comme <code class="language-plaintext highlighter-rouge">[nom-client]_[type-de-document]</code> pour localiser les modèles, mais cela créait des noms de modèles longs et difficiles à parcourir, et compliquait l’intégration des nouveaux gestionnaires de comptes.</p> <p>En créant un dossier de premier niveau par client et en organisant les types de documents en sous-dossiers, les gestionnaires de comptes de l’agence peuvent désormais parcourir une vue claire et hiérarchique de tous les documents pour un client donné. Lors de l’intégration d’un nouveau client, le gestionnaire de compte crée un nouveau dossier client et y reproduit la structure de sous-dossiers standard.</p> <h3 id="scenario-api">Scénario 3 : Configuration Programmatique des Dossiers via l’API</h3> <p>Une <strong>équipe d’automatisation documentaire</strong> intègre DocuGenerate dans ses outils internes, générant des modèles par programmation à partir d’une base de données de modèles de documents. Leur système interne organise les modèles par région et par catégorie de document, et ils souhaitent que leur compte DocuGenerate reflète exactement cette structure.</p> <p>À l’aide de l’API, leur intégration envoie le paramètre <code class="language-plaintext highlighter-rouge">folder</code> approprié lors de la création de chaque modèle, construisant automatiquement une hiérarchie de dossiers correspondant à leur taxonomie interne. Cela maintient leur compte DocuGenerate synchronisé avec leur source de vérité sans aucune gestion manuelle de dossiers dans l’application web, même à mesure que leur catalogue de modèles évolue.</p> <h2 id="bonnes-pratiques">Bonnes Pratiques pour l’Organisation en Dossiers</h2> <p>Pour tirer le meilleur parti des dossiers de modèles à mesure que votre bibliothèque s’agrandit, voici quelques pratiques qui aident à garder votre structure utile et maintenable dans le temps :</p> <ol> <li> <p><strong>Commencez par des catégories larges et affinez selon les besoins.</strong> Résistez à la tentation de créer des hiérarchies de dossiers profondes dès le premier jour. Commencez par quelques dossiers de premier niveau correspondant aux distinctions les plus importantes de votre flux de travail, et ajoutez des sous-dossiers uniquement lorsqu’une catégorie accumule suffisamment de modèles pour justifier une subdivision.</p> </li> <li> <p><strong>Faites correspondre les dossiers à la façon dont votre équipe pense, pas à la structure de vos données.</strong> Une structure de dossiers fonctionne le mieux lorsqu’elle reflète le modèle mental déjà utilisé par votre équipe. Si tout le monde parle de « contrats du T1 » plutôt que de « contrats de janvier à mars », laissez le nom du dossier correspondre au vocabulaire parlé, même s’il diverge de vos standards de nommage internes.</p> </li> <li> <p><strong>Utilisez des URL de dossiers partageables pour l’intégration.</strong> Lorsque de nouveaux membres rejoignent l’équipe, partagez des liens directs vers les dossiers avec lesquels ils travailleront le plus souvent. Cela réduit considérablement la courbe d’apprentissage et garantit que tout le monde a connaissance des modèles pertinents dès le départ.</p> </li> <li> <p><strong>Réévaluez périodiquement.</strong> Les structures de dossiers qui avaient du sens il y a un an peuvent ne plus correspondre à la façon dont votre équipe travaille aujourd’hui. Planifiez une révision périodique (trimestrielle ou semestrielle) pour consolider les dossiers sous-utilisés, diviser les dossiers devenus trop grands, ou restructurer entièrement si votre flux de travail a considérablement changé.</p> </li> </ol> <h2 id="conclusion">Conclusion</h2> <p>Les Dossiers de Modèles sont l’une des fonctionnalités les plus demandées pour DocuGenerate, et nous sommes heureux de livrer enfin un modèle organisationnel qui s’adapte à la croissance de votre bibliothèque de modèles. Que vous gériez une petite poignée de modèles ou des centaines répartis sur plusieurs départements et clients, les dossiers vous offrent la structure et la flexibilité nécessaires pour trouver ce dont vous avez besoin et le partager avec votre équipe.</p> <p>Comme toujours, nous accueillons vos retours à mesure que vous commencez à organiser vos modèles avec cette nouvelle fonctionnalité. Nous sommes particulièrement intéressés d’entendre parler des flux de travail où les dossiers font gagner un temps significatif à votre équipe, ainsi que de toute difficulté rencontrée en usage réel que nous devrions prendre en compte pour de futures améliorations.</p> <h3 id="ressources">Ressources</h3> <ul> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-dossier/">Comment créer un dossier?</a></li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-assigner-un-modele-a-un-dossier/">Comment assigner un modèle à un dossier?</a></li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-filtrer-les-modeles-par-dossier/">Comment filtrer les modèles par dossier?</a></li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-des-dossiers-imbriques/">Comment créer des dossiers imbriqués?</a></li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-modifier-un-dossier/">Comment modifier un dossier?</a></li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-supprimer-un-dossier/">Comment supprimer un dossier?</a></li> <li>Documentation de l’API <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">Create template</a>.</li> <li>Documentation de l’API <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">Update template</a>.</li> <li>Documentation de l’API <a href="https://api.docugenerate.com/#/Template/getTemplates" target="_blank">List templates</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[Les dossiers apportent un modèle d'organisation hiérarchique familier à vos modèles DocuGenerate, facilitant le regroupement des modèles apparentés à mesure que votre bibliothèque s'agrandit. Découvrez comment créer et gérer des dossiers pour garder votre espace de travail organisé.]]></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">Formater les Dates avec des Filtres de Données et des Champs Automatiques</title> <link href="https://www.docugenerate.com/fr/blog/formater-les-dates-avec-des-filtres-de-donnees-et-des-champs-automatiques/" rel="alternate" type="text/html" title="Formater les Dates avec des Filtres de Données et des Champs Automatiques"/> <published>2026-05-31T00:00:00+00:00</published> <updated>2026-05-31T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/formater-les-dates-avec-des-filtres-de-donnees-et-des-champs-automatiques</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/formater-les-dates-avec-des-filtres-de-donnees-et-des-champs-automatiques/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les dates apparaissent dans presque tous les documents métiers. Les contrats précisent des dates d’entrée en vigueur, les factures portent des dates d’échéance, les certificats portent des dates d’émission, et les lettres de recommandation sont datées pour établir leur pertinence. La manière dont ces dates sont présentées est importante, car les conventions de format de date varient considérablement selon le pays et la région. Aux États-Unis, le format standard est <code class="language-plaintext highlighter-rouge">MM/DD/YYYY</code>, tandis que la majeure partie de l’Europe et du reste du monde utilise <code class="language-plaintext highlighter-rouge">DD/MM/YYYY</code>. Sans contrôle sur le formatage des dates, une date comme le 4 décembre 2026 pourrait apparaître comme <code class="language-plaintext highlighter-rouge">12/04/2026</code> pour un lecteur américain ou <code class="language-plaintext highlighter-rouge">04/12/2026</code> pour un lecteur européen, chacun ne la lisant correctement que selon sa propre convention.</p> <p>DocuGenerate vous offre deux façons distinctes de contrôler l’affichage des dates dans vos documents générés, chacune adaptée à un cas d’usage différent. La première est le filtre <code class="language-plaintext highlighter-rouge">date</code>, qui formate une valeur de date fournie par votre jeu de données et l’affiche dans le format de sortie que vous spécifiez. La seconde consiste à insérer la date du jour directement dans le modèle de document à l’aide de Word ou LibreOffice, afin que le champ soit automatiquement rempli avec la date du jour au moment de la génération.</p> <p>Cet article passe en revue les deux approches en utilisant le modèle de <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter.docx">Lettre de Recommandation</a> de notre <a href="https://www.docugenerate.com/fr/modeles/#lettres">Bibliothèque de Modèles</a>. Pour chaque approche, nous montrerons comment produire à la fois les formats de date américain et européen, afin que vous disposiez d’une référence concrète quelle que soit la convention suivie par vos documents.</p> <h2 id="filtre-de-date">Formater les Dates depuis Votre Jeu de Données</h2> <p>Lorsque votre jeu de données contient des valeurs de date, le <a href="https://www.docugenerate.com/fr/aide/articles/comment-formater-les-donnees-avec-des-filtres/#format-dates">filtre de date</a> de DocuGenerate vous donne un contrôle complet sur l’affichage de ces dates dans le document généré. C’est l’approche adaptée lorsque la date est une donnée significative liée à un événement spécifique, comme la date de signature d’un contrat ou la date à laquelle une lettre est officiellement adressée.</p> <p>Le filtre fait partie de l’ensemble de fonctionnalités de la <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/">syntaxe avancée</a>, vous devez donc <a href="https://www.docugenerate.com/fr/aide/articles/comment-activer-la-syntaxe-avancee/">l’activer</a> avant qu’il ne prenne effet. Pour cela, ouvrez le modèle, allez dans <strong>Settings</strong>, cochez la case <strong>Enable enhanced syntax</strong>, et cliquez sur <strong>Save</strong>.</p> <h3 id="preparation-des-donnees">Préparer les Données</h3> <p>Le filtre <code class="language-plaintext highlighter-rouge">date</code> attend que la valeur d’entrée soit au format <a href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank" rel="nofollow noopener">ISO 8601</a>, plus précisément <code class="language-plaintext highlighter-rouge">yyyy-MM-dd</code>. Il s’agit d’une norme reconnue internationalement pour représenter les dates qui évite l’ambiguïté des conventions régionales. Si vos données stockent actuellement les dates dans un autre format, vous devrez les convertir au format ISO avant de les transmettre à DocuGenerate. Le filtre est ignoré pour les dates non formatées en ISO, et la valeur d’entrée sera affichée telle quelle dans le document généré.</p> <h3 id="mise-a-jour-du-modele">Mettre à Jour le Modèle</h3> <p>Le <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter.docx">modèle original</a> utilise la syntaxe par défaut de DocuGenerate avec des délimiteurs en crochets. Lorsque la syntaxe avancée est activée, l’analyseur de balises est plus strict et ne tolère pas d’espaces supplémentaires à l’intérieur des balises de fusion, donc des balises comme <code class="language-plaintext highlighter-rouge">[Job Title]</code> doivent devenir <code class="language-plaintext highlighter-rouge">[Job_Title]</code>. Le <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Date Filter.docx">modèle mis à jour</a> a déjà été modifié pour avoir des balises sans espaces et est prêt à être utilisé avec la syntaxe avancée.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/recommendation-letter-date-filter-template.png" alt="Modèle Recommendation Letter avec balise de fusion à filtre de date"/></p> <h3 id="appliquer-le-filtre">Appliquer le Filtre de Date</h3> <p>Avec la syntaxe avancée activée, vous pouvez formater la date directement à l’intérieur de la balise de fusion en utilisant la syntaxe suivante :</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Date | date:'date_format']
</code></pre></div></div> <p>La chaîne <code class="language-plaintext highlighter-rouge">date_format</code> utilise des symboles issus de la <a href="https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table" target="_blank" rel="nofollow noopener">norme technique Unicode</a> pour les motifs de date et d’heure. Les deux formats les plus couramment nécessaires pour les conventions américaine et européenne sont :</p> <table class="table table-bordered"> <thead> <tr> <th>Balise de Fusion</th> <th>Résultat</th> <th>Convention</th> </tr> </thead> <tbody> <tr> <td><code>[Date &#124; date:'MM/dd/yyyy']</code></td> <td>12/04/2026</td> <td>Américaine (Mois/Jour/Année)</td> </tr> <tr> <td><code>[Date &#124; date:'dd/MM/yyyy']</code></td> <td>04/12/2026</td> <td>Européenne (Jour/Mois/Année)</td> </tr> <tr> <td><code>[Date &#124; date:'MMMM d, yyyy']</code></td> <td>December 4, 2026</td> <td>Nom du mois écrit en toutes lettres</td> </tr> <tr> <td><code>[Date &#124; date:'dd-MM-yyyy']</code></td> <td>04-12-2026</td> <td>Européenne avec tirets</td> </tr> </tbody> </table> <p>Le filtre prend également en charge des formats plus expressifs si vous devez afficher le nom complet du mois, inclure le jour de la semaine, ou ajouter des composants d’heure. Pour une liste complète des options de formatage et des exemples, consultez l’article <a href="https://www.docugenerate.com/fr/aide/articles/comment-formater-les-donnees-avec-des-filtres/#format-dates">Comment formater les données avec des filtres</a> de notre Centre d’Aide.</p> <h2 id="date-du-jour">Insérer la Date du Jour dans le Modèle</h2> <p>Pour les documents où la date doit toujours refléter la date actuelle au moment de la génération, il est inutile de transmettre une date via le jeu de données. Une lettre de recommandation, un rapport d’état quotidien, ou un certificat ponctuel n’a généralement besoin que de la date du jour, et il serait redondant de l’inclure dans chaque requête API ou ligne de feuille de calcul. Pour ces cas, vous pouvez insérer un champ de date directement dans le modèle Word. Lorsque DocuGenerate traite le document, le champ s’évalue et affiche automatiquement la date actuelle, sans aucune valeur de date dans les données.</p> <h3 id="date-word">Ajouter la Date du Jour dans Microsoft Word</h3> <p>Microsoft Word vous permet d’insérer la date actuelle via le champ <a href="https://support.microsoft.com/en-US/Word/insert-today-s-date-in-a-word-document" target="_blank" rel="nofollow noopener">Date et heure</a>. Cela ouvre une boîte de dialogue avec une liste de formats de date et d’heure et une case à cocher intitulée <strong>Mettre à jour automatiquement</strong>. Sélectionner cette option convertit la date statique en un champ dynamique qui se met à jour chaque fois que le document est ouvert ou traité.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/word-insert-date-time-dialog.png" alt="Insertion du champ date et heure du jour dans Microsoft Word"/></p> <p>Les formats disponibles dans Word sont prédéterminés et liés aux paramètres régionaux du système. Vous pouvez changer la langue depuis le menu déroulant, et la liste des formats disponibles est mise à jour pour correspondre à la langue sélectionnée.</p> <p>Si vous souhaitez plus de contrôle sur le format de date, vous pouvez plutôt choisir <strong>Insérer un champ</strong>, et sélectionner la catégorie <strong>Date et heure</strong> et le nom de champ <strong>Date</strong>. Cliquez sur <strong>Options</strong> pour choisir parmi une liste de formats de date prédéfinis, ou saisissez le format souhaité dans le champ de texte <strong>Code de champ</strong>. Pour obtenir le même résultat et avoir la date formatée pour la langue <strong>française</strong>, vous devrez utiliser la valeur <code class="language-plaintext highlighter-rouge">DATE \@ "dd/MM/yyyy"</code> dans le code de champ. Mais cela nécessite une bonne connaissance de la syntaxe des champs de Word et n’est pas pratique pour la plupart des utilisateurs.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/word-insert-field-dialog.png" alt="Insertion du champ date du jour dans Microsoft Word"/></p> <p>Pour un modèle construit avec cette approche, consultez le <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in Word.docx">modèle spécifique à Word</a>, où la balise de fusion <code class="language-plaintext highlighter-rouge">[Date]</code> a été remplacée par le champ de date automatique de Word configuré au format européen.</p> <h3 id="date-libreoffice">Ajouter la Date du Jour dans LibreOffice</h3> <p>LibreOffice Writer offre un moyen plus flexible d’insérer la date du jour, avec un formatage tenant compte des paramètres régionaux et couvrant un large éventail de conventions de date régionales. Pour insérer un champ de date, allez dans <strong>Insertion</strong> &gt; <strong>Champ</strong> &gt; <strong>Date (variable)</strong>, ce qui ajoute un champ de date à votre document avec un format par défaut. Faites un clic droit sur la date nouvellement insérée et sélectionnez <strong>Modifier les champs</strong>, ce qui ouvre la boîte de dialogue des champs.</p> <p>Dans cette boîte de dialogue, la colonne <strong>Format</strong> sur la droite affiche une liste de formats prédéfinis pour la langue système par défaut. Ces valeurs par défaut couvrent les motifs courants, mais pour accéder aux formats d’autres langues, cliquez sur l’option <strong>Formats supplémentaires</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/033-date-formatting/libreoffice-fields-dialog.png" alt="Insertion d'un champ de date dans LibreOffice via la boîte de dialogue des champs"/></p> <p>Cela ouvre une nouvelle boîte de dialogue où la capacité de formatage de date de LibreOffice devient particulièrement utile. Un menu déroulant <strong>Langue</strong> sur le côté droit de la boîte de dialogue vous permet de choisir parmi des centaines de combinaisons de langue et de région. Une fois la langue choisie, la liste <strong>Format</strong> se met à jour pour afficher des motifs de date naturels pour cette région.</p> <p>Par exemple, sélectionner <strong>Français (France)</strong> rend disponibles des motifs comme <code class="language-plaintext highlighter-rouge">JJ/MM/AAAA</code>, qui est la notation française pour <code class="language-plaintext highlighter-rouge">DD/MM/YYYY</code>. Vous pouvez également saisir un code de format personnalisé directement dans le champ <strong>Code de Format</strong> si aucune des options listées ne correspond à vos besoins.</p> <p>Pour un modèle construit de cette manière, consultez le <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in LibreOffice.docx">modèle spécifique à LibreOffice</a>. Cette approche est particulièrement pratique lorsque vous maintenez plusieurs variantes du même modèle pour différentes régions. Chaque version peut utiliser le même contenu mais avoir le champ de date configuré pour la région cible, garantissant que le résultat correspond aux attentes locales sans modifier les données ni le flux de génération.</p> <h2 id="choisir-lapproche">Choisir la Bonne Approche</h2> <p>Les deux approches répondent à des scénarios différents et peuvent toutes deux s’appliquer au sein de la même organisation selon le type de document. Le <a href="#filtre-de-date">filtre de date</a> est le bon choix lorsque la date est une donnée significative liée à un événement spécifique. La date de signature d’un contrat, la date d’échéance d’une facture, ou la date de référence d’une lettre appartiennent toutes aux données, et le filtre vous permet de les afficher selon la convention régionale attendue par le destinataire. Comme il prend une seule entrée ISO 8601 et la formate à la sortie, vous pouvez servir des audiences américaines et européennes avec les mêmes données en changeant simplement la chaîne de format dans le modèle.</p> <p>Insérer la <a href="#date-du-jour">date du jour</a> directement dans le modèle est le bon choix lorsqu’aucune valeur de date n’existe dans les données et que le document doit simplement être daté du jour actuel. Cela permet de garder le jeu de données propre et la requête de génération simple. Les équipes qui génèrent des documents pour plusieurs régions maintiennent souvent un ensemble de modèles spécifiques à chaque région, chacun avec le champ de date préconfiguré pour son audience cible, et orientent chaque flux régional vers le modèle approprié.</p> <h2 id="conclusion">Conclusion</h2> <p>Faire en sorte que les dates s’affichent correctement dans les documents générés revient à identifier d’où provient la valeur de la date. Si elle provient de votre jeu de données, utilisez le filtre de DocuGenerate avec une chaîne de format correspondant à votre convention cible. Si le document doit toujours refléter la date du jour, insérez un champ de date dans le modèle à l’aide de Word ou LibreOffice, pour un contrôle régional plus avancé. Les deux approches fonctionnent avec le même format de modèle et s’intègrent naturellement dans le flux de génération de DocuGenerate sans nécessiter de modification de la manière dont les documents sont générés ou livrés.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Date Filter.docx">Lettre de Recommandation</a> configuré pour le filtre de date.</li> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in Word.docx">Lettre de Recommandation</a> utilisant le champ de date automatique de Word.</li> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/033-date-formatting/Recommendation Letter with Today's Date in LibreOffice.docx">Lettre de Recommandation</a> utilisant le champ de date de LibreOffice.</li> <li>L’article du Centre d’Aide DocuGenerate sur <a href="https://www.docugenerate.com/fr/aide/articles/comment-formater-les-donnees-avec-des-filtres/">comment formater les données avec des filtres</a>.</li> <li>La documentation de Microsoft sur <a href="https://support.microsoft.com/en-US/Word/insert-today-s-date-in-a-word-document" target="_blank" rel="nofollow noopener">l’insertion de la date du jour dans un document Word</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[Contrôler l'affichage des dates dans les documents générés est l'un des défis de formatage les plus courants, surtout lors de la production de documents pour différentes régions. Cet article couvre deux approches différentes, avec des exemples pour les formats de date américain et européen.]]></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">Fusion de Documents avec DocuGenerate Comparée à Microsoft Word</title> <link href="https://www.docugenerate.com/fr/blog/fusion-de-documents-avec-docugenerate-comparee-a-microsoft-word/" rel="alternate" type="text/html" title="Fusion de Documents avec DocuGenerate Comparée à 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/fr/blog/fusion-de-documents-avec-docugenerate-comparee-a-microsoft-word</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/fusion-de-documents-avec-docugenerate-comparee-a-microsoft-word/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>La fusion de documents (mail merge) consiste à combiner un modèle de document avec une source de données pour produire plusieurs documents personnalisés en une seule opération. Elle est couramment utilisée pour les contrats, les lettres d’offre, les factures, les certificats, et tout autre document dont la structure générale reste la même mais dont certains champs changent selon le destinataire ou l’enregistrement. <a href="https://www.microsoft.com/en-us/microsoft-365/word" target="_blank" rel="nofollow noopener">Microsoft Word</a> propose la fusion de documents en tant que fonctionnalité intégrée depuis des décennies, ce qui en fait un point de départ familier pour de nombreuses équipes déjà habituées à l’écosystème Microsoft 365. Les plateformes dédiées de génération de documents comme <a href="https://www.docugenerate.com/">DocuGenerate</a> abordent le même problème différemment : traitement basé sur le cloud, une API REST, et un ensemble de fonctionnalités de modèle qui vont bien au-delà de ce que Word prend en charge nativement.</p> <p>Dans cet article, nous évaluons les deux approches en utilisant le même modèle et le même fichier de données afin que les résultats soient directement comparables. Nous passons en revue chaque flux de travail du début à la fin, puis examinons comment les deux outils gèrent des fonctionnalités spécifiques, notamment les formats de sortie, la génération en masse, les noms de fichiers dynamiques, le contenu conditionnel, les images, et les QR codes. L’objectif n’est pas de désigner un gagnant universel, mais de vous donner une vision claire de la place de chaque outil afin que vous puissiez choisir celui qui convient à votre flux de travail.</p> <h2 id="fichiers-dexemple">Les Fichiers d’Exemple</h2> <p>Pour garder la comparaison cohérente, les deux flux de travail de cet article utilisent les deux mêmes fichiers. Le modèle est le document Word <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.docx">Employment Contract.docx</a> de notre <a href="https://www.docugenerate.com/fr/modeles/#contrats">Bibliothèque de Modèles</a>. Il contient des champs de fusion pour les informations de l’employé, les dates du contrat, la rémunération, et d’autres clauses contractuelles standards.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/employment-contract-template.png" alt="Modèle Employment Contract avec balises de fusion"/></p> <p>La source de données est la feuille de calcul correspondante <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.xlsx">Employment Contract.xlsx</a>, où chaque ligne représente un employé et les en-têtes de colonnes correspondent exactement aux noms des champs de fusion du modèle.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/employment-contract-data.png" alt="Feuille de calcul de données Employment Contract"/></p> <p>Il est important de noter que les noms de colonnes de la feuille de calcul doivent correspondre exactement aux noms des balises de fusion du modèle pour que l’un ou l’autre outil fonctionne correctement. Cette exigence est commune à Word et à DocuGenerate, et s’applique quel que soit le format de délimiteur utilisé.</p> <h2 id="fusion-dans-word">Fusion de Documents dans Microsoft Word</h2> <p>La fusion de documents de Word est accessible depuis l’onglet <a href="https://support.microsoft.com/en-us/office/use-mail-merge-for-bulk-email-letters-labels-and-envelopes-f488ed5b-b849-4c11-9cff-932c49474705" target="_blank" rel="nofollow noopener"><strong>Mailings</strong></a>, qui propose un flux de travail structuré pour connecter un modèle à une source de données, insérer des champs, prévisualiser le résultat, et finaliser la fusion. Tout cela se déroule localement dans l’application Word.</p> <h3 id="source-de-donnees-word">Connecter la Source de Données Excel</h3> <p>Pour démarrer une fusion, ouvrez le modèle Employment Contract dans Word et accédez à <strong>Mailings</strong> &gt; <strong>Select Recipients</strong> &gt; <strong>Use an Existing List</strong>. Word vous invite à sélectionner un fichier. Après avoir sélectionné <code class="language-plaintext highlighter-rouge">Employment Contract.xlsx</code>, une boîte de dialogue apparaît pour vous demander de <a href="https://support.microsoft.com/en-us/office/mail-merge-using-an-excel-spreadsheet-858c7d7f-5cc0-4ba1-9a7b-0a948fa3d7d3" target="_blank" rel="nofollow noopener">choisir quelle feuille</a> utiliser comme source de données, ce qui est utile lorsque votre classeur contient plusieurs onglets.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-select-recipients.png" alt="Sélection de la source de données Excel dans Word"/></p> <p>Une fois la source de données connectée, Word lit les en-têtes de colonnes et les rend disponibles comme champs de fusion pendant toute la session. Vous pouvez également ouvrir <strong>Edit Recipient List</strong> pour filtrer les enregistrements, les trier, ou exclure certaines lignes avant de lancer la fusion.</p> <p>Un point à noter : lors de l’enregistrement du modèle Word après l’avoir connecté à un fichier Excel, le chemin vers ce fichier est stocké à l’intérieur du document. Si le fichier Excel est ensuite déplacé, renommé, ou supprimé, la réouverture du modèle déclenchera une erreur indiquant <em>“Word cannot find its data source”</em>. Il vous sera alors demandé de localiser à nouveau le fichier ou de supprimer entièrement le lien vers la source de données. Ce comportement de liaison signifie que le modèle et le fichier de données doivent rester synchronisés, ce qui peut devenir une contrainte de maintenance lors du partage de modèles au sein d’une équipe.</p> <h3 id="champs-de-fusion-word">Insérer les Champs de Fusion</h3> <p>Une fois la source de données connectée, vous pouvez placer des champs de fusion n’importe où dans le modèle via <strong>Mailings</strong> &gt; <strong>Insert Merge Field</strong>. Word encadre chaque champ avec son format de délimiteur fixe <code class="language-plaintext highlighter-rouge">«Nom_Du_Champ»</code>, utilisant des guillemets français insérés via l’interface plutôt que tapés directement. Ce format de délimiteur n’est pas configurable : tous les champs de fusion Word utilisent <code class="language-plaintext highlighter-rouge">«»</code> et ne peuvent pas être changés pour une autre paire de caractères.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-insert-merge-fields.gif" alt="Insertion de champs de fusion dans le modèle Word"/></p> <p>Notez que Word remplace les espaces dans les noms de colonnes par des underscores lors de la création des noms de champs pour la fusion. Ainsi, la colonne nommée <code class="language-plaintext highlighter-rouge">Contract Date</code> dans la feuille de calcul devient <code class="language-plaintext highlighter-rouge">«Contract_Date»</code> dans la liste des champs de fusion. Cela fonctionne bien dans Word, mais il est utile de garder cela à l’esprit si vous souhaitez utiliser le même modèle dans DocuGenerate, par exemple, car les noms de colonnes dans Excel ne correspondront alors plus exactement aux balises de fusion.</p> <h3 id="previsualiser-les-resultats">Prévisualiser les Résultats</h3> <p>Le bouton <strong>Preview Results</strong> de l’onglet <strong>Mailings</strong> remplace chaque champ de fusion par la valeur correspondante de la première ligne de données. Des flèches de navigation permettent de parcourir les autres enregistrements pour vérifier le résultat avant de valider la fusion complète. Cet aperçu instantané est l’une des fonctionnalités les plus utiles de Word pour le développement de modèles.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-preview-results.gif" alt="Aperçu des résultats de fusion dans Word"/></p> <h3 id="finaliser-la-fusion-word">Finaliser la Fusion</h3> <p>Une fois le modèle vérifié, <strong>Finish &amp; Merge</strong> propose trois options : modifier les documents fusionnés dans un nouveau fichier Word, envoyer directement vers une imprimante, ou envoyer comme messages e-mail individuels via Outlook. Sélectionner <strong>Edit Individual Documents</strong> produit un seul fichier Word où chaque enregistrement fusionné est séparé par un saut de page.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/word-finish-merge.png" alt="Finalisation de la fusion dans Word"/></p> <p>Vous pouvez télécharger une copie du <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract Merged.docx">document fusionné</a> pour voir à quoi ressemble le résultat. Pour obtenir un PDF, vous devez enregistrer ou exporter ce fichier manuellement après sa génération.</p> <p>Word ne génère pas de fichiers individuels par enregistrement dans le cadre du processus de fusion. L’ensemble du flux de travail est limité au poste de travail : il n’y a pas d’API, pas de traitement cloud, et aucun moyen de déclencher une fusion par programmation depuis une autre application.</p> <h2 id="fusion-dans-docugenerate">Fusion de Documents dans DocuGenerate</h2> <p>DocuGenerate est une plateforme de génération de documents basée sur le cloud qui fonctionne depuis une application web et une <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-la-reference-de-l-api/">API REST</a>. Le modèle reste un fichier DOCX standard, vous pouvez donc le concevoir et le modifier dans Word comme d’habitude. L’étape de génération se déroule dans le cloud et produit le document final sans nécessiter de logiciel local autre qu’un navigateur ou un client HTTP.</p> <h3 id="configurer-le-modele-docugenerate">Configurer le Modèle</h3> <p>Pour commencer, téléversez le modèle Employment Contract depuis la page <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">Nouveau Modèle</a> de l’application web. DocuGenerate lit les <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> du document et les utilise comme champs à remplir au moment de la génération.</p> <p>Les balises de fusion peuvent utiliser des crochets <code class="language-plaintext highlighter-rouge">[]</code> comme <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-un-delimiteur-de-balise/">délimiteurs</a>, mais il est également possible de <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">personnaliser les délimiteurs</a> avec n’importe quelle paire de caractères de votre choix, y compris les guillemets <code class="language-plaintext highlighter-rouge">«»</code> au style Word, si vous souhaitez réutiliser un modèle de fusion Word existant sans le modifier.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/docugenerate-employment-contract-v2.png" alt="Modèle Employment Contract dans DocuGenerate"/></p> <h3 id="generer-depuis-excel">Générer depuis Excel</h3> <p>Pour <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-d-un-fichier-excel-ou-csv/">générer des documents à partir d’Excel</a>, cliquez sur <strong>New Document</strong> sur le modèle, choisissez l’option <strong>Excel or CSV file</strong>, et téléversez <code class="language-plaintext highlighter-rouge">Employment Contract.xlsx</code>. DocuGenerate détecte les feuilles du classeur et vous laisse choisir laquelle utiliser. Comme avec Word, les noms de colonnes de la feuille de calcul doivent correspondre exactement aux noms des balises de fusion du modèle pour que la génération réussisse.</p> <p>Depuis la section <strong>Data Items</strong>, vous pouvez sélectionner les enregistrements à utiliser pour la fusion en cliquant sur ceux-ci. Par défaut, tous les enregistrements de la feuille de calcul sont utilisés pour générer les documents.</p> <p><img src="https://www.docugenerate.com/assets/posts/032-word-mail-merge/docugenerate-generate-from-excel.gif" alt="Génération en masse de contrats de travail dans DocuGenerate"/></p> <p>Le <a href="https://www.docugenerate.com/fr/aide/articles/selectionner-le-format-d-export-de-fusion/">format d’export de fusion</a> peut être un document Word, correspondant à la sortie native de Word, ou un PDF généré directement dans le cloud. Pour plusieurs enregistrements, vous pouvez soit <a href="https://www.docugenerate.com/fr/aide/articles/combiner-les-documents-generes-en-un-seul-fichier/">combiner tous les documents</a> en un seul fichier (voir <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contracts.docx">Employment Contracts.docx</a> pour un exemple), soit les télécharger en tant que <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-separes-pour-chaque-element/">fichiers séparés</a> regroupés dans une archive ZIP (voir <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contracts.zip">Employment Contracts.zip</a>).</p> <h3 id="generer-via-lapi">Générer via l’API</h3> <p>DocuGenerate expose également une API qui vous permet de déclencher la génération de documents depuis n’importe quel système externe. Lors de la génération à partir d’un fichier Excel <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">via l’API</a>, vous transmettez le paramètre <code class="language-plaintext highlighter-rouge">file</code>, et éventuellement le paramètre <code class="language-plaintext highlighter-rouge">sheet</code> pour spécifier quel onglet utiliser. Bien que l’application web prenne en charge la sélection d’une plage de lignes, l’API traite par défaut toutes les lignes de la feuille sélectionnée. Cela permet d’intégrer la génération de documents dans des flux d’automatisation et des applications back-end qui doivent produire des documents automatiquement.</p> <h2 id="comparaison">Comparaison des Fonctionnalités</h2> <p>Maintenant que les deux flux de travail ont été présentés, voici un examen plus approfondi de la manière dont Word et DocuGenerate gèrent les fonctionnalités spécifiques qui comptent le plus dans les flux de génération de documents. Vous pouvez cliquer sur chaque fonctionnalité du tableau ci-dessous pour accéder directement à ses détails.</p> <table class="table table-bordered"> <thead> <tr> <th>Fonctionnalité</th> <th>Word</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><a href="#comparaison-delimiteurs">Délimiteurs</a></td> <td>❌ Fixes</td> <td>✅ Personnalisables</td> </tr> <tr> <td><a href="#comparaison-apercu">Aperçu</a></td> <td>✅ Aperçu instantané dans l’app</td> <td>❌ Nécessite de générer un document</td> </tr> <tr> <td><a href="#comparaison-sortie">Export PDF</a></td> <td>❌ Uniquement via enregistrement manuel</td> <td>✅ Oui</td> </tr> <tr> <td><a href="#comparaison-masse">Génération en masse</a></td> <td>✅ Un seul fichier Word fusionné</td> <td>✅ Fichier unique combiné ou fichiers individuels regroupés dans un ZIP</td> </tr> <tr> <td><a href="#comparaison-noms-fichiers">Noms de fichiers dynamiques</a></td> <td>❌ Non</td> <td>✅ Oui, via des balises de fusion</td> </tr> <tr> <td><a href="#comparaison-api">Accès API</a></td> <td>❌ Non</td> <td>✅ Oui</td> </tr> <tr> <td><a href="#comparaison-email">Envoi par e-mail</a></td> <td>✅ Oui, via Outlook</td> <td>❌ Non, possible via des outils d’automatisation</td> </tr> <tr> <td><a href="#comparaison-conditions">Conditions</a></td> <td>✅ Oui, via Rules</td> <td>✅ Oui, y compris des expressions avancées</td> </tr> <tr> <td><a href="#comparaison-images">Images</a></td> <td>✅ Fichiers locaux uniquement</td> <td>✅ Par URL ou en Base64, avec contrôle de la taille</td> </tr> <tr> <td><a href="#comparaison-qr">QR codes et codes-barres</a></td> <td>✅ Oui, via des codes de champ</td> <td>✅ Oui, avec options de rendu</td> </tr> <tr> <td><a href="#comparaison-fusionner-pdf">Fusionner un PDF</a></td> <td>❌ Non</td> <td>✅ Oui</td> </tr> </tbody> </table> <h3 id="comparaison-delimiteurs">Délimiteurs</h3> <p>Word nécessite les guillemets <code class="language-plaintext highlighter-rouge">«»</code> comme délimiteurs des champs de fusion. Ceux-ci sont insérés via l’interface de Word et ne peuvent pas être tapés ou changés pour un autre format. DocuGenerate vous permet de <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">définir n’importe quels délimiteurs</a> dans les paramètres du modèle, facilitant la migration d’un modèle Word existant ou la correspondance avec un format déjà utilisé par votre équipe.</p> <h3 id="comparaison-apercu">Aperçu</h3> <p>Le bouton <strong>Preview Results</strong> de Word affiche instantanément le document rempli, ce qui facilite l’itération sur le modèle pendant le développement sans générer de fichier à chaque fois. DocuGenerate n’a pas d’aperçu équivalent dans l’application. Pour voir le résultat, vous générez un document. Pour les modèles en développement actif, cela ajoute une petite boucle de rétroaction par rapport à Word, bien que le fichier généré soit généralement disponible en quelques secondes.</p> <h3 id="comparaison-sortie">Export PDF</h3> <p>La fusion de documents de Word produit un document Word comme sortie principale. La conversion en PDF nécessite d’enregistrer ou d’exporter le fichier séparément, et le processus ne crée pas automatiquement de fichiers PDF individuels par enregistrement. DocuGenerate peut <a href="https://www.docugenerate.com/fr/aide/articles/selectionner-le-format-d-export-de-fusion/">générer à la fois</a> des sorties DOCX et PDF directement.</p> <h3 id="comparaison-masse">Génération en Masse</h3> <p>Les deux outils prennent en charge la génération de plusieurs documents à partir d’une feuille de calcul en une seule fois. Word assemble tous les enregistrements fusionnés dans un seul fichier Word avec des sauts de page entre les enregistrements. DocuGenerate offre plus de contrôle : vous pouvez <a href="https://www.docugenerate.com/fr/aide/articles/combiner-les-documents-generes-en-un-seul-fichier/">combiner tous les documents</a> en un seul fichier de sortie ou produire des fichiers individuels regroupés dans une archive ZIP.</p> <h3 id="comparaison-noms-fichiers">Noms de Fichiers Dynamiques</h3> <p>Word ne prend pas en charge les noms de fichiers dynamiques pour la sortie fusionnée. DocuGenerate vous permet d’utiliser des balises de fusion dans le <a href="https://www.docugenerate.com/fr/aide/articles/definir-le-nom-du-document-et-du-fichier/">nom du document</a>, afin que chaque fichier généré puisse être nommé à partir des valeurs de la ligne de données, comme le nom complet de l’employé ou la date de début du contrat. Cela permet d’avoir une sortie immédiatement organisée sans aucun renommage manuel après la fusion.</p> <h3 id="comparaison-api">Accès API</h3> <p>La fusion de documents de Word n’a pas d’API et ne peut pas être déclenchée depuis l’extérieur de l’application Word. DocuGenerate fournit une API REST qui s’intègre avec des systèmes externes, permettant de générer des documents par programmation dans le cadre d’une application back-end, ou d’une plateforme d’automatisation.</p> <h3 id="comparaison-email">Envoi par E-mail</h3> <p>Word prend en charge l’envoi de documents fusionnés comme messages e-mail individuels directement via Outlook, ce qui est utile pour la prospection en masse ou les communications internes. DocuGenerate n’a pas d’envoi d’e-mail intégré, mais peut être combiné avec des outils d’e-mail via des plateformes d’automatisation comme <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/">Zapier</a>, <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-make/">Make</a>, <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/">n8n</a>, ou <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-power-apps/">Power Automate</a> pour obtenir le même résultat dans le cadre d’un flux de travail plus large.</p> <h3 id="comparaison-conditions">Conditions</h3> <p>Les deux outils prennent en charge le contenu conditionnel dans les modèles. Word propose des <a href="https://support.microsoft.com/en-gb/office/set-the-rules-for-a-mail-merge-d546ee7e-ab7a-4d6d-b488-41f9e4bd1409" target="_blank" rel="nofollow noopener">Rules</a> telles que <code class="language-plaintext highlighter-rouge">IF...THEN...ELSE</code>, disponibles sous <strong>Mailings</strong> &gt; <strong>Rules</strong>, qui permettent d’afficher ou de masquer du contenu selon la valeur des champs. DocuGenerate utilise une <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-conditions-a-un-modele/">syntaxe de balise conditionnelle</a> écrite directement dans le corps du modèle. Avec la <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/">syntaxe avancée</a> activée, DocuGenerate prend également en charge les expressions logiques, les comparaisons, et l’arithmétique dans les conditions, ce qui va au-delà de l’ensemble de règles disponible dans Word.</p> <h3 id="comparaison-images">Images</h3> <p>Word permet des images dynamiques dans la fusion de documents, mais les images doivent être stockées localement sur la machine exécutant la fusion et configurées via des codes de champ, ce qui rend la configuration difficile à reproduire ou à automatiser. DocuGenerate prend en charge les images référencées par <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-images-a-un-modele/">URL ou Base64</a>, ce qui fonctionne de manière fiable dans les flux de travail basés sur le cloud où les images sont hébergées en externe. Vous pouvez également contrôler les dimensions de l’image directement dans la balise de fusion avec le filtre <code class="language-plaintext highlighter-rouge">size</code>, simplifiant le contrôle de la mise en page sans toucher à la structure du document.</p> <h3 id="comparaison-qr">QR Codes et Codes-Barres</h3> <p>Word prend en charge les <a href="https://support.microsoft.com/en-us/office/field-codes-mergebarcode-812fc43f-cb53-4782-8f9f-290ed08d34f3" target="_blank" rel="nofollow noopener">codes-barres et QR codes</a> via les codes de champ <code class="language-plaintext highlighter-rouge">MergeBarCode</code> et <code class="language-plaintext highlighter-rouge">DisplayBarcode</code>, bien que la syntaxe ne soit pas simple et que les options de personnalisation visuelle soient limitées. DocuGenerate dispose d’une syntaxe dédiée pour les <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-qr-codes-et-codes-a-barres/">QR codes et codes-barres</a> qui convertit n’importe quelle valeur de champ en QR code ou code-barres avec des dimensions, couleurs, et formatage configurables directement depuis la balise de fusion.</p> <h3 id="comparaison-fusionner-pdf">Fusionner un PDF</h3> <p>Word ne prend pas en charge nativement l’ajout de contenu PDF supplémentaire à un fichier de sortie fusionné. DocuGenerate vous permet de <a href="https://www.docugenerate.com/fr/aide/articles/fusionner-un-pdf-a-la-fin-des-documents-generes/">fusionner un fichier PDF statique</a> à la fin de chaque document généré, ce qui est utile pour les contrats devant inclure des conditions générales standards, des mentions légales, ou des annexes fixes dans chaque sortie.</p> <h2 id="conclusion">Conclusion</h2> <p>Pour les équipes qui travaillent entièrement dans l’environnement de bureau Microsoft 365 et doivent produire des documents fusionnés sans impliquer de systèmes externes, la fusion de documents intégrée de Word couvre bien les besoins de base. Elle gère la substitution de champs, les règles conditionnelles, et l’envoi direct par e-mail via Outlook, tout cela sans nécessiter d’outil séparé.</p> <p>DocuGenerate est mieux adapté lorsque la génération de documents doit s’intégrer dans un flux de travail plus large. Son API le rend utilisable depuis des plateformes d’automatisation, des systèmes back-end, et des outils no-code, et des fonctionnalités comme la sortie PDF, les noms de fichiers dynamiques, et la fusion de PDF couvrent des scénarios que la fusion de documents de Word ne peut pas adresser nativement. Pour les équipes utilisant déjà Word pour concevoir des modèles, la transition est minimale car les modèles ont le même format.</p> <p>Le choix entre les deux dépend de la place qu’occupe l’étape de génération dans votre processus. S’il s’agit d’une tâche ponctuelle effectuée sur un poste de travail, Word est déjà disponible et suffisant. S’il s’agit d’une étape récurrente et automatisée d’un flux de travail métier, un outil dédié comme DocuGenerate offre la flexibilité de connecter la génération de documents à vos systèmes existants.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.docx">Employment Contract.docx</a> utilisé dans cet article.</li> <li>Le fichier de données d’exemple <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract.xlsx">Employment Contract.xlsx</a>.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contract Merged.docx">document fusionné Employment Contract Merged.docx</a>, résultat de Word.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/032-word-mail-merge/Employment Contracts.zip">Employment Contracts.zip</a> avec des noms de fichiers dynamiques depuis DocuGenerate.</li> <li>La documentation de Microsoft sur la <a href="https://support.microsoft.com/en-us/office/use-mail-merge-for-bulk-email-letters-labels-and-envelopes-f488ed5b-b849-4c11-9cff-932c49474705" target="_blank" rel="nofollow noopener">fusion de documents pour lettres et documents en masse</a>.</li> <li>Le guide de Microsoft sur <a href="https://support.microsoft.com/en-us/office/mail-merge-using-an-excel-spreadsheet-858c7d7f-5cc0-4ba1-9a7b-0a948fa3d7d3" target="_blank" rel="nofollow noopener">l’utilisation d’une feuille de calcul Excel</a> comme source de données pour la fusion.</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[La fusion de documents existe depuis des décennies, et Microsoft Word continue de la proposer en tant que fonctionnalité intégrée. Mais comment se compare-t-elle à une plateforme dédiée de génération de documents comme DocuGenerate? Découvrez-le dans cette analyse comparative des deux solutions.]]></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">Générer des Annonces Immobilières avec n8n et DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/generer-des-annonces-immobilieres-avec-n8n-et-docugenerate/" rel="alternate" type="text/html" title="Générer des Annonces Immobilières avec n8n et DocuGenerate"/> <published>2026-03-13T00:00:00+00:00</published> <updated>2026-03-13T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/generer-des-annonces-immobilieres-avec-n8n-et-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/generer-des-annonces-immobilieres-avec-n8n-et-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les agences immobilières et les sociétés de gestion immobilière produisent régulièrement des documents d’annonce pour les nouveaux biens, qu’il s’agisse d’impression, de campagnes e-mail ou de portails clients. Assembler ces documents manuellement, de la collecte des informations de l’agent et de la rédaction des descriptions à la recherche de photos et à la mise en forme cohérente de l’ensemble, prend un temps qui pourrait être consacré ailleurs. Dans ce tutoriel, nous allons créer un flux automatisé utilisant <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> et <a href="https://www.docugenerate.com/">DocuGenerate</a> qui produit un PDF d’annonce immobilière soigné et prêt à partager en quelques secondes.</p> <p>Le flux utilise le nœud Anthropic dans n8n, qui appelle Claude pour générer des données d’annonce réalistes à la demande, et les fusionne dans un modèle Word conçu professionnellement via DocuGenerate. Le PDF final est ensuite téléchargé et enregistré directement dans un dossier Dropbox. Bien que ce tutoriel utilise Claude pour simuler la saisie de données, le même flux peut être connecté à n’importe quelle source de données réelle : un formulaire web, un CRM, une base de données immobilière, ou une feuille de calcul. Les étapes de génération et de livraison du document restent identiques quelle que soit la provenance des données, ce qui en fait une base solide pour l’automatisation en conditions réelles. À la fin de ce guide, vous disposerez d’un flux n8n entièrement fonctionnel que vous pourrez importer et adapter à votre propre cas d’usage.</p> <h2 id="configurer-le-modele">Configurer le Modèle d’Annonce Immobilière</h2> <p>Avant de construire le flux n8n, nous avons besoin d’un modèle de document dans DocuGenerate. Pour ce tutoriel, nous utiliserons le modèle Word <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing.docx">Property Listing</a>, qui propose une mise en page immobilière épurée avec une grande image principale en haut, une rangée de trois photos d’intérieur, les informations clés du bien, un QR code renvoyant vers la page de l’annonce, et une carte de contact de l’agent en bas de page.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/property-listing-template.png" alt="Modèle Property Listing avec balises de fusion"/></p> <p>Le modèle utilise les <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> suivantes :</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> : les coordonnées de l’agent affichées dans la carte de pied de page.</li> <li><code class="language-plaintext highlighter-rouge">price</code> : affiché en évidence à côté du titre.</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> : les caractéristiques clés du bien affichées dans la ligne de détails.</li> <li><code class="language-plaintext highlighter-rouge">description</code> : un court paragraphe décrivant le bien, affiché sous la section d’en-tête.</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> : les photos du bien intégrées dans la mise en page.</li> <li><code class="language-plaintext highlighter-rouge">url</code> : converti en QR code affiché dans le coin supérieur droit du document.</li> </ul> <p>Plusieurs fonctionnalités de ce modèle méritent d’être détaillées :</p> <ul> <li> <p><strong>Dimensionnement des images.</strong> L’image principale utilise la <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-images-a-un-modele/#resizing-images">syntaxe de taille</a> <code class="language-plaintext highlighter-rouge">[%main_image | size:'auto':600]</code> pour limiter sa hauteur à 600 pixels tout en préservant le ratio d’aspect. Les trois photos d’intérieur utilisent <code class="language-plaintext highlighter-rouge">[%image1 | size:240:'auto']</code> pour fixer leur largeur à 240 pixels, gardant les trois images à la même taille et alignées sur une rangée. Les images peuvent être transmises sous forme d’URL publique ou d’URI de données encodée en base64.</p> </li> <li> <p><strong>QR code.</strong> Le champ <code class="language-plaintext highlighter-rouge">url</code> n’est pas affiché en texte brut. Le modèle utilise plutôt la syntaxe <code class="language-plaintext highlighter-rouge">[%url | qrcode:60:60 | set:'barcolor':'#2f7498']</code> pour afficher la valeur sous forme de <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-qr-codes-et-codes-a-barres/#adding-qr-codes">QR code</a> avec des dimensions personnalisées et une couleur de marque correspondant au thème du document. Scanner le code dans le PDF généré amène le lecteur directement vers la page de l’annonce en ligne.</p> </li> <li> <p><strong>Pluralisation.</strong> La ligne de statistiques utilise une <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/#logical-and-mathematical-expressions">syntaxe conditionnelle</a> pour gérer automatiquement la pluralisation. Par exemple, le nombre de chambres est écrit <code class="language-plaintext highlighter-rouge">[bedrooms] Bedroom[#bedrooms &gt; 1]s[/]</code> dans le modèle, ce qui produit « 1 Bedroom » ou « 3 Bedrooms » selon la valeur du champ <code class="language-plaintext highlighter-rouge">bedrooms</code>. Le même schéma s’applique à <code class="language-plaintext highlighter-rouge">bathrooms</code> et <code class="language-plaintext highlighter-rouge">kitchens</code>.</p> </li> </ul> <p>Ces trois fonctionnalités s’appuient toutes sur la <a href="https://www.docugenerate.com/fr/aide/articles/comment-activer-la-syntaxe-avancee/">syntaxe avancée</a> de DocuGenerate, qui doit être activée pour le modèle avant de générer des documents. Vous pouvez l’activer dans les paramètres du modèle de l’application web.</p> <h2 id="vue-densemble-du-flux">Vue d’Ensemble du Flux n8n</h2> <p>Dans ce flux, nous utiliserons Claude pour générer des données d’annonce fictives afin de pouvoir démontrer le processus de bout en bout sans nécessiter de base de données ou de système externe en direct. Dans un déploiement réel, le déclencheur manuel et le nœud <strong>Message a model</strong> seraient remplacés par un déclencheur et une <a href="#sources-de-donnees-reelles">source de données</a> reflétant votre processus réel.</p> <p>Le flux complet se compose de plusieurs nœuds connectés dans une séquence linéaire :</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/complete-workflow-v2.png" alt="Le flux n8n complet"/></p> <p>Vous pouvez télécharger le <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing Workflow.json" target="_blank">fichier JSON du flux</a> et l’importer directement dans votre instance n8n. Vous devrez mettre à jour l’ID du modèle DocuGenerate, vos identifiants API, et le chemin de destination Dropbox pour correspondre à votre propre configuration. Passons en revue chaque nœud en détail.</p> <h2 id="noeud-claude">Générer les Données d’Annonce avec Claude</h2> <p>Le premier nœud fonctionnel est le nœud <strong>Message a model</strong> de l’intégration Anthropic, configuré pour utiliser le modèle <code class="language-plaintext highlighter-rouge">claude-sonnet-4-6</code>. Son rôle dans ce flux est de produire un ensemble réaliste de valeurs d’annonce immobilière pouvant être transmises à DocuGenerate. Pour utiliser ce nœud, vous aurez besoin d’un compte Anthropic et d’une clé API générée depuis la <a href="https://console.anthropic.com/" target="_blank" rel="nofollow noopener">Console Anthropic</a>, que vous ajoutez comme identifiant dans n8n lors de la première configuration du nœud.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/anthropic-api-key.png" alt="Configuration de la clé API pour le nœud Anthropic" class="desktop-width-75"/></p> <p>Le prompt inclut la structure JSON complète attendue par le modèle, la plupart des champs étant laissés vides pour que Claude les remplisse. Le champ <code class="language-plaintext highlighter-rouge">agent_photo</code> est pré-rempli avec un modèle d’URL provenant de <a href="https://randomuser.me/" target="_blank" rel="nofollow noopener">randomuser.me</a>, un service gratuit qui renvoie une photo de portrait réaliste pour un identifiant numérique donné. Claude est invité à remplacer <code class="language-plaintext highlighter-rouge">&lt;AGENT_ID&gt;</code> par un entier aléatoire entre 1 et 50, produisant une photo d’agent différente à chaque exécution.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/message-a-model-node.png" alt="Configuration du nœud Message a model"/></p> <p>Voici le prompt complet utilisé dans le nœud :</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/fr/blog/generer-des-annonces-immobilieres-avec-n8n-et-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>Les quatre champs d’image sont laissés en URL <a href="https://www.pexels.com/" target="_blank" rel="nofollow noopener">Pexels</a> statiques par simplicité. Dans un scénario réel, il s’agirait de véritables photos du bien récupérées depuis une médiathèque, une pièce jointe CRM, ou un espace de stockage cloud. Le champ <code class="language-plaintext highlighter-rouge">url</code> renvoie vers cet article de blog et sera affiché sous forme de QR code dans le document final.</p> <p>Claude renvoie le JSON complété encadré dans un bloc de code markdown. La réponse du nœud <strong>Message a model</strong> a la structure suivante :</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>Les données d’annonce réelles sont imbriquées dans <code class="language-plaintext highlighter-rouge">content[0].text</code> et encadrées par des balises markdown, ce qui signifie qu’elles ne peuvent pas être utilisées directement par le nœud suivant. C’est ce que gère le nœud Code à l’<a href="#noeud-code">étape suivante</a>.</p> <h2 id="noeud-code">Analyser la Réponse de Claude</h2> <p>Le nœud <strong>Code in JavaScript</strong> extrait l’objet JSON de la réponse de Claude et l’expose sous forme de données propres et structurées pour le reste du flux. Cette étape est nécessaire pour deux raisons : le nœud <strong>Message a model</strong> renvoie l’objet de réponse API complet plutôt que le seul contenu textuel, et Claude a tendance à encadrer sa sortie JSON avec des balises de code markdown même lorsqu’il lui est demandé de ne pas le faire. Plutôt que de s’appuyer sur l’ingénierie de prompt pour corriger cette incohérence, le nœud Code la gère de manière fiable à chaque fois.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/code-node.png" alt="Configuration du nœud Code in JavaScript"/></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>La première ligne lit la valeur texte de la réponse de Claude. La deuxième ligne supprime les balises de code markdown à l’aide de deux expressions régulières. La troisième ligne analyse la chaîne nettoyée en un objet JavaScript et le renvoie comme sortie du nœud. Après cette étape, tous les champs de l’annonce (<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>, etc.) sont disponibles comme clés de premier niveau dans le JSON de l’élément, prêts à être transmis directement à DocuGenerate.</p> <h2 id="generer-le-document">Générer le Document</h2> <p>Le nœud <strong>Generate document</strong> utilise l’<a href="https://n8n.io/integrations/docugenerate/" target="_blank" rel="noopener">intégration DocuGenerate</a> pour n8n afin de fusionner les données d’annonce avec le modèle Word et de produire un PDF. Pour utiliser ce nœud, installez DocuGenerate dans votre instance n8n et <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/#install-docugenerate">configurez-le</a> avec votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/generate-document-node.png" alt="Configuration du nœud Generate document"/></p> <p>Le nœud est configuré avec les paramètres suivants :</p> <ul> <li><strong>Template Name or ID</strong> : le modèle <strong>Property Listing</strong> téléversé à l’étape de <a href="#configurer-le-modele">configuration du modèle</a>.</li> <li><strong>Name</strong> : une expression n8n qui génère un nom de document dynamique : <code class="language-plaintext highlighter-rouge">Property Listing for {{ $json.price }} ({{ $json.surface }})</code>. Cela produit un nom de fichier tel que <code class="language-plaintext highlighter-rouge">Property Listing for $485,000 (1,850 sq ft)</code> qui rend chaque document facile à identifier.</li> <li><strong>Format</strong> : défini sur <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code>.</li> <li><strong>Data</strong> : défini sur <code class="language-plaintext highlighter-rouge">{{ $json }}</code>, qui transmet l’ensemble de la sortie du nœud Code comme charge de données. Puisque le nœud Code produit déjà un objet JSON plat avec tous les champs du modèle au premier niveau, aucune correspondance supplémentaire n’est nécessaire.</li> </ul> <p>Lorsque le nœud s’exécute avec succès, la réponse contient, entre autres, un champ <code class="language-plaintext highlighter-rouge">document_uri</code> avec une URL pointant vers le PDF généré, et un champ <code class="language-plaintext highlighter-rouge">filename</code> avec le nom du fichier du document.</p> <h2 id="requete-http">Télécharger le PDF Généré</h2> <p>DocuGenerate renvoie une URL vers le document généré plutôt que le contenu binaire du fichier directement. Pour téléverser le PDF sur Dropbox à l’étape suivante, nous devons d’abord récupérer le fichier depuis cette URL. Le nœud <strong>HTTP Request</strong> s’en charge en effectuant une requête GET vers le <code class="language-plaintext highlighter-rouge">document_uri</code> renvoyé par le nœud <a href="#generer-le-document">Generate document</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/http-request-node.png" alt="Configuration du nœud HTTP Request"/></p> <p>Le paramètre <strong>URL</strong> est défini sur <code class="language-plaintext highlighter-rouge">{{ $json.document_uri }}</code>, référençant l’URL du document de l’étape précédente. Les données binaires du fichier sont alors disponibles pour le nœud Dropbox pour le téléversement.</p> <h2 id="televersement-dropbox">Enregistrer le PDF sur Dropbox</h2> <p>Le dernier nœud téléverse le PDF généré dans un dossier Dropbox désigné à l’aide du <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.dropbox/" target="_blank" rel="nofollow noopener">nœud Dropbox</a> de n8n, donnant à l’équipe un accès immédiat au nouveau document d’annonce.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/dropbox-node.png" alt="Configuration du nœud Upload a file"/></p> <p>Le nœud utilise une authentification OAuth2 connectée à votre compte Dropbox. Le paramètre <strong>File Path</strong> est défini sur <code class="language-plaintext highlighter-rouge">/n8n/Property Listings/{{ $json.filename }}</code>, enregistrant chaque document dans le dossier <code class="language-plaintext highlighter-rouge">/n8n/Property Listings/</code> en utilisant le nom de fichier renvoyé par DocuGenerate. L’option <strong>Binary File</strong> est activée afin que le nœud lise le contenu du fichier depuis la sortie du nœud HTTP Request plutôt que depuis un chemin statique.</p> <p>Une fois le flux terminé, le PDF généré est disponible dans Dropbox et ressemble à ceci. Vous pouvez également télécharger un <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing for $875,000 (2,450 sq ft).pdf" target="_blank">exemple de PDF</a> pour voir le résultat final.</p> <p><img src="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/sample-property-listing.png" alt="Exemple de PDF d'annonce immobilière généré"/></p> <h2 id="sources-de-donnees-reelles">Sources de Données Réelles</h2> <p>Le flux actuel utilise Claude comme substitut pratique à une source de données réelle, mais en pratique, les données d’annonce immobilière proviennent rarement d’un modèle d’IA. Elles se trouvent généralement dans une soumission de formulaire, un enregistrement CRM, une ligne de base de données, ou une feuille de calcul. Puisque les étapes de génération et de livraison du document restent les mêmes quelle que soit l’origine des données, remplacer le nœud Anthropic par un autre déclencheur et une autre source de données suffit pour transformer ce flux de tutoriel en automatisation prête pour la production. Voici quelques scénarios courants pour lesquels ce flux est bien adapté.</p> <h3 id="source-de-donnees-formulaires">Formulaires Web</h3> <p>De nombreuses agences utilisent des formulaires en ligne pour collecter les informations des biens auprès des agents avant de préparer le matériel marketing. Un outil de formulaire comme Jotform, Typeform ou Tally peut capturer des champs tels que l’adresse, le prix, le nombre de pièces, la surface, et une description directement auprès de l’agent. Lorsqu’une nouvelle soumission arrive, la plateforme de formulaire peut déclencher le flux n8n via un webhook, transmettant toutes les données collectées directement à l’étape de génération du document. Cela fait de la création d’annonce immobilière une suite naturelle au processus de collecte, sans transfert de données manuel requis.</p> <h3 id="source-de-donnees-crm">Systèmes CRM</h3> <p>Les entreprises immobilières qui gèrent leur inventaire dans un CRM comme Salesforce, HubSpot ou Pipedrive peuvent déclencher la génération de documents chaque fois qu’un enregistrement de bien atteint une certaine étape du pipeline, par exemple lorsqu’il est marqué comme « Prêt à publier » ou « Nouvelle annonce ». Le flux récupérerait les champs pertinents de l’enregistrement CRM, les fusionnerait dans le modèle, et enregistrerait soit le PDF dans l’enregistrement, soit le livrerait par e-mail à l’agent assigné. Cela maintient le document d’annonce synchronisé avec les données du CRM et élimine la double saisie de données.</p> <h3 id="source-de-donnees-bases-de-donnees">Bases de Données et Feuilles de Calcul</h3> <p>Les équipes qui gèrent leur inventaire immobilier dans une base de données comme PostgreSQL, Airtable ou Notion, ou dans une feuille de calcul comme Google Sheets ou Excel, peuvent interroger les enregistrements nouveaux ou mis à jour selon une planification ou en réponse à l’ajout d’une ligne. n8n dispose de nœuds natifs pour toutes ces plateformes, ce qui simplifie la lecture d’une ligne, la correspondance des colonnes avec les champs du modèle, et la génération d’un PDF pour chaque bien. Cette approche fonctionne particulièrement bien pour les agences qui ajoutent plusieurs annonces à la fois et souhaitent générer tous les documents en une seule exécution automatisée.</p> <h2 id="conclusion">Conclusion</h2> <p>Dans ce tutoriel, nous avons construit un flux n8n qui génère automatiquement un PDF d’annonce immobilière. Le flux utilise Claude pour simuler une saisie de données réaliste, analyse la réponse en JSON structuré, fusionne les données avec un modèle Word conçu professionnellement, et enregistre le PDF résultant sur Dropbox. Le modèle illustre plusieurs fonctionnalités avancées de DocuGenerate, notamment le dimensionnement d’images avec des filtres, la génération de QR codes, et la pluralisation automatique via une syntaxe conditionnelle.</p> <p>Dans un déploiement réel, le nœud Anthropic serait remplacé par une connexion à votre source de données réelle, qu’il s’agisse d’un formulaire web, d’un CRM, d’une base de données, ou d’une feuille de calcul. Les étapes de génération et de livraison du document restent les mêmes, ce qui rend ce flux simple à adapter à presque toutes les configurations de gestion immobilière.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing.docx">Property Listing</a>.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing Workflow.json" target="_blank">fichier JSON du flux</a> que vous pouvez importer dans votre instance n8n.</li> <li>Un <a href="https://www.docugenerate.com/assets/posts/031-n8n-property-listings/Property Listing for $875,000 (2,450 sq ft).pdf" target="_blank">exemple de PDF généré</a> montrant le résultat final.</li> <li>Le <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/">guide d’intégration</a> DocuGenerate pour n8n.</li> <li>Photos fournies par <a href="https://www.pexels.com/" target="_blank" rel="nofollow noopener">Pexels</a> pour les images du bien.</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[Découvrez comment créer un flux automatisé d'annonces immobilières avec n8n, Claude et DocuGenerate. Utilisez Claude pour générer des données d'annonce réalistes à la demande, fusionnez-les dans un modèle Word conçu professionnellement, et enregistrez le PDF résultant directement sur Dropbox.]]></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">Comment Générer des Lettres Commerciales dans Coda avec DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/comment-generer-des-lettres-commerciales-dans-coda-avec-docugenerate/" rel="alternate" type="text/html" title="Comment Générer des Lettres Commerciales dans Coda avec DocuGenerate"/> <published>2026-02-25T00:00:00+00:00</published> <updated>2026-02-25T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/comment-generer-des-lettres-commerciales-dans-coda-avec-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/comment-generer-des-lettres-commerciales-dans-coda-avec-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les lettres commerciales sont un pilier de la communication professionnelle, qu’il s’agisse d’envoyer des propositions clients, des notifications officielles ou des campagnes de prospection. Rédiger chaque lettre individuellement est répétitif et propice aux erreurs, et le problème s’aggrave rapidement lorsque vous avez une longue liste de destinataires. Dans ce tutoriel, nous allons montrer comment utiliser <a href="https://coda.io/" target="_blank" rel="nofollow noopener">Coda</a> et <a href="https://www.docugenerate.com/">DocuGenerate</a> ensemble pour générer des lettres commerciales PDF personnalisées directement depuis une table, en un seul clic de bouton par ligne.</p> <p>Coda est un espace de travail flexible qui combine documents et feuilles de calcul dans une seule plateforme, facilitant la création d’outils interactifs avec des tables, des boutons et des formules personnalisées. Le <a href="https://www.docugenerate.com/fr/integrations/coda/#pack">Pack DocuGenerate</a> étend Coda avec des capacités de génération de documents, vous permettant de produire des PDF professionnels à partir de modèles Word sans écrire de code. Chaque ligne d’une table Coda devient un document personnalisé, rempli avec les valeurs des colonnes de cette ligne.</p> <p>À la fin de ce guide, vous disposerez d’un document Coda avec une table de destinataires et un bouton <strong>Generate</strong> qui produit une lettre commerciale PDF personnalisée pour chaque personne. Les fichiers générés sont enregistrés directement dans une colonne <strong>PDF</strong> de la table, prêts à être téléchargés ou partagés.</p> <h2 id="configurer-le-modele">Configurer le Modèle de Lettre Commerciale</h2> <p>Avant de travailler dans Coda, nous avons besoin d’un modèle de document dans DocuGenerate. Nous utiliserons le fichier Word <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.docx">Business Letter</a> de notre <a href="https://www.docugenerate.com/fr/modeles/">Bibliothèque de Modèles</a>, une lettre formatée de manière professionnelle et prête à l’emploi immédiat.</p> <p>Le modèle contient des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> pour <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> et <code class="language-plaintext highlighter-rouge">Phone</code>. Ces balises agissent comme des espaces réservés qui sont remplacés par des données réelles lors de la génération d’un document.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/business-letter-template.png" alt="Modèle Business Letter avec balises de fusion"/></p> <p>Une fois le fichier Word téléchargé, <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">téléversez-le</a> dans votre compte DocuGenerate pour créer un nouveau modèle. Les balises de fusion seront détectées automatiquement, et vous pouvez prévisualiser le résultat sur la page du modèle avant de continuer.</p> <h2 id="importer-les-donnees">Importer les Données dans Coda</h2> <p>Le modèle Business Letter de la Bibliothèque de Modèles est accompagné d’un <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.xlsx">jeu de données Excel</a> correspondant, contenant des données d’exemple de destinataires alignées avec toutes les balises de fusion du modèle. Chaque ligne représente un destinataire, et chaque colonne correspond directement à une balise de fusion de la lettre.</p> <p>Pour importer ces données dans Coda, ouvrez le fichier <code class="language-plaintext highlighter-rouge">Business Letter.xlsx</code> dans Excel ou toute autre application de feuille de calcul, sélectionnez l’ensemble de la table, y compris la ligne d’en-tête, et copiez-la. Ouvrez ensuite votre document Coda, cliquez dans une zone vide de la page, puis collez. Coda reconnaîtra la structure tabulaire et créera automatiquement une nouvelle table à partir des données du presse-papiers, en conservant tous les noms de colonnes et valeurs.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/business-letter-table-import.png" alt="Collage du jeu de données Business Letter dans une table Coda"/></p> <h2 id="ajouter-les-colonnes">Ajouter les Colonnes Generate et PDF</h2> <p>Une fois les données en place, nous devons ajouter deux colonnes à la table : une pour le bouton de génération et une pour stocker le fichier de sortie. Cliquez sur l’icône <strong>+</strong> à la fin de la ligne d’en-tête de la table pour ajouter la première nouvelle colonne.</p> <p>Sélectionnez <strong>Button</strong> comme type de colonne, puis choisissez <strong>New</strong> pour créer une configuration de bouton vierge. Une fois la colonne apparue, renommez-la en <strong>Generate</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/new-column-generate-button-v2.png" alt="Ajout d'une colonne Button à la table"/></p> <p>Répétez le même processus pour ajouter une seconde colonne. Cette fois, sélectionnez <strong>File</strong> comme type de colonne et renommez la colonne en <strong>PDF</strong>. Cette colonne contiendra le fichier PDF généré pour chaque ligne après le clic sur le bouton.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/new-column-pdf-file-v2.png" alt="Ajout d'une colonne File à la table"/></p> <p>La table devrait maintenant afficher toutes les colonnes de données d’origine ainsi que les deux nouvelles colonnes à la fin.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/business-letter-table-new-columns-v2.png" alt="Table Business Letter avec les colonnes Generate et PDF ajoutées"/></p> <h2 id="installer-le-pack">Installer le Pack DocuGenerate</h2> <p>Pour connecter la table à DocuGenerate, nous devons ajouter le <a href="https://coda.io/packs/docugenerate-47041" target="_blank" rel="noopener">Pack DocuGenerate</a> au document Coda. Cliquez sur <strong>Insert</strong> dans le coin supérieur droit de l’éditeur Coda et recherchez <strong>DocuGenerate</strong> dans le champ de recherche des Packs.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/install-docugenerate-pack.png" alt="Recherche du Pack DocuGenerate dans le panneau Insert"/></p> <p>Sélectionnez <strong>DocuGenerate</strong> dans les résultats et cliquez sur <strong>Add to doc for free</strong> pour installer le Pack.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/add-to-doc-for-free-button.png" alt="Ajout du Pack DocuGenerate au document Coda"/></p> <p>Une fois installés, les blocs de construction du Pack deviennent disponibles dans votre document : la table <strong>Templates</strong>, la table <strong>Documents</strong>, l’action de bouton <strong>Generate Document</strong>, et la formule <strong>DataStructure</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/docugenerate-pack-installed.png" alt="Blocs de construction du Pack DocuGenerate disponibles dans Coda"/></p> <p>Pour terminer la configuration, ouvrez l’onglet <strong>Settings</strong> à côté de <strong>Building blocks</strong>, cliquez sur <strong>Select an account</strong>, puis sur <strong>Add a new account</strong>. Saisissez votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a> issue de votre compte DocuGenerate dans le champ <strong>API token</strong> et cliquez sur <strong>Continue</strong>. Votre compte DocuGenerate est maintenant connecté et le Pack est prêt à être utilisé.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/docugenerate-select-account.png" alt="Connexion d'un compte DocuGenerate dans les paramètres du Pack Coda"/></p> <h2 id="configurer-le-bouton">Configurer le Bouton Generate Document</h2> <p>Une fois le Pack installé, nous pouvons configurer la colonne <strong>Generate</strong> pour appeler DocuGenerate lors du clic. Cliquez sur le menu de l’en-tête de la colonne <strong>Generate</strong> et sélectionnez <strong>Edit column</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/edit-column-generate-v2.png" alt="Ouverture du panneau Edit column pour la colonne Generate"/></p> <p>Dans la section d’action <strong>On click</strong>, faites défiler jusqu’à la catégorie <strong>Packs</strong> en bas de la liste d’actions, trouvez <strong>DocuGenerate</strong>, et sélectionnez l’action <strong>Generate Document</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/add-generate-document-action-v2.png" alt="Sélection de l'action Generate Document du Pack DocuGenerate"/></p> <p>Cliquez sur <strong>+ Connect an account</strong> et sélectionnez le compte DocuGenerate que vous avez configuré à <a href="#installer-le-pack">l’étape précédente</a>. Une fois le compte connecté, vous pouvez maintenant remplir les paramètres de l’action.</p> <h3 id="selection-du-modele">Sélection du Modèle</h3> <p>Dans le menu déroulant <strong>Template</strong>, sélectionnez le modèle <strong>Business Letter</strong> que vous avez téléversé dans DocuGenerate à l’étape de <a href="#configurer-le-modele">configuration du modèle</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/select-business-letter-template-v2.png" alt="Sélection du modèle Business Letter dans l'action Generate Document"/></p> <h3 id="nom-et-format-du-document">Nom et Format du Document</h3> <p>Pour le champ <strong>Name</strong>, vous pouvez le laisser vide pour utiliser un nom par défaut, ou définir une valeur dynamique pour identifier plus facilement chaque fichier. La <a href="https://coda.io/formulas#Format" target="_blank" rel="nofollow noopener">formule Format</a> de Coda convient bien ici. Par exemple, <code class="language-plaintext highlighter-rouge">=Format("Letter for {1}", thisRow.Name)</code> nomme chaque document d’après le destinataire.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/generate-button-name-formula.gif" alt="Utilisation de la formule Format pour définir un nom de document dynamique"/></p> <p>Laissez <strong>Format</strong> sur <code class="language-plaintext highlighter-rouge">.pdf</code> pour produire des fichiers PDF, le format le plus couramment utilisé pour le partage de documents.</p> <h3 id="valeurs-de-donnees-dynamiques">Valeurs de Données Dynamiques</h3> <p>Pour le champ <strong>Data</strong>, nous devons fournir un objet JSON qui associe les noms des balises de fusion du modèle aux valeurs de colonnes correspondantes dans la ligne actuelle. La <a href="https://coda.io/resources/guides/intro-to-codas-formula-syntax" target="_blank" rel="nofollow noopener">formule Object</a> de Coda est le moyen le plus direct de construire cette correspondance :</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>Chaque clé de l’appel <code class="language-plaintext highlighter-rouge">Object</code> est un nom de balise de fusion du modèle, et chaque valeur référence la colonne correspondante de la ligne actuelle via <code class="language-plaintext highlighter-rouge">thisRow</code>. Les noms de colonnes contenant des espaces doivent être placés entre crochets, comme indiqué avec <code class="language-plaintext highlighter-rouge">thisRow.[Job Title]</code> et <code class="language-plaintext highlighter-rouge">thisRow.[Company Name]</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/data-object-formula.png" alt="Configuration du paramètre Data avec la formule Object"/></p> <p>Pour les modèles avec des données plus complexes ou imbriquées, la <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-coda/#data-structure-formula">formule DataStructure</a> incluse avec le Pack DocuGenerate est une alternative utile. Elle génère automatiquement la structure JSON attendue pour n’importe quel modèle, avec des espaces réservés numérotés que vous pouvez remplir à l’aide de la formule <code class="language-plaintext highlighter-rouge">Format</code>.</p> <h3 id="colonne-pdf-de-resultat">Colonne PDF de Résultat</h3> <p>Enfin, définissez la <strong>Results column</strong> sur la colonne <strong>PDF</strong> ajoutée précédemment. Cela indique à Coda de stocker le fichier généré dans cette colonne après le clic sur le bouton. Vous pouvez également personnaliser l’apparence du bouton dans la section <strong>Style</strong> en définissant un libellé, en choisissant une couleur, et en sélectionnant une icône.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/configure-visual-ui-button.gif" alt="Personnalisation du libellé, de la couleur et de l'icône du bouton"/></p> <h2 id="generer-les-documents">Générer les Documents</h2> <p>Une fois la configuration terminée, cliquez sur le bouton <strong>Generate</strong> sur n’importe quelle ligne pour déclencher la génération du document pour ce destinataire. DocuGenerate utilisera les données de la ligne pour remplir les balises de fusion du modèle et renverra un fichier PDF. Coda importe ensuite le fichier dans son stockage et l’affiche dans la colonne <strong>PDF</strong> de cette ligne. L’ensemble du processus prend quelques secondes, attendez-vous donc à un bref délai avant l’apparition du fichier.</p> <p>Vous pouvez cliquer sur <strong>Generate</strong> pour plusieurs lignes successivement sans attendre la fin de chaque document. DocuGenerate traite les requêtes simultanément, donc tous les documents sont générés en parallèle. Le nombre de documents que vous pouvez traiter en même temps dépend de la <a href="https://www.docugenerate.com/fr/aide/articles/existe-t-il-une-limite-de-documents-simultanes/">limite de documents simultanés</a> de votre forfait.</p> <p><img src="https://www.docugenerate.com/assets/posts/030-coda-business-letters/generate-multiple-documents-v3.gif" alt="Génération de plusieurs lettres commerciales depuis la table Coda"/></p> <h2 id="conclusion">Conclusion</h2> <p>Dans ce tutoriel, nous avons construit un document Coda qui génère des lettres commerciales PDF personnalisées à partir d’une table de données de destinataires à l’aide du Pack DocuGenerate. Le flux couvre le téléversement d’un modèle Word dans DocuGenerate, l’importation des données de destinataires dans Coda, l’ajout des colonnes <strong>Generate</strong> et <strong>PDF</strong>, et la configuration de l’action <strong>Generate Document</strong> pour associer les données de chaque ligne aux balises de fusion du modèle. Une fois la configuration en place, générer une lettre pour n’importe quel destinataire ne nécessite qu’un seul clic de bouton.</p> <p>Le même modèle s’applique à tout type de document que vous souhaitez produire à partir de données tabulaires Coda. Factures, contrats, lettres d’offre et certificats suivent tous la même structure : un modèle Word avec des balises de fusion, une table avec les données correspondantes, et un bouton pour déclencher le processus. Vous pouvez aller plus loin en combinant cela avec d’autres automatisations Coda, comme générer des documents automatiquement lors de l’ajout d’une nouvelle ligne, ou envoyer les fichiers générés aux destinataires par e-mail.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.docx">Business Letter</a> et le <a href="https://www.docugenerate.com/assets/posts/030-coda-business-letters/Business Letter.xlsx">jeu de données Excel</a> utilisés dans ce tutoriel.</li> <li>Le <a href="https://coda.io/packs/docugenerate-47041" target="_blank" rel="nofollow noopener">Pack DocuGenerate sur Coda</a> pour ajouter la génération de documents à vos documents Coda.</li> <li>Le <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-coda/">guide d’intégration Coda</a> dans le Centre d’Aide, incluant les instructions de configuration et les références de formules.</li> <li>La <a href="https://coda.io/formulas" target="_blank" rel="nofollow noopener">documentation officielle des formules Coda</a> pour les formules utilisées dans ce tutoriel.</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[Générez des lettres commerciales PDF personnalisées directement depuis une table Coda à l'aide du Pack DocuGenerate. Ce tutoriel explique comment importer des données de table, configurer un bouton pour créer des documents, et enregistrer les fichiers générés dans une colonne en un seul clic par ligne.]]></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">Automatiser la Génération de Certificats PDF avec FlowRunner</title> <link href="https://www.docugenerate.com/fr/blog/automatiser-la-generation-de-certificats-pdf-avec-flowrunner/" rel="alternate" type="text/html" title="Automatiser la Génération de Certificats PDF avec FlowRunner"/> <published>2026-01-21T00:00:00+00:00</published> <updated>2026-01-21T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/automatiser-la-generation-de-certificats-pdf-avec-flowrunner</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/automatiser-la-generation-de-certificats-pdf-avec-flowrunner/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les certificats sont un résultat courant dans de nombreux processus métiers, des attestations de fin de formation aux récompenses de réussite et confirmations de participation à un événement. Créer manuellement des certificats individuels pour chaque destinataire est fastidieux et propice aux erreurs, surtout avec des dizaines ou des centaines d’enregistrements. Dans ce tutoriel, nous allons créer un flux automatisé utilisant <a href="https://flowrunner.ai/" target="_blank" rel="nofollow noopener">FlowRunner</a> et <a href="https://www.docugenerate.com/">DocuGenerate</a> qui génère des certificats PDF chaque fois qu’un nouvel enregistrement est ajouté à une table de base de données.</p> <p><a href="https://docs.flowrunner.ai/" target="_blank" rel="nofollow noopener">FlowRunner</a> fait partie de la plateforme <a href="https://backendless.com/" target="_blank" rel="nofollow noopener">Backendless</a> et permet de créer facilement des flux de travail intelligents en quelques clics. Il orchestre des flux automatisés combinant des agents IA, des décisions humaines et des intégrations système. Aussi bien les utilisateurs techniques que non techniques peuvent créer des flux. Les utilisateurs non techniques travaillent via l’interface visuelle, tandis que les utilisateurs techniques peuvent exploiter du code personnalisé et des intégrations avancées.</p> <p>Le flux que nous allons créer écoute les nouveaux enregistrements dans une table de base de données Backendless, génère un certificat PDF personnalisé avec DocuGenerate, enregistre le fichier généré dans le Backendless File Service, et met à jour l’enregistrement de base de données d’origine avec un lien vers le fichier PDF. À la fin de ce guide, vous disposerez d’un pipeline d’automatisation de certificats entièrement fonctionnel que vous pourrez adapter à tout type de document.</p> <h2 id="configurer-le-modele">Configurer le Modèle de Certificat</h2> <p>Avant de construire le flux FlowRunner, nous devons préparer le modèle de certificat dans DocuGenerate. Pour simplifier les choses, nous utiliserons le modèle prêt à l’emploi de <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement.doc">Certificat de Réussite</a> de notre <a href="https://www.docugenerate.com/fr/modeles/">Bibliothèque de Modèles</a>. Il s’agit d’une mise en page de certificat standard avec des balises de fusion pour <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> et <code class="language-plaintext highlighter-rouge">Certificate Date</code>. Vous pouvez personnaliser le modèle en modifiant le design, en ajustant la mise en page, ou en ajoutant d’autres <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> pour correspondre à l’identité visuelle et aux besoins de votre organisation.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/certificate-template.png" alt="Modèle Certificate of Achievement avec balises de fusion"/></p> <p>Une fois le fichier modèle téléchargé, <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">téléversez-le</a> dans votre compte DocuGenerate. Une fois le téléversement terminé, notez l’<a href="https://www.docugenerate.com/fr/aide/articles/comment-obtenir-l-id-du-modele/">ID du modèle</a> affiché sur la page du modèle, car vous en aurez besoin lors de la configuration de l’étape de génération de documents dans le flux.</p> <h2 id="creer-la-table">Créer la Table des Participants</h2> <p>Ensuite, nous avons besoin d’une table de base de données dans Backendless pour stocker les données utilisées pour générer les certificats. Accédez à la section <strong>Database</strong> de votre application Backendless et créez une nouvelle table appelée <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="Création de la table Participants dans Backendless" class="desktop-width-75"/></p> <p>Ajoutez les colonnes suivantes à la table :</p> <ul> <li><code class="language-plaintext highlighter-rouge">Certificate Date</code> (DATETIME) : la date à imprimer sur le certificat.</li> <li><code class="language-plaintext highlighter-rouge">Certificate URL</code> (STRING) : stocke l’URL du fichier de certificat généré. Cette colonne sera automatiquement renseignée par le flux.</li> <li><code class="language-plaintext highlighter-rouge">Company Name</code> (STRING) : le nom de l’entreprise ou de l’organisation délivrant le certificat.</li> <li><code class="language-plaintext highlighter-rouge">Course Name</code> (STRING) : le nom de la formation ou du programme suivi par le participant.</li> <li><code class="language-plaintext highlighter-rouge">Diploma Title</code> (STRING) : le titre du diplôme ou de la réussite récompensée.</li> <li><code class="language-plaintext highlighter-rouge">Name</code> (STRING) : le nom complet du participant.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/database-table-schema-v2.png" alt="Schéma de la table de base de données Participants"/></p> <p>La colonne <code class="language-plaintext highlighter-rouge">Certificate URL</code> démarre vide pour chaque nouvel enregistrement. Le flux la remplira automatiquement avec l’URL du PDF généré une fois l’ensemble du flux terminé, fournissant ainsi un lien direct vers le certificat depuis la base de données.</p> <h2 id="configurer-le-declencheur">Configurer le Déclencheur de Base de Données</h2> <p>Une fois la table en place, rendez-vous sur la page <strong>FlowRunner Designer</strong> et créez un nouveau flux appelé « Certificate of Achievement Flow ». Le premier élément dont nous avons besoin est un déclencheur qui démarre le flux chaque fois qu’un nouvel enregistrement de participant est créé. Dans le panneau <strong>Triggers</strong>, sélectionnez le déclencheur <strong>Record Created in Database</strong> dans la catégorie <strong>Data Service</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/record-created-in-database.png" alt="Ajout du déclencheur Record Created in Database"/></p> <p>La configuration du déclencheur est simple. Sélectionnez la table <code class="language-plaintext highlighter-rouge">Participants</code> dans le menu déroulant <strong>Table or View</strong> et définissez <strong>Reference Trigger Data As</strong> sur <code class="language-plaintext highlighter-rouge">Participant</code>. Vous pouvez laisser tous les autres champs à leurs valeurs par défaut.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/configure-record-created.png" alt="Configuration du déclencheur Record Created in Database"/></p> <p>Cela signifie que chaque fois qu’une nouvelle ligne est insérée dans la table <code class="language-plaintext highlighter-rouge">Participants</code>, le flux s’exécutera et les données de l’enregistrement seront accessibles sous la forme de l’objet <code class="language-plaintext highlighter-rouge">Participant</code> dans les étapes suivantes.</p> <h2 id="generer-le-document">Générer le Document</h2> <p>Une fois le déclencheur en place, nous pouvons ajouter l’étape de génération de document. Recherchez l’ <a href="https://flowrunner.ai/integrations/docugenerate" target="_blank" rel="nofollow noopener">extension DocuGenerate</a> et sélectionnez l’action <strong>Generate Document</strong>. Cette action s’exécutera chaque fois que le déclencheur se déclenche, générant un nouveau certificat basé sur les données du participant.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/generate-document-action.png" alt="Ajout de l'action Generate Document de DocuGenerate"/></p> <p>Configurez l’action avec les paramètres suivants :</p> <ul> <li><strong>Template ID</strong> : l’ID du modèle que vous avez téléversé dans DocuGenerate à <a href="#configurer-le-modele">l’étape précédente</a>.</li> <li><strong>Name</strong> : utilisez le champ Expression pour créer un nom dynamique en concaténant le texte <code class="language-plaintext highlighter-rouge">Certificate for </code> avec la valeur <code class="language-plaintext highlighter-rouge">Participant -&gt; Name</code>.</li> <li><strong>Output Name</strong> : laissez vide, le fichier généré utilisera le nom du document.</li> <li><strong>Output Format</strong> : définissez sur <code class="language-plaintext highlighter-rouge">.pdf</code> pour produire un fichier PDF.</li> <li><strong>Data</strong> : utilisez le champ Expression pour construire l’objet de données JSON (expliqué ci-dessous).</li> </ul> <p>Enfin, définissez <strong>Reference Result Data As</strong> sur <code class="language-plaintext highlighter-rouge">Document</code> et laissez les autres paramètres inchangés.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/generate-document-config.png" alt="Configuration de l'action Generate Document"/></p> <p>Le paramètre <strong>Data</strong> nécessite un tableau JSON qui associe chaque balise de fusion du modèle à la valeur correspondante de l’enregistrement <code class="language-plaintext highlighter-rouge">Participant</code>. Le champ Expression de FlowRunner vous permet de combiner du texte statique avec des résultats de blocs dynamiques pour construire ce JSON au moment de l’exécution. Vous alternez entre des Text Inputs (pour la structure JSON et les noms de clés) et des Block Results (pour référencer les propriétés de l’objet <code class="language-plaintext highlighter-rouge">Participant</code>). L’expression résultante produit une valeur équivalente à :</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>La capture d’écran ci-dessous montre le champ Expression avec tous les blocs de texte et de référence assemblés. Chaque clé de l’objet JSON correspond à une balise de fusion du modèle de certificat, et chaque valeur est extraite dynamiquement de l’enregistrement de base de données du participant.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/data-expression-input.png" alt="Champ Expression pour construire le paramètre Data"/></p> <h2 id="enregistrer-le-fichier">Enregistrer le Fichier sur Backendless</h2> <p>Maintenant que l’étape de génération de document est configurée, nous pouvons poursuivre la construction du flux en enregistrant le certificat PDF généré dans le Backendless File Service. Dans le panneau <strong>Extensions</strong>, allez dans <strong>Backendless File Services</strong> et sélectionnez l’action <strong>Add To File</strong>. Cette action ajoute du contenu à un fichier existant, et peut également créer un nouveau fichier à partir d’une URL distante grâce au champ <strong>Content From URL</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/add-to-file-action.png" alt="Ajout de l'action Add To File"/></p> <p>Configurez l’action avec les paramètres de corps suivants :</p> <ul> <li><strong>Directory Path</strong> : définissez sur <code class="language-plaintext highlighter-rouge">certificates</code> pour enregistrer tous les fichiers générés dans un dossier dédié.</li> <li><strong>File Name</strong> : utilisez l’expression <code class="language-plaintext highlighter-rouge">Document -&gt; filename</code> pour nommer le fichier en fonction du document généré à l’<a href="#generer-le-document">étape précédente</a>.</li> <li><strong>Content From URL</strong> : utilisez <code class="language-plaintext highlighter-rouge">Document -&gt; document_uri</code> pour télécharger le PDF généré depuis DocuGenerate.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/add-to-file-config-v2.png" alt="Configuration de l'action Add To File"/></p> <p>N’oubliez pas de définir <strong>Reference Result Data As</strong> sur <code class="language-plaintext highlighter-rouge">File</code>. L’objet <code class="language-plaintext highlighter-rouge">File</code> contiendra une propriété <code class="language-plaintext highlighter-rouge">fileURL</code> que nous utiliserons à l’étape suivante pour stocker l’emplacement du fichier dans la base de données.</p> <h2 id="mettre-a-jour-lenregistrement">Mettre à Jour l’Enregistrement de Base de Données</h2> <p>Pour la dernière étape du flux, nous devons mettre à jour l’enregistrement <code class="language-plaintext highlighter-rouge">Participants</code> d’origine avec l’URL du certificat enregistré. Cela crée un lien direct entre l’entrée de base de données de chaque participant et son certificat généré, facilitant la récupération ou l’affichage du fichier ultérieurement, que ce soit depuis une application web, un rapport, ou directement depuis la table de base de données.</p> <p>Dans le panneau <strong>Actions</strong>, allez dans <strong>Data Service</strong> et sélectionnez l’action <a href="https://docs.flowrunner.ai/reference/save-record-action.html" target="_blank" rel="nofollow noopener">Save Record In Database</a>. Cette action enregistre ou met à jour des données dans votre base de données Backendless lors de son exécution et peut être placée à n’importe quel point du flux pour garantir des mises à jour de données en temps voulu en réponse à des événements ou actions spécifiques.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/save-record-in-database-action.png" alt="Ajout de l'action Save Record In Database"/></p> <p>Pour configurer l’action, sélectionnez l’option <strong>Update record from flow</strong> et choisissez <strong>Use data from</strong> l’objet <code class="language-plaintext highlighter-rouge">Participant</code>. Dans la section <strong>Perform Changes</strong>, sélectionnez la propriété <code class="language-plaintext highlighter-rouge">Certificate URL</code> et saisissez la valeur <code class="language-plaintext highlighter-rouge">File -&gt; fileURL</code>. Cela écrit l’URL du fichier enregistré à l’<a href="#enregistrer-le-fichier">étape précédente</a> dans l’enregistrement du participant. Vous pouvez, si vous le souhaitez, définir <strong>Reference Result Data As</strong> sur <code class="language-plaintext highlighter-rouge">Record</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/save-record-in-database-config-v2.png" alt="Configuration de l'action Save Record In Database"/></p> <h2 id="tester-le-flux">Tester le Flux</h2> <p>Avec les quatre étapes en place, le flux est complet et prêt pour un test de bout en bout. Le flux suit une séquence claire : un nouvel enregistrement de base de données déclenche la génération du document, le PDF généré est enregistré dans le stockage de fichiers Backendless, et l’enregistrement est mis à jour avec l’URL du fichier.</p> <p>Pour <a href="https://docs.flowrunner.ai/flow-execution/overview.html" target="_blank" rel="nofollow noopener">démarrer le flux</a>, cliquez sur le bouton <strong>Play</strong> dans le FlowRunner Designer. Notez que lorsqu’un flux est en cours d’exécution, vous ne pouvez pas y apporter de modifications, mais vous pouvez l’arrêter à tout moment et mettre à jour la configuration si nécessaire.</p> <p>Il existe plusieurs façons de tester le flux, et l’une des plus simples consiste à utiliser la <strong>REST Console</strong> de la table <code class="language-plaintext highlighter-rouge">Participants</code>. Par exemple, nous pouvons exécuter une requête <strong>POST</strong> avec le corps de requête suivant :</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>Le corps de la réponse confirme qu’un nouvel enregistrement a été créé dans la base de données. En quelques instants, le flux s’exécute et génère le certificat.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/test-rest-console.png" alt="Test du flux avec la REST Console"/></p> <p>Comme attendu, le <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate for Brandtr Lusk.pdf" target="_blank">certificat PDF</a> généré apparaît dans le dossier <code class="language-plaintext highlighter-rouge">certificates</code> du <strong>File Service</strong>. En guise d’amélioration future, vous pourriez également supprimer le document de DocuGenerate après l’avoir enregistré dans Backendless, afin de garder votre compte DocuGenerate bien organisé.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/file-service-certificates.png" alt="Certificat PDF enregistré dans le Backendless File Service"/></p> <p>Dans la table <code class="language-plaintext highlighter-rouge">Participants</code>, la colonne <code class="language-plaintext highlighter-rouge">Certificate URL</code> contient désormais un lien vers le fichier stocké dans l’espace de stockage Backendless, confirmant que l’ensemble du flux fonctionne correctement, du déclenchement à la finalisation.</p> <p><img src="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/database-table-updated.png" alt="Table de base de données mise à jour avec l'URL du certificat"/></p> <p>Si vous souhaitez essayer ce flux vous-même, vous pouvez télécharger la <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement Flow.json" target="_blank">définition de flux</a> complète et l’importer dans votre instance FlowRunner. Vous devrez mettre à jour l’ID du modèle et les références de table pour correspondre à la configuration de votre propre application Backendless.</p> <h2 id="conclusion">Conclusion</h2> <p>Dans ce tutoriel, nous avons construit un flux complet d’automatisation de certificats utilisant FlowRunner et DocuGenerate. Le flux écoute les nouveaux enregistrements dans une base de données Backendless, génère un certificat PDF personnalisé pour chaque participant, enregistre le fichier dans le Backendless File Service, et met à jour l’enregistrement de base de données avec un lien vers le document généré. L’ensemble du processus s’exécute automatiquement sans aucune intervention manuelle une fois le flux démarré.</p> <p>Ce flux illustre un exemple concret de ce que vous pouvez construire avec FlowRunner et DocuGenerate. Le même modèle s’applique à tout scénario où vous devez générer des documents à partir d’enregistrements de base de données, comme des factures, des contrats, des rapports ou tout autre document basé sur un modèle. Vous pourriez également étendre ce flux en ajoutant des notifications par e-mail, une logique conditionnelle basée sur les données des enregistrements, ou des intégrations avec d’autres services disponibles dans l’écosystème Backendless.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement.doc">Certificat de Réussite</a> utilisé dans ce tutoriel.</li> <li>Le <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-backendless/">guide d’intégration</a> DocuGenerate pour Backendless.</li> <li>La <a href="https://www.docugenerate.com/assets/posts/029-flowrunner-certificates/Certificate of Achievement Flow.json" target="_blank">définition de flux</a> complète que vous pouvez importer et utiliser.</li> <li>L’<a href="https://flowrunner.ai/integrations/docugenerate" target="_blank" rel="nofollow noopener">extension DocuGenerate</a> sur FlowRunner.</li> <li>La documentation officielle de <a href="https://docs.flowrunner.ai/" target="_blank" rel="nofollow noopener">FlowRunner</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[Découvrez comment créer un flux automatisé de génération de certificats avec FlowRunner et DocuGenerate. Créez un flux qui génère des certificats PDF à partir d'enregistrements de base de données, les enregistre dans un espace de stockage de fichiers, et met à jour chaque enregistrement avec un lien vers le fichier généré.]]></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">Générer des Propositions de Plan Santé dans Power Apps avec DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/generer-des-propositions-de-plan-sante-dans-power-apps-avec-docugenerate/" rel="alternate" type="text/html" title="Générer des Propositions de Plan Santé dans Power Apps avec DocuGenerate"/> <published>2025-12-22T00:00:00+00:00</published> <updated>2025-12-22T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/generer-des-propositions-de-plan-sante-dans-power-apps-avec-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/generer-des-propositions-de-plan-sante-dans-power-apps-avec-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>L’intégration des nouveaux employés implique souvent de les aider à s’orienter parmi des options d’avantages complexes, en particulier au moment de choisir un plan d’assurance santé. Les entreprises proposent généralement plusieurs plans santé avec des niveaux de couverture, des primes et des frais à charge variables, ce qui peut submerger les nouveaux employés essayant de prendre la meilleure décision pour leur famille. Dans ce tutoriel, nous allons reprendre une application <a href="https://www.microsoft.com/en-us/power-platform/products/power-apps" target="_blank" rel="nofollow noopener">Power Apps</a> existante, Health Plan Selector, et l’améliorer avec des fonctionnalités de génération automatisée de documents en utilisant <a href="https://www.docugenerate.com/">DocuGenerate</a> et <a href="https://www.microsoft.com/en-us/power-platform/products/power-automate" target="_blank" rel="nofollow noopener">Power Automate</a>.</p> <p>Health Plan Selector est une application d’exemple qui aide les nouveaux employés à explorer les plans santé de l’entreprise à travers une série de questions guidées. En fonction des réponses, l’application recommande le plan le plus adapté. Cependant, l’application d’origine se contente d’envoyer les détails du plan via le client e-mail par défaut de l’utilisateur. Nous allons remplacer cette fonctionnalité basique par un workflow automatisé qui génère une proposition PDF professionnelle et la livre directement dans la boîte de réception de l’employé, sans nécessiter de composition manuelle d’e-mail.</p> <p>Cette approche crée une meilleure expérience à la fois pour les équipes RH et les nouveaux employés. Le workflow automatisé garantit une cohérence dans la présentation des informations de plan, crée un document formel que les employés peuvent consulter à leur rythme et discuter en famille, et élimine les étapes manuelles liées à la rédaction et à l’envoi de ces communications. Tout au long de ce guide, nous allons passer en revue chaque étape de l’intégration, de la compréhension de la structure de l’application existante à la création d’un workflow complet de génération de documents.</p> <h2 id="template-app">Démarrer avec le Modèle Health Plan Selector</h2> <p>Power Apps propose une variété de modèles prêts à l’emploi qui constituent d’excellents points de départ pour créer des applications métier. Pour ce tutoriel, nous utiliserons le modèle Health Plan Selector, qui illustre de nombreux concepts clés de Power Apps, notamment la validation des saisies utilisateur, la logique conditionnelle, la navigation multi-écrans et la collecte de données.</p> <p>Pour commencer, ouvrez Power Apps et cliquez sur <strong>Start with an app template</strong>. Cette option vous permet de choisir parmi une liste de modèles d’applications métier entièrement fonctionnels, que vous pouvez utiliser tels quels ou personnaliser selon vos besoins spécifiques. Parcourez les modèles disponibles jusqu’à trouver l’application Health Plan Selector. Cette application d’exemple est spécifiquement conçue pour les scénarios d’intégration des nouveaux employés, aidant les utilisateurs à explorer les plans santé de l’entreprise et à découvrir l’option la plus adaptée pour eux et leur famille.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/start-with-a-template.png" alt="Démarrer avec le modèle Health Plan Selector"/></p> <p>Une fois ce modèle sélectionné, Power Apps créera une nouvelle application dans votre environnement basée sur la structure du modèle. L’application inclut tous les écrans, contrôles, collections de données et la logique nécessaires au workflow de sélection de plan santé. Vous pourrez explorer et modifier tous les aspects de l’application pour l’adapter aux offres de plans santé et aux directives de marque spécifiques de votre organisation.</p> <h2 id="understanding-app">Comprendre l’Application d’Exemple</h2> <p>L’application Health Plan Selector guide les utilisateurs à travers un questionnaire en plusieurs étapes pour déterminer le plan d’assurance santé le plus approprié. L’application interroge sur les besoins de couverture (individuel, famille, etc.), les services souhaités (soins primaires, dentaire, vision, spécialistes), les préférences budgétaires (basique ou premium), et d’autres facteurs influençant le choix du plan. En fonction de ces réponses, l’application recommande des plans spécifiques et affiche des informations détaillées, notamment les primes mensuelles, les limites de couverture et les frais à charge.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/health-plan-app-demo.gif" alt="Démo du workflow de l'application Health Plan Selector"/></p> <p>L’application est construite avec plusieurs écrans représentant les différentes étapes du processus de sélection. Après avoir créé l’application à partir du modèle, vous pouvez visualiser tous les écrans dans le panneau <strong>Tree view</strong>, qui affiche des écrans comme <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>, et <code class="language-plaintext highlighter-rouge">Share_Screen</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/health-plan-app-screens-v2.png" alt="Écrans de l'application dans la Tree view"/></p> <p>Chaque écran contient divers contrôles tels que des champs de texte, des boutons radio, des cases à cocher, des galeries et des boutons qui travaillent ensemble pour collecter les préférences de l’utilisateur et afficher les recommandations.</p> <h2 id="send-button-logic">Examiner la Logique du Bouton d’Envoi</h2> <p>Pour ce tutoriel, nous nous concentrerons spécifiquement sur le <code class="language-plaintext highlighter-rouge">Share_Screen</code>, où les utilisateurs voient leur recommandation de plan finale et ont la possibilité d’envoyer les détails à leur adresse e-mail. C’est cet écran que nous allons modifier pour intégrer les fonctionnalités de génération de documents à la place de la fonctionnalité e-mail basique actuellement en place.</p> <p>Le <code class="language-plaintext highlighter-rouge">Share_Screen</code> inclut un bouton <strong>SEND</strong> qui déclenche actuellement un lien <code class="language-plaintext highlighter-rouge">mailto</code> pour composer un e-mail avec les détails du plan. Pour comprendre ce que nous devons remplacer, examinons la logique existante du bouton. Lorsque vous sélectionnez le bouton <strong>SEND</strong> dans le concepteur d’application, vous pouvez consulter son code associé dans la barre de formule.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/share-screen-send-button-v2.png" alt="Code du bouton d'envoi dans le Share_Screen"/></p> <p>Le code utilise la fonction <code class="language-plaintext highlighter-rouge">Launch</code> pour ouvrir le client e-mail par défaut de l’utilisateur avec un sujet et un contenu de corps pré-remplis. Cette approche présente plusieurs limites. Elle nécessite que l’utilisateur ait un client e-mail par défaut configuré, elle ouvre l’e-mail sous forme de brouillon nécessitant un clic manuel sur envoyer, et la mise en forme se limite à du texte brut avec des retours à la ligne encodés en URL.</p> <p>Le code effectue également des opérations de collecte de données pour stocker les réponses de l’utilisateur dans une collection appelée <code class="language-plaintext highlighter-rouge">ResponsesCollect</code>. Voici le code complet du bouton <strong>SEND</strong> d’origine :</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>Ce code collecte les données de réponse depuis divers contrôles de formulaire et collections, puis construit une URL <code class="language-plaintext highlighter-rouge">mailto</code> avec l’adresse e-mail issue de <code class="language-plaintext highlighter-rouge">TextInput1_1.Text</code>, le nom du plan issu de <code class="language-plaintext highlighter-rouge">TextBox1_16.Text</code> comme sujet, et plusieurs autres valeurs de champs texte concaténées dans le corps. Nous allons remplacer l’appel à la fonction <code class="language-plaintext highlighter-rouge">Launch</code> par un appel à un flow Power Automate qui gère la génération de document et l’envoi d’e-mail.</p> <h2 id="modify-button">Modifier le Bouton pour Appeler Power Automate</h2> <p>Au lieu de lancer le client e-mail, nous allons modifier le bouton <strong>SEND</strong> pour déclencher un flow Power Automate. Ce flow recevra les détails du plan, générera un document PDF professionnel avec DocuGenerate, et l’enverra par e-mail. Remplacez l’intégralité de l’appel à la fonction <code class="language-plaintext highlighter-rouge">Launch</code> par le code suivant :</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="Code du bouton mis à jour appelant le flow SendEmailWithDocument"/></p> <p>Ce code modifié appelle un flow Power Automate nommé <code class="language-plaintext highlighter-rouge">SendEmailWithDocument</code> et lui transmet neuf paramètres : l’adresse e-mail, le nom du plan, les détails de couverture, le prix par mois, le prix par individu, la limite de frais à charge, le pourcentage de coassurance, les services additionnels, et le nom complet de l’utilisateur actuel.</p> <p>La fonction <code class="language-plaintext highlighter-rouge">User().FullName</code> récupère le nom de l’utilisateur authentifié depuis Azure Active Directory, que nous pouvons inclure dans le document personnalisé. Ces paramètres correspondent aux données affichées sur le <code class="language-plaintext highlighter-rouge">Share_Screen</code> et représentent les informations que nous souhaitons inclure dans le document de proposition généré.</p> <p>Vous remarquerez que Power Apps affiche initialement cette référence de flow en rouge, car le flow n’existe pas encore. Nous allons créer le flow dans la <a href="#create-flow">section suivante</a>, et une fois connecté à l’application, la référence se résoudra correctement.</p> <h2 id="create-flow">Créer le Flow Power Automate</h2> <p>Nous allons maintenant créer le flow Power Automate qui gère la génération de document et l’envoi d’e-mail. Dans Power Apps, accédez à la section <strong>Power Automate</strong> depuis le menu de gauche et cliquez sur <strong>Create a new flow</strong>. Sélectionnez <strong>Create from blank</strong> pour démarrer avec un canevas de flow vide.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/create-flow-from-blank-v2.png" alt="Créer un nouveau flow depuis zéro" class="desktop-width-75"/></p> <p>Nommez votre flow <code class="language-plaintext highlighter-rouge">SendEmailWithDocument</code> pour correspondre au nom de flow référencé dans le code du bouton. La première étape de tout flow déclenché par Power Apps est le déclencheur <strong>Power Apps (V2)</strong>, qui définit les paramètres que l’application transmettra au flow.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/power-apps-input-parameters.png" alt="Configuration des paramètres d'entrée Power Automate"/></p> <p>Cliquez sur <strong>Add an input</strong> pour chaque paramètre que vous devez recevoir depuis Power Apps. Les types de paramètres doivent correspondre aux données transmises (du texte dans tous les cas ici). Le tableau ci-dessous montre comment chaque paramètre de flow correspond à l’élément d’interface concerné :</p> <table class="table table-bordered"> <thead> <tr> <th>Paramètre du Flow</th> <th>Élément d’Interface</th> <th>Description</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>Adresse e-mail du destinataire</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>Nom du plan santé recommandé</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>Description du niveau de couverture</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>Montant de la prime mensuelle</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>Coût de couverture individuelle</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>Frais à charge maximum</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>Pourcentage de coassurance</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 des services additionnels couverts</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>Nom de l’employé depuis Azure Active Directory</td> </tr> </tbody> </table> <p><br/></p> <h2 id="docugenerate-template">Préparer le Modèle DocuGenerate</h2> <p>Avant d’ajouter l’étape de génération de document à notre flow, nous devons créer un modèle Word dans DocuGenerate qui définit la structure et la mise en forme de notre proposition de plan santé. Le modèle utilise des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> correspondant aux noms de paramètres définis dans Power Automate, qui seront remplacées par les valeurs réelles provenant du flow.</p> <p>Le document Word inclut l’identité visuelle de l’entreprise, un en-tête clair, des sections pour les détails du plan, et d’autres informations qui doivent figurer sur chaque proposition. Il contient des balises de fusion pour les neuf paramètres : <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>, et <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="Modèle Health Plan Proposal avec balises de fusion"/></p> <p>Une fois votre modèle prêt, <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">téléversez-le</a> sur votre compte DocuGenerate et nommez-le <strong>Health Plan Proposal</strong>. Vous pouvez télécharger une copie du modèle utilisé dans ce tutoriel <a href="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/Health Plan Proposal.docx">ici</a>.</p> <h2 id="generate-document-step">Ajouter l’Étape de Génération de Document</h2> <p>Pour utiliser DocuGenerate depuis Power Automate, vous devez installer le <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-power-apps/#add-the-custom-connector">connecteur personnalisé</a> dans votre environnement Power Platform. La première fois que vous l’utilisez, vous devrez vous authentifier avec votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a> DocuGenerate, que vous trouverez dans les paramètres de votre compte DocuGenerate. Cela crée une connexion réutilisable dans plusieurs flows de votre environnement.</p> <p>Le modèle créé et le connecteur disponible, nous pouvons maintenant ajouter l’étape de génération de document à notre flow. Cliquez sur <strong>New step</strong> dans votre flow et recherchez « DocuGenerate ». Sélectionnez l’action <strong>Generate Document</strong> dans la liste des opérations disponibles.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/search-docugenerate-app.png" alt="Recherche du connecteur DocuGenerate"/></p> <p>Pour configurer l’action, sélectionnez votre modèle dans le menu déroulant <strong>Template</strong>. Si vous avez téléversé votre modèle sous le nom « Health Plan Proposal », vous devriez le voir dans la liste. Ensuite, définissez le paramètre <strong>Name</strong> pour spécifier le nom du document généré. Sélectionnez <code class="language-plaintext highlighter-rouge">.pdf</code> comme <strong>Format</strong> afin que le document généré soit livré sous forme de PDF professionnel plutôt que de fichier Word modifiable.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/generate-document-step.png" alt="Configuration de l'étape Generate Document"/></p> <p>Pour le paramètre <strong>Data</strong>, vous devez fournir un objet JSON contenant toutes les valeurs des balises de fusion de votre modèle. Remplacez chaque chaîne vide par le contenu dynamique approprié provenant de l’étape de déclenchement. Power Automate affichera ces valeurs sous forme de jetons dans l’expression plutôt que de chaînes littérales.</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="send-email-step">Envoyer l’E-mail avec le Document</h2> <p>La dernière étape de notre flow envoie un e-mail à l’employé avec la proposition PDF générée en pièce jointe. Ajoutez une nouvelle étape et recherchez l’action <strong>Send an email notification (V3)</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/send-an-email-notification-step.png" alt="Configuration de l'étape Send an email notification"/></p> <p>Configurez les paramètres de l’e-mail comme suit. Définissez le champ <strong>To</strong> sur la valeur <strong>Email</strong> provenant du déclencheur Power Apps, qui correspond à l’adresse saisie par l’employé dans l’application. Pour le <strong>Subject</strong>, utilisez quelque chose de descriptif comme <code class="language-plaintext highlighter-rouge">Your Personalized Healthcare Plan Proposal</code>. Dans le champ <strong>Body</strong>, rédigez un message convivial expliquant le contenu de la pièce jointe et les éventuelles prochaines étapes que l’employé doit suivre.</p> <p>La configuration la plus importante est la section des pièces jointes. C’est ici que vous connectez le PDF généré à l’e-mail. Pour le paramètre <strong>Attachment</strong>, sélectionnez la sortie <code class="language-plaintext highlighter-rouge">document_uri</code> de l’étape <strong>Generate Document</strong>. Pour le paramètre <strong>Attachment File Name</strong>, sélectionnez la sortie <code class="language-plaintext highlighter-rouge">filename</code> de la même étape. Cela garantit que l’e-mail inclut bien le document PDF avec le nom de fichier correct.</p> <p>Une fois cette dernière étape configurée, enregistrez votre flow et testez-le pour vous assurer que tout fonctionne correctement.</p> <h2 id="testing">Tester l’Intégration Complète</h2> <p>Maintenant que l’application Power Apps et le flow Power Automate sont tous deux configurés, il est temps de tester l’intégration complète. Exécutez l’application en mode aperçu et parcourez le processus de sélection de plan santé. Répondez aux questions sur les besoins de couverture, les services souhaités et les préférences budgétaires. Lorsque vous atteignez l’écran de confirmation, saisissez votre adresse e-mail et cliquez sur le bouton <strong>SEND</strong>. Si tout est correctement configuré, le bouton déclenchera le flow Power Automate, qui génère le PDF et envoie l’e-mail.</p> <p>Le document contient tous les détails du plan avec les balises de fusion remplacées par les valeurs réelles de l’application, et la mise en forme correspond au design professionnel du modèle.</p> <object data="/assets/posts/028-power-apps-health-plan/Health Plan Proposal.pdf" type="application/pdf" class="inline-pdf-blog"></object> <p>Si vous rencontrez des problèmes, consultez l’historique d’exécution du flow dans Power Automate pour identifier où le processus a pu échouer. Les problèmes courants incluent des mappages de paramètres incorrects, ou des problèmes d’authentification avec l’un des connecteurs. L’historique d’exécution du flow fournit des informations détaillées sur chaque étape, y compris les données transmises et les éventuels messages d’erreur survenus.</p> <h2 id="benefits">Avantages de Cette Approche</h2> <p>Remplacer la fonctionnalité basique d’envoi d’e-mail par une génération automatisée de documents et un envoi d’e-mail offre plusieurs avantages, tant pour les équipes RH que pour les employés. Le workflow automatisé garantit une cohérence dans la présentation des informations de plan santé à tous les employés, éliminant les variations qui peuvent survenir lorsque les personnes rédigent des e-mails manuellement. Le PDF généré constitue un document formel que les employés peuvent enregistrer, imprimer et consulter pendant toute la période d’inscription, ce qui facilite la comparaison des options ou la discussion des plans en famille.</p> <p>Du point de vue opérationnel, cette intégration réduit l’effort manuel requis du personnel RH. Au lieu d’aider les employés à rédiger des e-mails ou à préparer des synthèses de plan individuellement, le système s’en charge automatiquement en fonction des recommandations générées par l’application. Cela libère du temps pour les équipes RH pour des activités plus utiles, comme répondre à des questions spécifiques ou aider les employés dans des situations complexes.</p> <p>Cette approche permet également une meilleure documentation à des fins de conformité. Chaque proposition générée constitue une trace des informations communiquées à l’employé, ce qui peut être important pour la conformité réglementaire ou si des questions surviennent ultérieurement concernant ce qui a été communiqué pendant le processus d’inscription. Vous pourriez étendre davantage le workflow en ajoutant une étape qui enregistre chaque proposition générée dans SharePoint ou un autre système de gestion documentaire pour un archivage centralisé.</p> <h2 id="conclusion">Conclusion</h2> <p>Améliorer des applications Power Apps avec des fonctionnalités de génération automatisée de documents démontre la puissance de l’écosystème Microsoft Power Platform combiné à des services spécialisés comme DocuGenerate. L’intégration que nous avons construite transforme une simple application de sélection de plan santé en une solution complète d’intégration des employés, qui les guide à travers le choix d’un plan et livre automatiquement des documents de proposition professionnels.</p> <p>Ce tutoriel s’est concentré sur les propositions de plan santé, mais le même modèle d’intégration peut s’appliquer à de nombreux autres scénarios Power Apps. Chaque fois que votre application collecte des données devant être formatées en document formel et livrées aux utilisateurs ou conservées pour des archives, cette approche consistant à utiliser Power Automate pour orchestrer la génération et la distribution de documents peut apporter une valeur significative. Que vous génériez des contrats de travail, des lettres d’offre, des certificats de formation ou des rapports personnalisés, la combinaison de Power Apps pour la collecte de données, de Power Automate pour l’orchestration du workflow, et de DocuGenerate pour la génération de documents offre une solution puissante et flexible.</p> <p>La nature no-code de cette intégration la rend accessible aux analystes métier et aux utilisateurs avancés qui n’ont pas forcément de compétences en développement traditionnel. En exploitant des connecteurs préconçus et des concepteurs de workflows visuels, vous pouvez créer des solutions sophistiquées d’automatisation documentaire sans écrire de code personnalisé ni gérer d’infrastructure complexe.</p> <h2 id="resources">Ressources</h2> <ul> <li>Le modèle <a href="https://www.docugenerate.com/assets/posts/028-power-apps-health-plan/Health Plan Proposal.docx">Health Plan Proposal</a> utilisé dans ce tutoriel.</li> <li>Le <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-power-apps/">guide DocuGenerate</a> pour l’intégration avec Power Apps.</li> <li>La documentation officielle de <a href="https://learn.microsoft.com/en-us/power-automate/" target="_blank" rel="nofollow noopener">Power Automate</a> par Microsoft.</li> <li>La documentation officielle de <a href="https://learn.microsoft.com/en-us/power-apps/" target="_blank" rel="nofollow noopener">Power Apps</a> par 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[Ce tutoriel approfondi montre comment améliorer l'application Health Plan Selector dans Power Apps avec une génération automatisée de documents grâce à DocuGenerate, pour créer des propositions PDF professionnelles qui résument des recommandations personnalisées de plan santé.]]></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">Créer un Analyseur de CV avec Pipedream et DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/creer-un-analyseur-de-cv-avec-pipedream-et-docugenerate/" rel="alternate" type="text/html" title="Créer un Analyseur de CV avec Pipedream et DocuGenerate"/> <published>2025-11-19T00:00:00+00:00</published> <updated>2025-11-19T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/creer-un-analyseur-de-cv-avec-pipedream-et-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/creer-un-analyseur-de-cv-avec-pipedream-et-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Le tri des CV est l’une des tâches les plus chronophages du processus de recrutement. Les équipes RH passent souvent des heures à examiner les CV pour en extraire les informations clés, évaluer les candidats et préparer des synthèses pour les responsables du recrutement. Dans ce tutoriel, nous allons créer un analyseur de CV automatisé qui se charge de ce travail pour vous, en combinant la puissance de l’automatisation de workflows de <a href="https://pipedream.com/" target="_blank" rel="nofollow noopener">Pipedream</a>, l’analyse intelligente de <a href="https://www.anthropic.com/claude" target="_blank" rel="nofollow noopener">Claude AI</a>, et la génération de PDF professionnels de <a href="https://www.docugenerate.com/">DocuGenerate</a>.</p> <p>Le workflow s’exécute automatiquement chaque fois qu’un nouveau CV est ajouté à un dossier Dropbox. Il extrait le texte du CV, utilise Claude pour analyser l’expérience et les qualifications du candidat, génère une synthèse structurée avec les points clés, et crée un rapport PDF professionnel que votre équipe de recrutement peut consulter immédiatement. L’ensemble du processus ne prend que quelques secondes et ne nécessite aucune intervention manuelle.</p> <p>Cette approche est particulièrement précieuse pour les organisations qui doivent traiter rapidement de nombreux CV tout en maintenant une cohérence dans l’évaluation des candidats. En standardisant le format d’analyse et en exploitant l’IA pour en extraire les points clés, vous pouvez consacrer votre temps à l’entretien des candidats les plus prometteurs plutôt qu’à passer des heures sur le tri initial.</p> <h2 id="workflow-overview">Comprendre le Workflow</h2> <p>Le workflow complet se compose de sept étapes interconnectées qui transforment ensemble un CV brut en un rapport d’analyse structuré. Voici comment le processus se déroule de bout en bout :</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/complete-workflow-diagram.png" alt="Diagramme du workflow complet montrant toutes les étapes"/></p> <p>Le workflow commence lorsque vous téléversez un CV dans un dossier Dropbox surveillé. Pipedream détecte le nouveau fichier, le télécharge, et extrait le contenu textuel du PDF. Ce texte est ensuite envoyé à Claude AI avec des instructions précises pour analyser le CV et en extraire les informations clés telles que l’expérience professionnelle, les compétences, la formation et les réalisations notables. Claude renvoie une réponse JSON structurée contenant toutes les données extraites.</p> <p>Les données JSON sont ensuite transmises à DocuGenerate, avec un modèle préconçu, pour générer une synthèse PDF professionnelle. Une fois le document créé, il est automatiquement renvoyé vers Dropbox dans un dossier désigné où votre équipe de recrutement peut y accéder. L’ensemble du processus se termine en moins d’une minute, et vous pouvez traiter plusieurs CV simultanément en les téléversant simplement dans le dossier déclencheur.</p> <h2 id="setting-up-template">Configurer le Modèle de Document</h2> <p>Avant de créer le workflow Pipedream, nous devons créer un modèle qui mettra en forme nos rapports d’analyse de CV. Le modèle utilise la syntaxe des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> de DocuGenerate pour définir où les données de l’analyse de Claude doivent apparaître dans le document final. Cela garantit que chaque synthèse de candidat suit un format cohérent et professionnel.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/docugenerate-template.png" alt="Capture d'écran du modèle de synthèse de CV dans DocuGenerate"/></p> <p>Le modèle comprend des sections pour les informations du candidat (nom, e-mail, téléphone, localisation), une synthèse professionnelle, un aperçu de l’expérience, les compétences clés, la formation, les points forts, des recommandations d’entretien, et une évaluation globale avec un score d’adéquation. Certaines sections comme les compétences, les points forts et les recommandations utilisent la <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-listes-a-un-modele/">syntaxe de liste</a> pour afficher plusieurs éléments à partir de tableaux dans les données. Par exemple, la section des compétences utilise <code class="language-plaintext highlighter-rouge">[#skills]</code> pour démarrer la boucle, <code class="language-plaintext highlighter-rouge">[.]</code> pour afficher chaque compétence sous forme de puce, et <code class="language-plaintext highlighter-rouge">[/skills]</code> pour terminer la boucle.</p> <p>Vous pouvez <a href="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/Resume Analysis Summary.docx" target="_blank">télécharger le modèle complet</a> et le téléverser sur votre compte DocuGenerate. Une fois téléversé, notez le nom ou l’ID du modèle, car vous en aurez besoin lors de la configuration de l’étape de génération de document dans le workflow. Le modèle étant prêt, nous pouvons maintenant créer le workflow Pipedream qui automatisera l’ensemble du processus d’analyse.</p> <h2 id="dropbox-trigger">Configurer le Déclencheur Dropbox</h2> <p>Le workflow démarre avec un <a href="https://pipedream.com/apps/dropbox/triggers/new-file" target="_blank" rel="nofollow noopener">déclencheur Dropbox</a> qui surveille un dossier spécifique pour détecter de nouveaux fichiers. Ce déclencheur est le point d’entrée qui active toute l’automatisation chaque fois qu’un CV est téléversé. Pour configurer ce déclencheur, vous devrez connecter votre compte Dropbox à Pipedream et spécifier le dossier à surveiller.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/dropbox-trigger-config.png" alt="Capture d'écran de la configuration du déclencheur Dropbox"/></p> <p>Pour ce tutoriel, nous surveillons un dossier appelé <code class="language-plaintext highlighter-rouge">/Pipedream/Resumes</code>. Lorsque vous testez le déclencheur avec un CV d’exemple, vous constaterez qu’il renvoie des métadonnées sur le fichier, notamment le nom de fichier, le chemin, la taille et les dates de modification. Cependant, il est important de noter que le déclencheur fournit uniquement ces métadonnées, et non le contenu réel du fichier. C’est pourquoi nous avons besoin d’une étape distincte pour télécharger le fichier, que nous configurerons dans la <a href="#download-file">section suivante</a>.</p> <p>Le déclencheur s’active immédiatement lorsqu’un nouveau fichier est détecté, ce qui rend le workflow réactif à vos besoins de recrutement. Vous pouvez téléverser des CV tout au long de la journée, et chacun sera traité automatiquement sans aucune intervention manuelle. Ce traitement en temps réel garantit que les synthèses de candidats sont disponibles pour votre équipe le plus rapidement possible.</p> <h2 id="download-file">Télécharger le Fichier de CV</h2> <p>Une fois que le déclencheur détecte un nouveau fichier, nous devons réellement télécharger son contenu avant de pouvoir en extraire le texte. L’action <a href="https://pipedream.com/apps/dropbox/actions/download-file-to-tmp" target="_blank" rel="nofollow noopener">Download File to TMP</a> récupère le CV depuis Dropbox et l’enregistre dans le stockage temporaire de Pipedream, où les étapes suivantes peuvent y accéder.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/download-file-to-tmp-config.png" alt="Capture d'écran de la configuration du téléchargement de fichier"/></p> <p>La configuration est simple. Le paramètre <strong>Path</strong> utilise <code class="language-plaintext highlighter-rouge">{{steps.trigger.event.path_display}}</code> pour référencer le chemin de fichier capturé par le déclencheur. Cette action télécharge le fichier et renvoie un objet contenant le chemin de fichier temporaire dans la propriété <code class="language-plaintext highlighter-rouge">tmpPath</code>. Le fichier reste dans le stockage temporaire tout au long de l’exécution du workflow, ce qui est idéal pour le traiter puis l’éliminer une fois le workflow terminé.</p> <p>Le fichier téléchargé est maintenant prêt pour l’extraction de texte. Le chemin de fichier temporaire sera utilisé à l’étape suivante pour lire le contenu du PDF et le convertir en texte que Claude pourra analyser.</p> <h2 id="extract-text">Extraire le Texte du PDF</h2> <p>Une fois le CV téléchargé dans le stockage temporaire, nous devons maintenant en extraire le contenu textuel du fichier PDF. Cette étape utilise un bloc de code Node.js avec la bibliothèque <a href="https://www.npmjs.com/package/pdf-parse" target="_blank" rel="nofollow noopener">pdf-parse</a> pour lire le PDF et le convertir en texte brut que Claude pourra analyser.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/node-code-config.png" alt="Capture d'écran du code d'extraction de texte"/></p> <p>Le code lit le fichier depuis le chemin temporaire en utilisant le module intégré <code class="language-plaintext highlighter-rouge">fs</code> de Node.js, puis transmet le buffer du fichier à <code class="language-plaintext highlighter-rouge">pdf-parse</code> pour le traitement. La bibliothèque gère la complexité de l’analyse PDF et renvoie le texte extrait sous forme de chaîne de caractères.</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>Le texte extrait est maintenant disponible dans <code class="language-plaintext highlighter-rouge">resumeText</code> et prêt à être analysé par Claude à l’étape suivante.</p> <h2 id="claude-analysis">Analyser le CV avec Claude</h2> <p>C’est ici que l’intelligence intervient. L’étape Claude API envoie le texte extrait du CV à <a href="https://docs.anthropic.com/en/api/getting-started" target="_blank" rel="nofollow noopener">Claude AI d’Anthropic</a> avec des instructions détaillées pour analyser le contenu et renvoyer des données structurées au format JSON. Claude examine le CV et en extrait les informations clés telles que l’expérience professionnelle, les compétences, la formation, et fournit des analyses qui nécessiteraient habituellement un examen manuel.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/claude-chat-config.png" alt="Capture d'écran de la configuration de l'API Claude"/></p> <p>La configuration de l’action <a href="https://pipedream.com/apps/anthropic/actions/chat" target="_blank" rel="nofollow noopener">Chat with Anthropic (Claude)</a> nécessite votre clé API Anthropic, que vous pouvez obtenir depuis votre compte Anthropic. La requête utilise le modèle <code class="language-plaintext highlighter-rouge">claude-sonnet-4-5-20250929</code>, qui offre un excellent équilibre entre vitesse, coût et capacité d’analyse pour cette tâche. Le paramètre <strong>Maximum Tokens to Sample</strong> est défini sur <code class="language-plaintext highlighter-rouge">4096</code>, ce qui donne à Claude suffisamment d’espace pour renvoyer une analyse complète avec tous les champs dont nous avons besoin.</p> <p>Le prompt est soigneusement structuré pour guider Claude dans l’extraction d’informations spécifiques et leur mise en forme en JSON valide. Voici le prompt complet qui indique à Claude quoi analyser et comment structurer la réponse :</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 traite le texte du CV et renvoie un objet JSON contenant toutes les informations extraites. La réponse comprend tout, des coordonnées de base à des recommandations pertinentes de questions d’entretien basées sur l’expérience unique du candidat. Ce format structuré facilite la transmission des données à DocuGenerate pour la génération de document à l’étape suivante.</p> <h2 id="parse-json">Analyser la Réponse JSON</h2> <p>Claude renvoie son analyse sous forme de chaîne JSON, mais nous devons la convertir en un objet structuré avec lequel nous pouvons travailler dans les étapes suivantes. L’action intégrée de Pipedream <a href="https://pipedream.com/apps/formatting/actions/parse-json" target="_blank" rel="nofollow noopener">Parse JSON</a>, disponible sous <a href="https://pipedream.com/apps/formatting" target="_blank" rel="nofollow noopener">Formatting → Data</a>, gère automatiquement cette conversion.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/parse-json-config.png" alt="Capture d'écran de la configuration Parse JSON"/></p> <p>La configuration consiste simplement à prendre la réponse de Claude depuis <code class="language-plaintext highlighter-rouge">{{steps.chat.$return_value.content[0].text}}</code> et à l’analyser en un objet structuré. Ces données analysées deviennent disponibles pour toutes les étapes suivantes du workflow, nous permettant de référencer des champs spécifiques comme <code class="language-plaintext highlighter-rouge">{{steps.parse_json.$return_value.candidateName}}</code> lorsque nous en avons besoin.</p> <p>Disposer de données analysées en champs individuels est particulièrement utile pour le nommage dynamique des fichiers et pour transmettre l’ensemble des données à DocuGenerate. L’objet analysé contient tous les champs définis dans notre modèle : informations du candidat, synthèse, tableau de compétences, tableau de points forts, tableau de recommandations, et l’évaluation globale.</p> <h2 id="generate-document">Générer le Document de Synthèse</h2> <p>Avec les données analysées désormais disponibles sous forme d’objet structuré, nous sommes prêts à générer la synthèse PDF professionnelle. Cette étape utilise l’application <a href="https://pipedream.com/apps/docugenerate" target="_blank" rel="noopener">DocuGenerate</a> sur Pipedream pour fusionner les données avec notre modèle et créer un document mis en forme.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/generate-document-config.png" alt="Capture d'écran de la configuration de l'API DocuGenerate"/></p> <p>Vous aurez besoin de votre clé API DocuGenerate pour configurer une connexion, que vous pouvez trouver dans les paramètres de votre compte. La configuration de l’action inclut plusieurs paramètres importants :</p> <ul> <li><strong>Template</strong> spécifie le modèle <strong>Resume Analysis Summary</strong> de la section de configuration</li> <li><strong>Name</strong> utilise <code class="language-plaintext highlighter-rouge">Resume Analysis for {{steps.parse_json.$return_value.candidateName}}</code> pour créer un nom de fichier dynamique basé sur le nom du candidat</li> <li><strong>Format</strong> est défini sur <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code> pour générer un document PDF</li> <li><strong>Data</strong> contient l’objet JSON analysé complet <code class="language-plaintext highlighter-rouge">{{steps.parse_json.$return_value}}</code> provenant de Claude avec toutes les informations du candidat</li> </ul> <p>L’API traite cette requête et renvoie une réponse contenant un champ <code class="language-plaintext highlighter-rouge">document_uri</code>, qui est une URL pointant vers le document PDF généré.</p> <h2 id="upload-to-dropbox">Téléverser l’Analyse sur Dropbox</h2> <p>La dernière étape termine le workflow en téléversant l’analyse PDF générée vers Dropbox, où votre équipe de recrutement peut y accéder. L’action <a href="https://pipedream.com/apps/dropbox/actions/upload-file" target="_blank" rel="nofollow noopener">Upload a File</a> enregistre le document dans un dossier désigné, regroupant toutes les analyses de candidats au même endroit.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/upload-file-to-dropbox.png" alt="Capture d'écran de la configuration du téléversement vers Dropbox"/></p> <p>La configuration nécessite de spécifier le chemin de destination et le contenu du fichier à téléverser :</p> <ul> <li><strong>Path</strong> spécifie le dossier de destination <code class="language-plaintext highlighter-rouge">/Pipedream/Analysis</code></li> <li><strong>File Name</strong> est défini sur <code class="language-plaintext highlighter-rouge">{{steps.generate_document.$return_value.filename}}</code> comme nom de fichier du document généré</li> <li><strong>File Path or URL</strong> référence la valeur <code class="language-plaintext highlighter-rouge">{{steps.generate_document.$return_value.document_uri}}</code> de l’étape précédente</li> <li><strong>Mode</strong> est défini sur <code class="language-plaintext highlighter-rouge">overwrite</code> pour définir le comportement si le fichier existe déjà</li> </ul> <p>Une fois téléversée, l’analyse est immédiatement disponible pour votre équipe, et vous pouvez éventuellement ajouter une étape de notification par e-mail pour alerter les responsables du recrutement lorsqu’une nouvelle synthèse de candidat est prête à être consultée.</p> <h2 id="workflow-execution">Tester le Workflow Complet</h2> <p>Une fois toutes les étapes configurées, le workflow est prêt à traiter les CV automatiquement. Pour le tester, téléversez simplement un CV au format PDF dans le dossier <code class="language-plaintext highlighter-rouge">/Pipedream/Resumes</code> de votre Dropbox. Le workflow détectera le nouveau fichier en quelques secondes et commencera à le traiter à travers chaque étape.</p> <p>Vous pouvez suivre l’exécution en temps réel via l’interface de Pipedream, qui affiche le flux de données à travers chaque étape. Une fois terminé, vous trouverez le PDF d’analyse généré dans votre dossier <code class="language-plaintext highlighter-rouge">/Pipedream/Analysis</code> sur Dropbox, prêt à être consulté par votre équipe de recrutement.</p> <p><img src="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/pdf-analysis-in-dropbox.png" alt="Exemple de PDF d'analyse généré et enregistré sur Dropbox"/></p> <h2 id="extending-workflow">Étendre le Workflow</h2> <p>L’analyseur de CV que nous avons créé constitue une base solide, mais il existe de nombreuses façons de l’étendre pour mieux l’adapter à votre processus de recrutement. Voici quelques améliorations pratiques que vous pourriez envisager d’ajouter pour rendre le workflow encore plus utile pour votre organisation.</p> <p>Vous pourriez ajouter une étape de notification par e-mail qui alerte immédiatement les responsables du recrutement lorsqu’une nouvelle analyse de candidat est prête. Cette notification pourrait inclure les points clés de l’analyse de Claude, tels que le score d’adéquation et la synthèse professionnelle, ainsi qu’un lien direct vers le rapport PDF complet sur Dropbox. Cela évite aux responsables du recrutement de devoir constamment vérifier le dossier pour détecter de nouvelles analyses.</p> <p>Une autre extension utile consiste à stocker les données JSON structurées dans une base de données ou une feuille de calcul. En ajoutant une étape qui envoie les données analysées vers <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>, ou votre système de suivi des candidatures, vous pouvez créer une base de données consultable de tous les candidats. Cela facilite le filtrage des candidats par compétences, niveau d’expérience ou score d’adéquation lorsque vous recherchez des qualifications spécifiques.</p> <p>Vous pourriez également personnaliser l’analyse en fonction du poste pour lequel vous recrutez. Vous pourriez créer différents modèles pour différents rôles et utiliser le nom de fichier ou une structure de dossiers désignée pour déterminer quel modèle utiliser. Par exemple, les CV dans <code class="language-plaintext highlighter-rouge">/Resumes/Engineering</code> pourraient utiliser un modèle qui met l’accent sur les compétences techniques, tandis que ceux dans <code class="language-plaintext highlighter-rouge">/Resumes/Sales</code> pourraient se concentrer davantage sur les capacités de communication et l’expérience commerciale.</p> <h2 id="conclusion">Conclusion</h2> <p>Créer un analyseur de CV automatisé avec Pipedream, Claude et DocuGenerate démontre comment l’IA et l’automatisation de workflows peuvent transformer des processus manuels chronophages en opérations efficaces et cohérentes. Le workflow que nous avons créé traite les CV en quelques secondes, extrait des informations pertinentes qui prendraient bien plus de temps à identifier pour un humain, et génère des rapports qui facilitent les décisions de recrutement.</p> <p>Cette approche est particulièrement précieuse car elle maintient une cohérence dans l’évaluation des candidats. Chaque CV est analysé selon les mêmes critères, réduisant les biais inconscients et garantissant que tous les candidats sont évalués de manière équitable. Le format structuré des rapports d’analyse facilite également la comparaison des candidats côte à côte et l’identification des postulants les plus prometteurs pour vos postes ouverts.</p> <p>Le modèle de workflow que nous avons présenté ici va au-delà de l’analyse de CV. La même approche consistant à extraire le texte de documents, à utiliser l’IA pour analyser et structurer le contenu, puis à générer des rapports mis en forme peut être appliquée à de nombreux autres scénarios de traitement documentaire. Que vous analysiez des contrats, traitiez des retours clients, ou extrayiez des données de documents de recherche, le workflow principal reste similaire, avec des ajustements du prompt d’analyse et du modèle de sortie.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle <a href="https://www.docugenerate.com/assets/posts/027-pipedream-resume-analyzer/Resume Analysis Summary.docx" target="_blank">Resume Analysis Summary</a> pour DocuGenerate.</li> <li>L’application officielle <a href="https://pipedream.com/apps/docugenerate" target="_blank" rel="noopener">DocuGenerate</a> pour Pipedream.</li> <li>L’application <a href="https://pipedream.com/apps/anthropic" target="_blank" rel="nofollow noopener">Anthropic (Claude)</a> sur Pipedream.</li> <li>L’application <a href="https://pipedream.com/apps/dropbox" target="_blank" rel="nofollow noopener">Dropbox</a> sur 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[Découvrez comment créer un analyseur de CV intelligent qui traite automatiquement les candidatures à l'aide de Pipedream, Claude AI et DocuGenerate. Ce tutoriel étape par étape montre comment extraire les données clés des CV et les utiliser pour créer des rapports PDF.]]></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">Automatiser la Génération de Factures PDF avec n8n et DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/automatiser-la-generation-de-factures-pdf-avec-n8n-et-docugenerate/" rel="alternate" type="text/html" title="Automatiser la Génération de Factures PDF avec n8n et DocuGenerate"/> <published>2025-10-24T00:00:00+00:00</published> <updated>2025-10-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/automatiser-la-generation-de-factures-pdf-avec-n8n-et-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/automatiser-la-generation-de-factures-pdf-avec-n8n-et-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>L’automatisation documentaire ne nécessite pas toujours des solutions basées sur le cloud, parfois les workflows les plus efficaces sont ceux qui s’exécutent localement sur votre machine. Dans ce tutoriel, nous allons explorer comment créer un système automatisé de génération de factures en utilisant <a href="https://n8n.io/" target="_blank" rel="nofollow noopener">n8n</a>, un puissant outil d’automatisation de workflows, combiné à <a href="https://www.docugenerate.com/">DocuGenerate</a> pour créer des factures PDF professionnelles.</p> <p>Le workflow que nous allons créer est simple mais puissant. Il surveille un dossier désigné sur votre machine locale pour détecter de nouveaux fichiers Excel contenant des données de facturation. Lorsqu’un fichier apparaît, le workflow lit automatiquement les données, génère une facture distincte pour chaque ligne, et enregistre les documents PDF complétés dans un dossier de sortie. Cette approche est particulièrement utile pour les entreprises qui doivent traiter leurs factures localement et garder un contrôle total sur leurs données.</p> <p>Tout au long de ce guide, nous allons passer en revue chaque nœud du workflow n8n, en expliquant son objectif et sa configuration. À la fin de ce tutoriel, vous disposerez d’un système local de génération de factures entièrement fonctionnel que vous pourrez adapter à vos besoins spécifiques.</p> <h2 id="setting-up-template">Configurer le Modèle</h2> <p>Avant de créer le workflow n8n, nous devons préparer notre modèle de facture. La <a href="/fr/modeles/">Bibliothèque de Modèles</a> de DocuGenerate inclut un modèle <a href="https://www.docugenerate.com/assets/templates/invoices/repair/Repair Invoice.zip">Repair Invoice</a> prêt à l’emploi, parfait pour ce tutoriel. Vous pouvez en apprendre davantage sur l’utilisation des modèles de la bibliothèque dans notre <a href="/fr/blog/comment-utiliser-les-modeles-de-la-bibliotheque-de-modeles/">précédent guide</a>.</p> <p>Le modèle contient des balises de fusion comme <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>, et d’autres champs courants de facture. Ces <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> seront automatiquement remplacées par les données réelles du fichier Excel lors de la génération du document. Le modèle inclut également un exemple de fichier Excel avec dix lignes de données de facturation, que nous utiliserons pour illustrer le workflow.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/repair-invoice-template.png" alt="Le modèle Repair Invoice dans DocuGenerate"/></p> <p>Une fois le modèle téléchargé depuis la bibliothèque, téléversez le fichier <a href="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/Repair Invoice.docx">Repair Invoice.docx</a> sur votre compte DocuGenerate. Le modèle étant prêt, nous pouvons maintenant nous concentrer sur la création du workflow n8n qui automatisera l’ensemble du processus de génération de factures.</p> <h2 id="workflow-overview">Vue d’Ensemble du Workflow Complet</h2> <p>Le workflow que nous construisons est composé de plusieurs nœuds interconnectés qui travaillent ensemble pour surveiller les fichiers, traiter les données, générer les documents et enregistrer les résultats sur le disque. Voici à quoi ressemble le workflow complet dans n8n :</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/complete-workflow.png" alt="Le workflow n8n complet"/></p> <p>Le workflow commence par un déclencheur qui surveille un dossier local pour détecter de nouveaux fichiers. Lorsqu’un fichier Excel est ajouté, le workflow valide l’extension du fichier, lit son contenu, extrait les données sous forme de lignes structurées, puis parcourt chaque ligne pour générer une facture individuelle. Chaque facture générée est téléchargée et enregistrée dans un dossier de sortie désigné sur votre machine locale. Tout ce processus s’exécute automatiquement, sans nécessiter d’intervention manuelle une fois configuré.</p> <p>Si vous souhaitez importer ce workflow directement dans votre instance n8n, vous pouvez télécharger le <a href="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/n8n-workflow.json" target="_blank">fichier JSON du workflow</a> et l’importer. Cela peut vous faire gagner du temps et garantir que tous les nœuds sont correctement configurés. Examinons maintenant chaque nœud en détail pour comprendre le fonctionnement du workflow.</p> <h2 id="local-file-trigger">Configurer le Déclencheur de Fichier Local</h2> <p>Le workflow démarre avec le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.localfiletrigger/" target="_blank" rel="nofollow noopener">Local File Trigger</a>, qui surveille un dossier spécifique sur votre ordinateur pour détecter de nouveaux fichiers. Ce déclencheur est le point d’entrée de tout le processus d’automatisation. Pour ce tutoriel, nous surveillons le dossier <code class="language-plaintext highlighter-rouge">/Users/docugenerate/n8n/Data</code>, mais vous pouvez configurer n’importe quel répertoire de votre système dans lequel vous prévoyez d’ajouter des fichiers Excel.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/local-file-trigger-v3.png" alt="Configuration du Local File Trigger" class="desktop-width-50"/></p> <p>Le déclencheur est configuré pour détecter l’événement <code class="language-plaintext highlighter-rouge">File Added</code>, ce qui signifie qu’il s’active chaque fois qu’un nouveau fichier apparaît dans le dossier surveillé. C’est idéal pour les scénarios de traitement par lot où vous pourriez déposer plusieurs fichiers Excel dans un dossier au cours de la journée et souhaitez qu’ils soient traités automatiquement. Le déclencheur capture le chemin du fichier et le transmet au nœud suivant du workflow.</p> <p>Pour cet exemple, nous utiliserons le fichier <strong>Repair Invoice.xlsx</strong> du modèle d’exemple, qui contient dix lignes de données de facturation. Chaque ligne représente une facture distincte avec des détails comme le numéro de facture, les informations client, les descriptions de service et les montants.</p> <h2 id="check-file-extension">Valider l’Extension du Fichier</h2> <p>Une fois que le déclencheur détecte un nouveau fichier, nous devons vérifier qu’il s’agit bien d’un fichier Excel avant de tenter de le traiter. Le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/" target="_blank" rel="nofollow noopener">If</a> remplit cette fonction en vérifiant si le chemin du fichier se termine par l’extension <code class="language-plaintext highlighter-rouge">.xlsx</code>. Cette étape de validation évite les erreurs qui pourraient survenir si quelqu’un déposait accidentellement un type de fichier différent dans le dossier surveillé.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/if-condition.png" alt="Vérification que le fichier est un fichier Excel" class="desktop-width-75"/></p> <p>Si la condition est vraie, le workflow continue vers l’étape suivante. Si elle est fausse, le workflow s’arrête, évitant ainsi un traitement inutile de fichiers incompatibles. Cette simple vérification renforce la robustesse du workflow et garantit que seuls des fichiers Excel valides sont traités.</p> <h2 id="read-file-from-disk">Lire le Fichier depuis le Disque</h2> <p>Une fois confirmé qu’il s’agit bien d’une feuille de calcul Excel, le nœud <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> récupère le contenu réel du fichier depuis votre machine locale. Ce nœud utilise le chemin de fichier fourni par le déclencheur pour localiser et lire les données binaires du fichier Excel.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/read-file-from-disk-v2.png" alt="Lecture du fichier depuis le disque"/></p> <p>La configuration est simple. Le paramètre <strong>File(s) Selector</strong> est défini sur <code class="language-plaintext highlighter-rouge">{{ $json.path }}</code>, qui référence le chemin capturé par le <a href="#local-file-trigger">déclencheur</a>. Dans la section des options, nous spécifions <code class="language-plaintext highlighter-rouge">data</code> comme nom du champ binaire de sortie où le contenu du fichier sera stocké. Ce nom de champ sera utilisé dans les nœuds suivants pour accéder aux données du fichier.</p> <p>Il est important de noter que ce nœud fonctionne avec des fichiers présents sur le même ordinateur qui exécute n8n. Si vous devez gérer des fichiers entre différents ordinateurs, vous devrez utiliser d’autres nœuds tels que FTP, HTTP Request, ou AWS S3. Pour des scénarios de traitement local comme le nôtre, ce nœud offre une solution simple et efficace.</p> <h2 id="extract-from-file">Extraire les Données du Fichier Excel</h2> <p>Avec le contenu du fichier désormais disponible en données binaires, nous devons le convertir dans un format structuré qui pourra être traité par le workflow. Le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile/" target="_blank" rel="nofollow noopener">Extract from File</a> gère cette transformation en analysant le fichier Excel et en convertissant chaque ligne en un élément de données distinct.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/extract-from-file.png" alt="Extraction des données du fichier Excel"/></p> <p>Le nœud est configuré avec l’opération <strong>Extract from XLSX</strong>, et le champ <strong>Input Binary Field</strong> est défini sur <code class="language-plaintext highlighter-rouge">data</code>, ce qui correspond au nom de champ spécifié dans le <a href="#read-file-from-disk">nœud précédent</a>. Cette étape est essentielle car elle transforme les données binaires brutes du fichier en objets JSON structurés contenant les informations de facturation de chaque ligne. Ces éléments de données structurés peuvent maintenant être traités individuellement pour générer les factures.</p> <h2 id="loop-over-items">Parcourir Chaque Ligne de Facturation</h2> <p>Maintenant que nous disposons des éléments de données structurés du fichier Excel, nous devons traiter chacun individuellement pour générer une facture distincte. Le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/" target="_blank" rel="nofollow noopener">Loop Over Items</a> permet cela en parcourant les éléments par lots. Pour ce workflow, nous utilisons une taille de lot de un, ce qui signifie que chaque facture est générée et enregistrée avant de passer à la suivante.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/loop-over-items.png" alt="Parcourir les éléments avec une taille de lot de 1"/></p> <p>Cette approche par lots est particulièrement utile pour la génération de documents car elle garantit que chaque facture est entièrement traitée avant de démarrer la suivante. Elle aide également à gérer les ressources système lors du traitement de jeux de données plus volumineux. La boucle se poursuit jusqu’à ce que tous les éléments aient été traités, le workflow exécutant la même séquence de nœuds pour chaque facture.</p> <h2 id="generate-document">Générer le Document de Facture</h2> <p>Le nœud <a href="/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/#generate-document">Generate Document</a> prend les données de chaque ligne et les fusionne avec le modèle pour créer une facture PDF. Pour utiliser ce nœud, vous devrez installer le <a href="/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/#install-docugenerate">nœud DocuGenerate</a> dans votre instance n8n.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/generate-document-v2.png" alt="Génération du document de facture"/></p> <p>La configuration du nœud nécessite plusieurs paramètres :</p> <ul> <li><strong>Template Name or ID</strong> est défini sur <code class="language-plaintext highlighter-rouge">Repair Invoice</code>, ce qui correspond au modèle que nous avons <a href="#setting-up-template">téléversé précédemment</a>.</li> <li><strong>Name</strong> utilise une expression <code class="language-plaintext highlighter-rouge">Invoice no {{ $json['Invoice No'] }}</code> pour nommer dynamiquement chaque document en fonction du numéro de facture issu des données.</li> <li><strong>Format</strong> est défini sur <code class="language-plaintext highlighter-rouge">PDF (.pdf)</code> pour générer des documents PDF.</li> <li><strong>Data</strong> est configuré avec <code class="language-plaintext highlighter-rouge">{{ $json }}</code>, ce qui transmet l’intégralité de l’élément de données actuel à l’API de génération de documents. Cela signifie que tous les champs de la ligne Excel sont disponibles pour les balises de fusion du modèle.</li> </ul> <p>L’API traite cette requête et renvoie une réponse incluant un champ <code class="language-plaintext highlighter-rouge">document_uri</code> pointant vers le document généré.</p> <h2 id="get-file-from-url">Télécharger le Document Généré</h2> <p>Une fois la facture créée par DocuGenerate, <strong>Get File from URL</strong> utilise le nœud <a href="https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/" target="_blank" rel="nofollow noopener">HTTP Request</a> intégré pour récupérer le PDF généré à partir de l’URL fournie dans la réponse de l’étape précédente.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/get-file-from-url.png" alt="Récupération du fichier depuis l'URL"/></p> <p>Le paramètre <strong>URL</strong> est défini sur <code class="language-plaintext highlighter-rouge">{{ $json.document_uri }}</code>, qui référence l’URL du document renvoyée par le nœud <a href="#generate-document">Generate Document</a>. Dans la section des options, le <strong>Response Format</strong> est configuré sur <code class="language-plaintext highlighter-rouge">File</code> pour garantir que les données sont traitées comme du contenu binaire plutôt que du texte. L’option <strong>Put Output in Field</strong> est définie sur <code class="language-plaintext highlighter-rouge">data</code>, stockant le contenu du PDF dans un champ accessible par le nœud suivant.</p> <p>Pour cet exemple, le document généré porte le nom de fichier <code class="language-plaintext highlighter-rouge">Invoice no 58-223-0655.pdf</code>, créé dynamiquement à partir du numéro de facture de la première ligne de nos données d’exemple. Chaque facture suivante aura son propre nom de fichier unique suivant le même modèle.</p> <h2 id="write-file-to-disk">Enregistrer la Facture sur le Disque</h2> <p>La dernière étape du workflow enregistre le PDF de la facture générée dans un dossier désigné sur votre machine locale. Le nœud <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> gère cette opération, en stockant chaque facture complétée à un endroit facilement accessible.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/write-file-to-disk.png" alt="Écriture du fichier sur le disque"/></p> <p>Le paramètre <strong>File Path and Name</strong> est configuré avec <code class="language-plaintext highlighter-rouge">/Users/docugenerate/n8n/Invoices/{{ $data.filename }}</code>, qui combine un chemin de répertoire de base avec le nom de fichier dynamique du document généré. Le champ <strong>Input Binary Field</strong> est défini sur <code class="language-plaintext highlighter-rouge">data</code>, qui contient le contenu PDF récupéré à l’<a href="#get-file-from-url">étape précédente</a>.</p> <p>Cette configuration enregistre toutes les factures dans le même dossier, mais vous pourriez personnaliser cela davantage. Par exemple, vous pourriez organiser les factures par date, ou les regrouper par nom de client. La flexibilité des expressions n8n vous permet de créer toute structure de dossiers adaptée aux besoins de votre entreprise. Gardez simplement à l’esprit que ce nœud est conçu pour fonctionner avec des fichiers présents sur le même ordinateur qui exécute n8n.</p> <h2 id="workflow-execution">Exécuter le Workflow</h2> <p>Une fois tous les nœuds configurés, le workflow est prêt à traiter les factures automatiquement. Pour le tester, ajoutez simplement le fichier <strong>Repair Invoice.xlsx</strong> dans le dossier <code class="language-plaintext highlighter-rouge">Data</code> surveillé par le déclencheur. Le workflow détectera immédiatement le nouveau fichier et commencera le traitement.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/execute-workflow-v2.gif" alt="Exécution du workflow"/></p> <p>L’animation ci-dessus montre la section <a href="#loop-over-items">Loop Over Items</a> en action, parcourant les dix éléments de données du fichier Excel. Pour chaque élément, le workflow génère une facture à partir du modèle et des données, télécharge le PDF, et l’enregistre dans le dossier de destination. Vous pouvez suivre la progression en temps réel via l’interface visuelle de n8n, qui offre une excellente visibilité sur chaque étape du processus.</p> <p><img src="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/invoices-folder.png" alt="Factures générées dans le dossier de sortie"/></p> <p>Une fois le workflow terminé, les dix factures ont été générées et enregistrées dans le dossier <code class="language-plaintext highlighter-rouge">Invoices</code>. Cette approche automatisée élimine le besoin de création manuelle de documents, économisant un temps précieux et réduisant les erreurs potentielles liées à la saisie manuelle des données.</p> <h2 id="conclusion">Conclusion</h2> <p>Créer des workflows d’automatisation locaux avec n8n et DocuGenerate offre une solution puissante pour les entreprises qui doivent traiter leurs documents efficacement tout en gardant un contrôle total sur leurs données. Le workflow que nous avons créé démontre à quel point il est facile de surveiller des dossiers, valider des fichiers, extraire des données et générer des documents professionnels sans dépendre de services cloud ou d’intégrations complexes.</p> <p>Cette approche est particulièrement précieuse dans les scénarios où la confidentialité des données est primordiale, où la connectivité internet est limitée, ou lorsque vous préférez simplement garder votre pipeline de traitement de documents en local. La flexibilité de n8n vous permet d’étendre ce workflow de nombreuses façons. Vous pourriez ajouter des notifications par e-mail lors de la génération des factures, créer des copies de sauvegarde, ou l’intégrer à vos systèmes d’entreprise existants avec d’autres solutions.</p> <p>Le workflow que nous avons créé traite des factures de réparation, mais le même modèle peut être appliqué à tout type de document pris en charge par DocuGenerate. Que vous ayez besoin de générer des contrats, des lettres, des certificats ou des rapports, le workflow principal reste le même. Il vous suffit d’ajuster le modèle et de vous assurer que vos données Excel correspondent aux balises de fusion de votre modèle choisi.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://www.docugenerate.com/assets/posts/026-n8n-generate-invoices/n8n-workflow.json" target="_blank">fichier JSON du workflow n8n</a> que vous pouvez importer dans votre instance n8n.</li> <li>Le modèle <a href="https://www.docugenerate.com/assets/templates/invoices/repair/Repair Invoice.zip">Repair Invoice</a> de la Bibliothèque de Modèles DocuGenerate.</li> <li>La page officielle de la <a href="https://docs.n8n.io/" target="_blank" rel="nofollow noopener">documentation n8n</a>.</li> <li>Le guide d’intégration complet de DocuGenerate <a href="/fr/aide/articles/automatiser-la-generation-de-documents-avec-n8n/">pour n8n</a>.</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[Découvrez comment créer un workflow automatisé de génération de factures avec n8n et DocuGenerate qui surveille un dossier pour les fichiers Excel, extrait les données et génère des factures PDF professionnelles. Idéal pour un traitement local sans dépendre de multiples solutions cloud.]]></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">Synchroniser des Modèles de Google Docs vers DocuGenerate avec Apps Script</title> <link href="https://www.docugenerate.com/fr/blog/synchroniser-des-modeles-de-google-docs-vers-docugenerate-avec-apps-script/" rel="alternate" type="text/html" title="Synchroniser des Modèles de Google Docs vers DocuGenerate avec Apps Script"/> <published>2025-09-25T00:00:00+00:00</published> <updated>2025-09-25T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/synchroniser-des-modeles-de-google-docs-vers-docugenerate-avec-apps-script</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/synchroniser-des-modeles-de-google-docs-vers-docugenerate-avec-apps-script/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Bien que DocuGenerate fonctionne principalement avec des documents Word, de nombreuses équipes préfèrent créer et modifier leurs modèles dans Google Docs en raison de ses fonctionnalités de collaboration supérieures, de ses capacités d’édition en temps réel et de son interface intuitive. Cependant, utiliser des modèles Google Docs dans DocuGenerate nécessite traditionnellement un processus manuel : télécharger le Google Doc en tant que fichier Word, puis le téléverser dans DocuGenerate. Bien que cette approche fonctionne, elle crée des frictions dans votre workflow et rend la maintenance des modèles fastidieuse, surtout lorsque les modèles changent fréquemment.</p> <p>Et si vous pouviez éliminer entièrement cette étape manuelle? Et si vos Google Docs pouvaient se synchroniser automatiquement avec DocuGenerate, créant de nouveaux modèles lorsque des documents sont ajoutés et mettant à jour les modèles existants lorsque des modifications sont apportées? Cette automatisation permettrait à votre équipe de continuer à travailler dans Google Docs tout en garantissant que vos modèles DocuGenerate restent à jour sans aucune intervention manuelle.</p> <p>Dans ce tutoriel complet, nous allons créer une solution de synchronisation complète utilisant <a href="https://developers.google.com/apps-script" target="_blank" rel="nofollow noopener">Google Apps Script</a> qui surveille un dossier Google Drive spécifique et synchronise automatiquement toutes les modifications avec votre compte DocuGenerate. Le système gère à la fois la création initiale des modèles et leurs mises à jour continues, ce qui le rend parfait pour les équipes qui souhaitent conserver leur workflow Google Docs tout en exploitant les puissantes capacités de génération de documents de DocuGenerate.</p> <h2 id="fonctionnement-synchronisation">Comment Fonctionne le Système de Synchronisation</h2> <p>Notre script de synchronisation surveille un dossier Google Drive désigné pour détecter les modifications et traite automatiquement tout document modifié, garantissant que vos modèles DocuGenerate reflètent toujours la dernière version de vos Google Docs. Le workflow de synchronisation suit cette séquence logique :</p> <ul> <li> <p><strong>Détection des Documents</strong> : Le <a href="#detection-modifications">système analyse</a> votre dossier Google Drive désigné à la recherche de Google Docs, identifiant à la fois les nouveaux documents qui n’ont pas encore été synchronisés et les documents existants qui ont été modifiés récemment.</p> </li> <li> <p><strong>Mappage des Modèles</strong> : Pour chaque document, le script vérifie s’il correspond déjà à un modèle DocuGenerate en examinant les propriétés personnalisées du document. Ces propriétés agissent comme un pont entre les deux systèmes, stockant l’<a href="#synchronisation-documents">ID du modèle DocuGenerate</a> directement dans les métadonnées du Google Doc.</p> </li> <li> <p><strong>Conversion de Format</strong> : Lorsqu’un document doit être synchronisé, le script le <a href="#conversion-documents">convertit</a> du format Google Docs vers le format Microsoft Word (<code class="language-plaintext highlighter-rouge">.docx</code>), qui est le format attendu par DocuGenerate pour le traitement des modèles.</p> </li> <li> <p><strong>Communication API</strong> : Selon que le document est nouveau ou existant, l’automatisation <a href="#creation-modeles">crée un nouveau modèle</a> dans DocuGenerate ou <a href="#mise-a-jour-modeles">met à jour un modèle existant</a> via l’API DocuGenerate.</p> </li> <li> <p><strong>Stockage des Métadonnées</strong> : Après une synchronisation réussie, le script stocke l’ID du modèle DocuGenerate dans les propriétés personnalisées du Google Doc, garantissant que les futures mises à jour modifieront le bon modèle plutôt que d’en créer des doublons.</p> </li> </ul> <p>Cette conception garantit que votre équipe peut continuer à travailler naturellement dans Google Docs tandis que la synchronisation automatisée gère tous les détails techniques pour maintenir les modèles DocuGenerate à jour. Vous pouvez consulter le <a href="https://www.docugenerate.com/assets/posts/025-sync-google-docs/apps-script.txt" target="_blank">script complet</a> que nous allons construire dans ce tutoriel, si vous voulez avoir une idée de son fonctionnement global.</p> <h2 id="configuration-apps-script">Configurer le Projet Apps Script</h2> <p>Google Apps Script fournit une plateforme puissante pour automatiser les workflows entre les applications Google Workspace et les API externes. Pour notre solution de synchronisation, nous allons créer un nouveau projet Apps Script contenant toutes les fonctions nécessaires pour surveiller les Google Docs et communiquer avec DocuGenerate.</p> <p>Pour commencer, accédez à <a href="https://script.google.com/" target="_blank" rel="nofollow noopener">Apps Script</a> et créez un nouveau projet. Vous commencerez avec une page vierge où nous pourrons construire notre solution de synchronisation complète. Notre projet pour ce tutoriel s’appelle <strong>Templates Sync DocuGenerate</strong>, comme vous pouvez le voir dans l’image ci-dessous.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/new-apps-script-project.png" alt="Création d'un nouveau projet Apps Script"/></p> <h3 id="activer-api-drive">Activer l’API Google Drive</h3> <p>Notre script de synchronisation a besoin d’accéder à des fonctionnalités avancées de Google Drive qui vont au-delà du service DriveApp standard. Plus précisément, nous avons besoin de l’ <a href="https://developers.google.com/workspace/drive/api/guides/about-sdk" target="_blank" rel="nofollow noopener">API Google Drive</a> v3 pour travailler avec les propriétés personnalisées des fichiers, qui est la méthode que nous utiliserons pour suivre la relation entre les Google Docs et les modèles DocuGenerate.</p> <p>Pour activer l’API Google Drive dans votre projet Apps Script nouvellement créé, cliquez sur <strong>Add a service</strong> dans la barre latérale gauche de l’éditeur Apps Script. <img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/add-a-service.png" alt="Création d'un nouveau projet Apps Script" class="desktop-width-75"/></p> <p>Recherchez ensuite <strong>Drive API</strong>, définissez l’identifiant sur <code class="language-plaintext highlighter-rouge">Drive</code> et cliquez sur le bouton <strong>Add</strong> pour terminer la configuration. <img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/add-drive-service.png" alt="Ajout du service API Google Drive" class="desktop-width-50"/></p> <p>Cette étape est cruciale car le service DriveApp standard ne donne pas accès aux propriétés personnalisées des fichiers, que nous utilisons pour stocker l’ID du modèle DocuGenerate dans les métadonnées de chaque Google Doc. Sans cet accès à l’API, notre script ne pourrait pas savoir quels documents ont déjà été synchronisés ni déterminer s’il faut créer de nouveaux modèles ou mettre à jour des modèles existants.</p> <h3 id="configurer-identifiants">Configurer Vos Identifiants</h3> <p>Avant de mettre en œuvre les fonctions de synchronisation, vous devrez configurer le système avec vos identifiants et paramètres spécifiques. Notre script utilise un objet de configuration qui centralise tous les paramètres que vous devez personnaliser :</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> : Vous pouvez trouver votre clé API dans la page <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">Paramètres Développeurs</a>. Cette clé authentifie toutes les demandes adressées à l’API DocuGenerate et garantit que les modèles générés sont correctement associés à votre compte.</p> </li> <li> <p><strong>DOCUGENERATE_BASE_URL</strong> : L’URL par défaut pointe vers la région de traitement principale de DocuGenerate. Si vous utilisez un <a href="https://www.docugenerate.com/fr/aide/articles/puis-je-utiliser-des-points-de-terminaison-api-regionaux/">point de terminaison régional</a> pour un traitement plus rapide dans votre zone géographique, mettez à jour cette URL en conséquence.</p> </li> <li> <p><strong>MONITORED_FOLDER_ID</strong> : Il s’agit de l’identifiant unique du dossier Google Drive que vous souhaitez surveiller. Vous pouvez extraire l’ID du dossier à partir de n’importe quelle URL Google Drive : <code class="language-plaintext highlighter-rouge">https://drive.google.com/drive/folders/&lt;FOLDER_ID&gt;</code></p> </li> </ul> <h2 id="fonction-synchronisation-manuelle">Créer la Fonction de Synchronisation Manuelle</h2> <p>La fonction de synchronisation manuelle constitue la base de notre solution de synchronisation et fournit le mécanisme de configuration initial pour établir les connexions entre vos Google Docs et les modèles DocuGenerate. Cette fonction traite tous les documents de votre dossier surveillé, peu importe la date de leur dernière modification, ce qui la rend parfaite pour une configuration initiale ou des opérations de synchronisation en masse.</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>Cette fonction illustre plusieurs concepts clés utilisés tout au long de notre script de synchronisation :</p> <p><strong>Accès au Dossier</strong> : La fonction utilise <code class="language-plaintext highlighter-rouge">DriveApp.getFolderById()</code> pour accéder au dossier spécifique que nous voulons surveiller. Cette approche garantit que seuls les documents du dossier désigné sont traités, évitant la synchronisation accidentelle de documents sans rapport.</p> <p><strong>Filtrage par Type de Fichier</strong> : En utilisant <code class="language-plaintext highlighter-rouge">getFilesByType(MimeType.GOOGLE_DOCS)</code>, la fonction filtre automatiquement tout fichier qui n’est pas un Google Doc dans le dossier. Cela garantit que seuls les documents pouvant être convertis au format Word sont traités.</p> <p><strong>Modèle d’Itérateur</strong> : Google Apps Script utilise des itérateurs pour les collections de fichiers afin de gérer efficacement un grand nombre de fichiers. La boucle <code class="language-plaintext highlighter-rouge">while (files.hasNext())</code> traite chaque fichier individuellement, permettant une journalisation détaillée et une gestion des erreurs par document.</p> <p><strong>Délégation à la Logique Principale</strong> : Le travail de synchronisation réel est géré par la fonction <code class="language-plaintext highlighter-rouge">syncDocument()</code>, que nous examinerons ensuite. Cette séparation des responsabilités rend le code plus facile à maintenir et permet d’utiliser la même logique principale pour les opérations de synchronisation manuelle et automatique.</p> <p><strong>Gestion des Erreurs</strong> : L’ensemble de l’opération est encapsulé dans un bloc try-catch pour garantir que toute erreur survenant pendant le traitement est correctement journalisée et n’interrompt pas l’ensemble de l’opération de synchronisation. Ceci est particulièrement important pour les scripts automatisés qui doivent s’exécuter de manière fiable dans le temps.</p> <p>Vous devez exécuter cette fonction en premier lors de la configuration de votre automatisation de synchronisation, car elle établit les mappages initiaux entre vos Google Docs existants et leurs modèles DocuGenerate correspondants.</p> <h2 id="synchronisation-documents">Comprendre la Synchronisation des Documents</h2> <p>La fonction <code class="language-plaintext highlighter-rouge">syncDocument()</code> contient la logique principale qui gère le processus de synchronisation pour les documents individuels. Cette fonction est responsable de déterminer si un document doit créer un nouveau modèle ou mettre à jour un modèle existant, de gérer le processus de conversion, et de maintenir les métadonnées qui suivent la relation entre les Google Docs et les modèles DocuGenerate.</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>Cette fonction illustre plusieurs concepts sophistiqués qui rendent la solution de synchronisation robuste et intelligente :</p> <p><strong>Inspection des Métadonnées</strong> : La fonction utilise l’API Google Drive v3 pour examiner les propriétés personnalisées du document. Ces propriétés sont invisibles pour les utilisateurs mais offrent un moyen puissant de stocker des métadonnées qui persistent avec le document. L’appel <code class="language-plaintext highlighter-rouge">Drive.Files.get()</code> demande spécifiquement uniquement le champ properties pour minimiser l’utilisation de l’API et améliorer les performances.</p> <p><strong>Logique de Décision</strong> : Selon que le document possède déjà ou non une propriété <code class="language-plaintext highlighter-rouge">docugenerate_template_id</code>, la fonction décide s’il faut créer un nouveau modèle ou mettre à jour un modèle existant. Cette logique de décision évite les doublons de modèles et garantit que les modifications de documents entraînent des mises à jour de modèles plutôt que la création de nouveaux modèles.</p> <p><strong>Conversion de Format</strong> : Chaque opération de synchronisation nécessite de convertir le Google Doc au format Word, ce qui est géré par la fonction <code class="language-plaintext highlighter-rouge">convertToWordFormat()</code>. Cette conversion garantit que DocuGenerate reçoit le modèle dans un format qu’il peut traiter de manière fiable.</p> <p><strong>Persistance des Métadonnées</strong> : Lorsqu’un nouveau modèle est créé avec succès dans DocuGenerate, la fonction stocke l’ID de modèle renvoyé dans les propriétés du document à l’aide de <code class="language-plaintext highlighter-rouge">Drive.Files.update()</code>. Cela crée un lien permanent entre le Google Doc et son modèle DocuGenerate correspondant.</p> <p><strong>Gestion Élégante des Erreurs</strong> : Les erreurs sur un document individuel n’arrêtent pas le processus de synchronisation global. Si un document ne parvient pas à se synchroniser, l’erreur est journalisée, mais le système continue de traiter les autres documents.</p> <p>Cette approche garantit que le système de synchronisation se comporte de manière intelligente et maintient l’intégrité des données sur les deux plateformes. Le mécanisme de stockage des métadonnées est particulièrement élégant car il est totalement invisible pour les utilisateurs tout en fournissant au système les informations nécessaires pour prendre des décisions intelligentes concernant la gestion des modèles.</p> <h2 id="conversion-documents">Convertir les Documents au Format Word</h2> <p>Le processus de conversion de document est un composant essentiel de notre solution de synchronisation, car DocuGenerate s’attend à recevoir les modèles au format Microsoft Word (<code class="language-plaintext highlighter-rouge">.docx</code>). Google Apps Script fournit une fonctionnalité intégrée pour exporter les Google Docs dans divers formats, et nous exploitons cette fonctionnalité pour créer des documents Word correctement formatés qui conservent tout le formatage, les styles et les balises de fusion du Google Doc d’origine.</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>Cette fonction illustre plusieurs concepts techniques importants :</p> <p><strong>API d’Export de Google</strong> : Google fournit une URL d’export directe pour chaque document, capable de générer le document dans divers formats. Le paramètre <code class="language-plaintext highlighter-rouge">format=docx</code> demande spécifiquement le format Microsoft Word, ce qui garantit la compatibilité avec le système de traitement des modèles de DocuGenerate.</p> <p><strong>Authentification OAuth</strong> : Le processus de conversion nécessite une authentification pour accéder aux Google Docs privés. La méthode <code class="language-plaintext highlighter-rouge">ScriptApp.getOAuthToken()</code> fournit le jeton OAuth nécessaire qui accorde au script l’accès au document au nom de l’utilisateur qui a autorisé le script.</p> <p><strong>Gestion des Blobs</strong> : Google Apps Script représente les fichiers sous forme de « blobs » - des objets binaires volumineux qui contiennent les données du fichier ainsi que des métadonnées comme le nom de fichier et le type de contenu. La fonction définit correctement à la fois le nom de fichier (en ajoutant l’extension <code class="language-plaintext highlighter-rouge">.docx</code>) et le type MIME pour garantir que le fichier résultant est reconnu comme un document Word valide.</p> <p><strong>Propagation des Erreurs</strong> : Contrairement à d’autres fonctions qui capturent et journalisent les erreurs localement, cette fonction relance les erreurs vers la fonction appelante. Cette conception garantit que si la conversion du document échoue, la fonction appelante peut gérer l’erreur de manière appropriée (par exemple, en ignorant le document ou en réessayant plus tard).</p> <p><strong>Gestion des Noms de Fichiers</strong> : La fonction ajoute automatiquement l’extension <code class="language-plaintext highlighter-rouge">.docx</code> au nom du document, garantissant que le fichier résultant possède la bonne extension, quel que soit le nom du Google Doc d’origine.</p> <p>Ce processus de conversion préserve tous les aspects importants de votre Google Doc, y compris le formatage du texte, les tableaux, les images, et surtout, les balises de fusion que DocuGenerate utilisera lors de la génération des documents. Le document Word résultant est fonctionnellement identique à ce que vous obtiendriez en exportant manuellement le Google Doc via l’interface Google Docs.</p> <h2 id="creation-modeles">Créer de Nouveaux Modèles dans DocuGenerate</h2> <p>Lorsqu’un Google Doc n’a pas de modèle DocuGenerate associé (indiqué par l’absence d’une propriété <code class="language-plaintext highlighter-rouge">docugenerate_template_id</code>), le système doit créer un nouveau modèle dans DocuGenerate. Cette fonction gère la communication API nécessaire pour téléverser le document Word converti et l’établir comme nouveau modèle dans votre compte DocuGenerate.</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>Cette fonction met en valeur plusieurs aspects importants de l’intégration d’API et de la gestion des formulaires multipart :</p> <p><strong>Données de Formulaire Multipart</strong> : La création d’un modèle nécessite de téléverser à la fois un fichier (le document Word) et des métadonnées (le nom du modèle). Cette fonction construit une charge utile de formulaire multipart qui inclut les deux éléments d’information dans le format attendu par l’API DocuGenerate.</p> <p><strong>Gestion Automatique du Content-Type</strong> : Un détail crucial est que nous évitons délibérément de définir manuellement l’en-tête <code class="language-plaintext highlighter-rouge">Content-Type</code>. Lorsque vous incluez des fichiers dans la charge utile, Google Apps Script doit ajouter des paramètres de délimitation au type de contenu <code class="language-plaintext highlighter-rouge">multipart/form-data</code>. En omettant l’en-tête Content-Type, nous laissons Apps Script gérer cela automatiquement, évitant les erreurs liées aux délimitations.</p> <p><strong>Vérification du Code de Statut HTTP</strong> : L’API DocuGenerate renvoie un code de statut <code class="language-plaintext highlighter-rouge">201 Created</code> lorsqu’un modèle est créé avec succès. La fonction vérifie spécifiquement ce code de statut pour distinguer les opérations réussies des erreurs, garantissant une gestion robuste des erreurs.</p> <p><strong>Analyse de la Réponse</strong> : Lorsque la création du modèle réussit, l’API renvoie une réponse JSON contenant l’ID du nouveau modèle. Cet ID est crucial car c’est ce que nous allons stocker dans les propriétés du Google Doc pour lier le document à son modèle correspondant.</p> <p><strong>Retours d’Erreur Élégants</strong> : Plutôt que de lever des exceptions, cette fonction renvoie <code class="language-plaintext highlighter-rouge">null</code> en cas d’erreur. Cette approche permet à la fonction appelante de continuer à traiter d’autres documents même si la création d’un modèle échoue.</p> <p><strong>Journalisation Complète</strong> : La fonction fournit une journalisation détaillée à la fois pour les opérations réussies et les erreurs, facilitant le diagnostic des problèmes pendant le développement et le suivi des performances du système en production.</p> <p>Le processus de création de modèle établit le lien fondamental entre votre Google Doc et DocuGenerate. Une fois ce lien établi via le mécanisme de stockage des métadonnées, toutes les futures modifications du Google Doc entraîneront des mises à jour de modèle plutôt que la création de modèles supplémentaires.</p> <h2 id="mise-a-jour-modeles">Mettre à Jour les Modèles Existants</h2> <p>Lorsqu’un Google Doc possède déjà un modèle DocuGenerate associé (indiqué par la présence d’une propriété <code class="language-plaintext highlighter-rouge">docugenerate_template_id</code>), le système met à jour le modèle existant plutôt que d’en créer un nouveau. Cette fonction gère la communication API nécessaire pour remplacer le contenu du modèle tout en conservant l’ID du modèle et tous les paramètres associés dans DocuGenerate.</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>Cette fonction partage de nombreuses similitudes avec la fonction de création de modèle, mais comporte quelques différences importantes :</p> <p><strong>Méthode HTTP</strong> : Les mises à jour de modèle utilisent la méthode <code class="language-plaintext highlighter-rouge">PUT</code> plutôt que <code class="language-plaintext highlighter-rouge">POST</code>, suivant les conventions des API RESTful. La méthode <code class="language-plaintext highlighter-rouge">PUT</code> indique que nous remplaçons entièrement la ressource existante par un nouveau contenu.</p> <p><strong>Structure de l’URL</strong> : L’URL inclut l’ID de modèle spécifique que nous mettons à jour (<code class="language-plaintext highlighter-rouge">/template/${templateId}</code>), garantissant que l’opération de mise à jour cible le bon modèle dans votre compte DocuGenerate.</p> <p><strong>Codes de Statut Attendus</strong> : Les mises à jour réussies renvoient un code de statut <code class="language-plaintext highlighter-rouge">200 OK</code> plutôt que <code class="language-plaintext highlighter-rouge">201 Created</code>, reflétant la différence entre la création de nouvelles ressources et la mise à jour de ressources existantes.</p> <p><strong>Sémantique de la Valeur de Retour</strong> : La fonction renvoie un booléen indiquant le succès ou l’échec plutôt qu’un ID de ressource comme la fonction de création. Puisque l’ID du modèle ne change pas pendant les mises à jour, il n’est pas nécessaire de le renvoyer.</p> <p><strong>Remplacement du Contenu</strong> : L’opération de mise à jour remplace entièrement le contenu du modèle par la nouvelle version provenant du Google Doc. Cela garantit que toutes les modifications, y compris les changements de texte, les mises à jour de formatage et les ajustements de balises de fusion, sont reflétées dans le modèle DocuGenerate.</p> <p><strong>Préservation des Paramètres</strong> : Bien que le contenu du modèle soit remplacé, les autres paramètres DocuGenerate associés au modèle restent inchangés. Cela offre le meilleur des deux mondes : un contenu actuel avec une configuration préservée.</p> <p>Le mécanisme de mise à jour est crucial pour maintenir la synchronisation au fil du temps. À mesure que votre équipe collabore sur Google Docs et apporte des modifications aux modèles, cette fonction garantit que vos modèles DocuGenerate restent automatiquement à jour sans aucune intervention manuelle.</p> <h2 id="synchronisation-automatique">Mettre en Place la Synchronisation Automatique</h2> <p>Bien que la synchronisation manuelle soit utile pour la configuration initiale et les opérations en masse, la véritable puissance de notre solution provient de la synchronisation automatique qui s’exécute continuellement en arrière-plan. Cette automatisation garantit que vos modèles DocuGenerate restent à jour à mesure que votre équipe apporte des modifications aux Google Docs, sans nécessiter d’intervention manuelle.</p> <h3 id="configurer-declencheurs">Configurer des Déclencheurs Temporels</h3> <p>Google Apps Script fournit un puissant mécanisme de déclencheurs qui peut exécuter des fonctions selon un planning. Notre solution de synchronisation automatique utilise des déclencheurs temporels pour vérifier périodiquement les modifications de documents et les traiter automatiquement.</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>Cette fonction de configuration illustre plusieurs concepts importants pour une automatisation robuste :</p> <p><strong>Prévention des Doublons</strong> : Avant de créer un nouveau déclencheur, la fonction supprime tout déclencheur existant qui appellerait la même fonction. Cela évite la création de plusieurs déclencheurs superposés si la fonction de configuration est exécutée plusieurs fois.</p> <p><strong>Configuration du Déclencheur</strong> : Le déclencheur est configuré pour s’exécuter toutes les 5 minutes, ce qui offre un bon équilibre entre réactivité (les modifications sont détectées rapidement) et efficacité (le système ne gaspille pas de ressources en vérifiant les modifications trop fréquemment).</p> <p><strong>Gestion des Erreurs</strong> : Comme toutes nos fonctions, le processus de configuration inclut une gestion complète des erreurs pour garantir que les problèmes de création de déclencheur sont correctement journalisés et n’interrompent pas l’automatisation.</p> <p><strong>Journalisation de Confirmation</strong> : La fonction fournit une confirmation claire lorsque la synchronisation automatique est configurée avec succès, incluant des détails sur le dossier surveillé.</p> <p>Vous n’avez besoin d’exécuter cette fonction qu’une seule fois pour établir la synchronisation automatique. Après son exécution, la fonction <code class="language-plaintext highlighter-rouge">autoSync()</code> s’exécutera automatiquement toutes les 5 minutes, vérifiant les modifications de documents et les traitant selon les besoins.</p> <h3 id="detection-modifications">Détection Efficace des Modifications</h3> <p>La fonction de synchronisation automatique est conçue pour être très efficace en ne traitant que les documents qui ont été modifiés récemment. Cette approche minimise l’utilisation de l’API et le temps de traitement tout en garantissant que les modifications sont détectées et synchronisées rapidement.</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>Cette fonction met en valeur plusieurs techniques d’optimisation qui rendent la synchronisation automatique efficace et fiable :</p> <p><strong>Filtrage Basé sur l’Horodatage</strong> : La fonction ne traite que les documents qui ont été modifiés au cours des 5 dernières minutes (correspondant à la fréquence du déclencheur). Cela réduit considérablement le nombre de documents à vérifier à chaque exécution.</p> <p><strong>Traitement Minimal</strong> : En vérifiant les horodatages de modification avant d’effectuer un traitement lourd (comme la conversion de format ou les appels API), la fonction minimise l’utilisation des ressources lorsqu’aucune modification n’a eu lieu.</p> <p><strong>Suivi des Performances</strong> : La fonction suit et rapporte le nombre de documents réellement synchronisés, offrant une visibilité et aidant à identifier les problèmes potentiels.</p> <p><strong>Fonctionnement Non Perturbateur</strong> : Si aucun document n’a été modifié, la fonction se termine rapidement sans effectuer d’opérations inutiles. Cela garantit que la synchronisation automatique n’affecte pas les performances lorsqu’il n’y a aucun travail à effectuer.</p> <p><strong>Gestion Cohérente des Erreurs</strong> : Même les fonctions automatisées incluent une gestion complète des erreurs pour garantir que les problèmes temporaires ne cassent pas définitivement le système de synchronisation.</p> <p>L’intervalle de synchronisation de 5 minutes offre un équilibre optimal entre réactivité et efficacité. Les modifications apportées aux Google Docs seront reflétées dans les modèles DocuGenerate en moins de 5 minutes, ce qui est suffisamment rapide pour la plupart des workflows métier tout en restant respectueux des ressources système.</p> <h2 id="test-initial">Configuration Initiale et Test de la Synchronisation Manuelle</h2> <p>Avant de déployer votre solution de synchronisation pour une utilisation régulière, il est important de tester soigneusement tous les composants pour s’assurer qu’ils fonctionnent correctement avec votre dossier Google Drive et votre configuration de compte DocuGenerate spécifiques. Des tests appropriés permettent d’identifier tout problème de configuration et de confirmer que la logique de synchronisation gère correctement divers scénarios.</p> <p>Commencez par tester la fonction de <a href="#fonction-synchronisation-manuelle">synchronisation manuelle</a>, qui fournit un retour immédiat et aide à établir les connexions initiales entre vos Google Docs et les modèles DocuGenerate.</p> <h3 id="preparer-documents-test">Préparer les Documents de Test</h3> <p>Créez quelques Google Docs de test dans votre dossier surveillé avec différents types de contenu (texte simple, texte formaté, tableaux, images) pour vous assurer que le processus de conversion gère correctement les différents types de documents. Pour ce tutoriel, nous allons utiliser les modèles <strong>Software licensing agreement</strong> et <strong>General release of liability</strong> de Google Docs.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/google-docs-documents.png" alt="Documents Google Docs"/></p> <h3 id="executer-synchronisation-manuelle">Exécuter la Synchronisation Manuelle</h3> <p>Exécutez la fonction <code class="language-plaintext highlighter-rouge">manualSync()</code> depuis l’éditeur Apps Script et surveillez le journal d’exécution. Vous devriez voir un résultat détaillé montrant quels documents sont traités et si les modèles sont créés avec succès.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/manual-sync-logs.png" alt="Journaux d'exécution de la synchronisation manuelle"/></p> <h3 id="verifier-creation-modeles">Vérifier la Création des Modèles</h3> <p>Vérifiez votre compte DocuGenerate pour confirmer que de nouveaux modèles ont été créés avec les bons noms et le bon contenu. Les modèles doivent conserver tout le formatage des Google Docs d’origine.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/manual-sync.gif" alt="Démo d'exécution de la synchronisation manuelle"/></p> <p>Ce test initial confirme que votre automatisation de synchronisation est correctement configurée et peut créer avec succès de nouveaux modèles à partir de vos Google Docs. Une fois la synchronisation manuelle fonctionnelle, vous êtes prêt à configurer la synchronisation automatique.</p> <h2 id="test-synchronisation-automatique">Test de la Synchronisation Automatique</h2> <p>Une fois la synchronisation manuelle fonctionnelle, il est temps de tester le système de <a href="#synchronisation-automatique">synchronisation automatique</a> qui constitue le cœur de votre workflow de synchronisation continu. Ce processus est plus complexe car il repose sur des déclencheurs temporels et des algorithmes de détection des modifications pour identifier les documents à mettre à jour.</p> <h3 id="configurer-declencheurs-test">Configurer les Déclencheurs</h3> <p>Exécutez la fonction <code class="language-plaintext highlighter-rouge">setupAutoSync()</code> pour créer le <a href="#configurer-declencheurs">déclencheur temporel</a>. Vous devriez voir des journaux détaillés confirmant que la configuration de la synchronisation automatique s’est terminée avec succès.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/setup-auto-sync.png" alt="Journaux d'exécution de la configuration de la synchronisation automatique"/></p> <p>Après avoir exécuté la fonction de configuration, il est important de vérifier que le déclencheur a été créé avec succès et configuré avec les bons paramètres. Accédez à la section <strong>Triggers</strong> dans la barre latérale gauche de l’éditeur Apps Script pour voir tous les déclencheurs associés à votre projet. Vous devriez voir un nouveau déclencheur temporel qui appelle la fonction <code class="language-plaintext highlighter-rouge">autoSync</code> toutes les 5 minutes.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/apps-script-trigger.png" alt="Journaux d'exécution de la configuration de la synchronisation automatique"/></p> <h3 id="effectuer-modifications-test">Effectuer des Modifications de Test</h3> <p>Modifiez vos documents de test et attendez le prochain cycle de synchronisation automatique (jusqu’à 5 minutes). L’automatisation devrait détecter la modification et mettre à jour le modèle DocuGenerate correspondant. Dans notre cas, nous avons supprimé la surbrillance verte des balises de fusion pour déclencher la mise à jour du document, ce qui représente un changement de formatage typique que les équipes pourraient effectuer lors de sessions d’édition collaborative.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/google-docs-updated.png" alt="Documents Google Docs mis à jour"/></p> <h3 id="verifier-mises-a-jour">Vérifier les Mises à Jour</h3> <p>Surveillez les journaux d’exécution d’Apps Script pour confirmer que la <a href="#detection-modifications">fonction de synchronisation automatique</a> a détecté vos modifications et les a correctement traitées. Les journaux d’exécution ci-dessous montrent le système identifiant les documents récemment modifiés et mettant à jour avec succès les modèles DocuGenerate correspondants.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/auto-sync-logs.png" alt="Journaux d'exécution de la synchronisation automatique"/></p> <p>Enfin, connectez-vous à votre compte DocuGenerate et vérifiez que les modifications apportées à vos Google Docs ont été correctement synchronisées avec les modèles correspondants. Vérifiez que les changements de formatage, les modifications de texte et toute mise à jour structurelle sont fidèlement reflétés dans le contenu du modèle. Cette étape de vérification termine le cycle de test et confirme que votre solution de synchronisation automatique fonctionne correctement.</p> <p><img src="https://www.docugenerate.com/assets/posts/025-sync-google-docs/docugenerate-templates-updated.png" alt="Modèles mis à jour sur DocuGenerate"/></p> <p>Une fois le test de la synchronisation automatique terminé, votre système de synchronisation est maintenant pleinement opérationnel et continuera à surveiller votre dossier Google Drive pour détecter les modifications toutes les 5 minutes, garantissant que vos modèles DocuGenerate restent à jour sans aucun effort manuel.</p> <h2 id="ameliorations-futures">Améliorations et Personnalisations Futures</h2> <p>Le workflow de synchronisation que nous avons construit fournit une base solide qui peut être étendue avec des fonctionnalités supplémentaires en fonction de vos besoins spécifiques. Ces améliorations transformeraient l’automatisation de synchronisation de base en une solution complète de gestion des modèles.</p> <h3 id="surveillance-avancee">Capacités de Surveillance Avancées</h3> <ul> <li> <p><strong>Prise en Charge de Plusieurs Dossiers</strong> : Modifiez le script pour surveiller simultanément plusieurs dossiers Google Drive, chacun pouvant se synchroniser avec différents comptes DocuGenerate ou selon différentes règles de traitement.</p> </li> <li> <p><strong>Synchronisation Sélective</strong> : Mettez en œuvre un filtrage des documents basé sur des modèles de nommage, des propriétés de documents ou des balises de métadonnées pour vous donner un contrôle précis sur les documents synchronisés.</p> </li> </ul> <h3 id="ameliorations-integration">Améliorations de l’Intégration</h3> <ul> <li> <p><strong>Prise en Charge des Points de Terminaison Régionaux</strong> : Sélectionnez automatiquement les points de terminaison régionaux DocuGenerate optimaux en fonction de votre emplacement géographique ou de la répartition de votre équipe.</p> </li> <li> <p><strong>Prise en Charge de Formats Étendus</strong> : Étendez la solution pour gérer les documents Microsoft Word stockés dans Google Drive, offrant des capacités de synchronisation pour les équipes qui travaillent avec des formats de documents mixtes.</p> </li> </ul> <h3 id="gestion-suppressions">Gestion des Suppressions</h3> <ul> <li> <p><strong>Synchronisation des Suppressions de Documents</strong> : Mettez en œuvre une logique pour gérer les suppressions de documents dans Google Drive en supprimant les modèles correspondants dans DocuGenerate.</p> </li> <li> <p><strong>Nettoyage des Modèles</strong> : Créez des fonctions pour identifier et nettoyer les modèles orphelins dans DocuGenerate qui n’ont plus de Google Docs correspondants.</p> </li> </ul> <h2 id="conclusion">Conclusion</h2> <p>Synchroniser Google Docs avec DocuGenerate élimine les frictions manuelles qui empêchent souvent les équipes de maintenir des modèles à jour tout en exploitant de puissantes capacités de génération de documents. Le système automatisé que nous avons construit comble le fossé entre l’édition collaborative de documents et la génération professionnelle de documents, permettant à votre équipe de travailler naturellement dans Google Docs tout en garantissant que vos modèles DocuGenerate reflètent toujours les dernières modifications.</p> <p>En mettant en œuvre cette solution, votre équipe peut continuer à utiliser Google Docs pour le développement collaboratif de modèles tout en bénéficiant des capacités avancées de génération de documents que fournit DocuGenerate. La synchronisation automatique garantit que les modifications apportées lors des sessions d’édition collaborative sont immédiatement disponibles pour les workflows de génération de documents, créant une combinaison puissante d’outils qui améliore à la fois la productivité et la qualité des documents.</p> <p>La conception modulaire de notre solution de synchronisation la rend facile à personnaliser et à étendre selon vos besoins spécifiques. Que vous ayez besoin de surveiller plusieurs dossiers, de mettre en œuvre des règles de filtrage personnalisées, ou d’intégrer des systèmes supplémentaires, la base que nous avons établie fournit une plateforme robuste pour les futures améliorations.</p> <h2 id="ressources">Ressources</h2> <ul> <li><a href="https://www.docugenerate.com/assets/posts/025-sync-google-docs/apps-script.txt" target="_blank">Code Complet Apps Script</a> - Téléchargez le script de synchronisation complet</li> <li><a href="https://developers.google.com/apps-script" target="_blank" rel="nofollow noopener">Documentation Google Apps Script</a> - Guide officiel et référence de l’API Google Apps Script</li> <li><a href="https://developers.google.com/workspace/drive/api/guides/properties" target="_blank" rel="nofollow noopener">Guide des Propriétés de l’API Google Drive</a> - Travailler avec les propriétés personnalisées des fichiers</li> <li><a href="https://api.docugenerate.com/" target="_blank">Documentation de l’API DocuGenerate</a> - Référence complète de l’API pour l’intégration de DocuGenerate</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[Découvrez comment créer automatiquement de nouveaux modèles lorsque des documents Google Docs sont ajoutés à un dossier, et mettre à jour les modèles lorsque les documents sont modifiés. Idéal pour les équipes qui préfèrent travailler dans Google Docs mais ont besoin de la puissance de DocuGenerate pour la génération de documents.]]></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">Envoyer des Documents Générés en Pièce Jointe par E-mail dans Bubble</title> <link href="https://www.docugenerate.com/fr/blog/envoyer-des-documents-generes-en-piece-jointe-par-e-mail-dans-bubble/" rel="alternate" type="text/html" title="Envoyer des Documents Générés en Pièce Jointe par E-mail dans Bubble"/> <published>2025-08-17T00:00:00+00:00</published> <updated>2025-08-17T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/envoyer-des-documents-generes-en-piece-jointe-par-e-mail-dans-bubble</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/envoyer-des-documents-generes-en-piece-jointe-par-e-mail-dans-bubble/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Créer des systèmes professionnels d’intégration client peut être complexe, surtout lorsque vous devez générer des documents personnalisés et les livrer automatiquement par e-mail. Les approches traditionnelles nécessitent souvent un travail de développement important, des intégrations personnalisées et une expertise technique significative. Cependant, avec des plateformes no-code modernes comme <a href="https://bubble.io/" target="_blank" rel="nofollow noopener">Bubble</a> combinées à des services spécialisés de génération de documents, vous pouvez créer des workflows sophistiqués qui gèrent tout, de la collecte de données à la livraison des documents.</p> <p>Dans ce tutoriel complet, nous allons créer un système d’intégration client qui collecte les informations du client via un formulaire web, génère des accords de confidentialité (NDA) personnalisés à partir de ces données, et envoie automatiquement les documents complétés en pièce jointe par e-mail. Cette approche montre comment exploiter la plateforme de développement visuel de Bubble avec l’API de génération de documents de DocuGenerate pour créer des workflows professionnels sans écrire de code.</p> <p>Le système que nous allons créer met en valeur plusieurs concepts puissants : génération automatique de documents à partir de soumissions de formulaire, intégration entre plateformes no-code et API externes, et livraison professionnelle par e-mail avec pièces jointes. Ce workflow est particulièrement utile pour les entreprises qui doivent traiter des accords clients, des contrats ou d’autres documents personnalisés à grande échelle tout en conservant une apparence professionnelle et une livraison fiable.</p> <h2 id="generateur-de-pages-ia">Exploiter le Générateur de Pages IA de Bubble</h2> <p>Pour accélérer notre processus de développement, nous allons utiliser la fonctionnalité innovante de générateur de pages IA de Bubble, qui peut générer des interfaces d’application complètes à partir de descriptions en langage naturel. Cette fonctionnalité, publiée en bêta publique à la mi-juin 2024 et annoncée officiellement lors de l’événement <a href="https://bubble.io/blog/event-recap-ai-founder-tools/" target="_blank" rel="nofollow noopener">Zero to One With AI + No-Code</a>, représente une avancée significative dans le développement d’applications no-code.</p> <p>Le générateur de pages IA nous permet de décrire nos exigences en langage simple et de recevoir une structure d’application entièrement fonctionnelle, avec formulaires, workflows et types de données. Cette approche réduit considérablement le temps de développement tout en garantissant que l’application générée respecte les bonnes pratiques et les modèles de conception de Bubble.</p> <p>Pour notre système de signature de NDA, nous allons fournir l’invite détaillée suivante au générateur IA : <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="Invite IA pour générer l'application de NDA"/></p> <p>Cette invite fournit à l’IA suffisamment de contexte pour comprendre à la fois les exigences fonctionnelles (champs du formulaire, traitement des données) et le workflow visé (génération de documents et livraison par e-mail). L’IA utilisera ces informations pour créer les structures de données, les éléments d’interface utilisateur et les configurations de workflow initiales appropriées.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/ai-generating.png" alt="L'IA générant l'interface de l'application"/></p> <p>Le processus de génération prend généralement plusieurs minutes, pendant lesquelles l’IA de Bubble analyse les exigences, crée les composants nécessaires et les assemble en une application cohérente. Il est important de garder l’onglet du navigateur ouvert pendant ce processus, car le fermer peut interrompre la génération.</p> <h2 id="structure-de-application">Comprendre la Structure de l’Application Générée</h2> <p>Une fois que l’IA termine le processus de génération, vous disposez d’une application entièrement fonctionnelle avec plusieurs pages, structures de données et workflows initiaux. L’application générée illustre l’approche systématique de Bubble en matière d’architecture d’application, avec une séparation claire entre les différentes zones fonctionnelles et une organisation logique des données. L’application générée par l’IA comprend deux pages principales qui fonctionnent ensemble pour créer une expérience utilisateur complète.</p> <h3 id="page-accueil">Page d’Accueil</h3> <p>Elle constitue le point d’entrée principal où les clients interagissent avec votre système. La page présente un design moderne et épuré avec un formulaire complet qui collecte toutes les informations nécessaires à la génération du NDA. Le formulaire comprend des champs pour le <strong>Nom</strong> complet, l’<strong>Adresse</strong>, l’<strong>Adresse</strong> <strong>E-mail</strong> et le <strong>Pays</strong>, ainsi qu’un bouton <strong>Submit NDA Request</strong> bien visible qui déclenche le workflow de génération de document et de livraison par e-mail.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/app-index-page.png" alt="Formulaire principal sur la page d'accueil"/></p> <p>Le design de la page d’accueil privilégie l’expérience utilisateur avec un étiquetage clair, une validation de formulaire appropriée et un retour visuel. La mise en page est responsive et professionnelle, garantissant que les clients peuvent facilement remplir le formulaire quel que soit leur appareil ou leur niveau de compétence technique.</p> <h3 id="page-confirmation">Page de Confirmation</h3> <p>Après la soumission du formulaire, les utilisateurs sont automatiquement redirigés vers cette page, qui fournit un retour immédiat sur le statut de leur demande. La page de confirmation affiche les informations soumises et montre le statut de traitement actuel, créant de la transparence et renforçant la confiance des utilisateurs dans le système.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/app-confirmation-page.png" alt="Page de confirmation affichant les détails de la soumission"/></p> <p>Cette structure en deux pages suit des modèles établis pour les applications basées sur des formulaires, offrant aux utilisateurs un retour clair et maintenant leur engagement tout au long du processus.</p> <h3 id="architecture-donnees">Architecture du Type de Données</h3> <p>Le générateur IA crée automatiquement le type de données <code class="language-plaintext highlighter-rouge">NdaSubmission</code>, qui constitue la base du stockage et de la gestion des informations client tout au long du workflow. Cette structure de données est conçue pour gérer à la fois la soumission initiale du formulaire et les différents champs de suivi de statut nécessaires à la génération de document et à la livraison par e-mail.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/nda-submission-data-type.png" alt="Structure du type de données NDA Submission"/></p> <p>Le type de données <code class="language-plaintext highlighter-rouge">NdaSubmission</code> comprend les champs suivants :</p> <ul> <li><code class="language-plaintext highlighter-rouge">address</code> (texte) : Stocke l’adresse complète du client</li> <li><code class="language-plaintext highlighter-rouge">confirmation_email_sent</code> (oui/non) : Indique si l’e-mail de confirmation initial a été envoyé</li> <li><code class="language-plaintext highlighter-rouge">country</code> (texte) : Enregistre le pays du client</li> <li><code class="language-plaintext highlighter-rouge">docugenerate_status</code> (texte) : Surveille le statut du processus de génération de document</li> <li><code class="language-plaintext highlighter-rouge">email</code> (texte) : Contient l’adresse e-mail du client pour la livraison du document</li> <li><code class="language-plaintext highlighter-rouge">name</code> (texte) : Stocke le nom complet du client</li> <li><code class="language-plaintext highlighter-rouge">nda_email_sent</code> (oui/non) : Indique si le NDA a été livré avec succès</li> <li><code class="language-plaintext highlighter-rouge">submission_date</code> (date) : Enregistre la date de soumission initiale du formulaire</li> </ul> <p>Cette structure de données complète prend en charge à la fois les exigences immédiates du workflow et les améliorations futures, comme les rapports, les analyses et le suivi de statut avancé.</p> <h3 id="donnees-exemple">Données d’Exemple</h3> <p>L’application générée comprend un jeu de données d’exemple bien pensé qui remplit la table <code class="language-plaintext highlighter-rouge">NdaSubmission</code> avec des entrées réalistes. Ces données d’exemple servent plusieurs objectifs : elles illustrent le format de données attendu, fournissent un contenu immédiat pour tester les workflows, et offrent des exemples de la façon dont le système gère différents scénarios client.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/nda-submission-app-data.png" alt="Données d'exemple dans la table NDA Submission"/></p> <p>Disposer immédiatement de données d’exemple vous permet de tester le workflow complet sans avoir à créer manuellement des entrées de test. Cette approche accélère le développement et garantit que vous pouvez vérifier que tous les composants du système fonctionnent correctement avant le déploiement en production.</p> <h2 id="installation-plugin">Installer et Configurer le Plugin DocuGenerate</h2> <p>Pour activer les capacités de génération de documents dans notre application Bubble, nous devons installer et configurer le <a href="https://bubble.io/plugin/docugenerate-1730225425528x319288222630019100" target="_blank">plugin DocuGenerate</a> depuis la marketplace de Bubble. Ce plugin fournit un accès direct aux fonctionnalités de l’API DocuGenerate via le système de workflow visuel de Bubble, éliminant le besoin d’une intégration API personnalisée.</p> <p>Le processus d’installation du plugin est simple et suit les procédures standards de gestion des plugins de Bubble. Accédez à la section <strong>Plugins</strong> de votre éditeur Bubble, recherchez “DocuGenerate” dans la marketplace, puis cliquez sur <strong>Install</strong> :</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/install-docugenerate-plugin.png" alt="Installation du plugin DocuGenerate"/></p> <p>Après avoir installé le plugin, vous devrez le configurer avec vos identifiants API DocuGenerate. Cette configuration établit la connexion entre votre application Bubble et votre compte DocuGenerate, permettant une communication sécurisée pour les demandes de génération de documents.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/configure-docugenerate-plugin.png" alt="Configuration du plugin DocuGenerate"/></p> <p>La configuration nécessite votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">Clé API</a> DocuGenerate, que vous pouvez trouver dans les paramètres de votre compte DocuGenerate. Cette clé API authentifie vos demandes et garantit que les documents générés sont correctement associés à votre compte et à vos limites d’utilisation.</p> <p>Une fois configuré, le plugin donne accès à toutes les fonctionnalités de DocuGenerate via le système d’actions de Bubble, y compris la génération de documents, la gestion des modèles et le suivi de statut. Le plugin gère automatiquement l’authentification, le formatage des demandes et le traitement des réponses, vous permettant de vous concentrer sur la logique de votre application plutôt que sur la gestion des détails d’intégration de l’API.</p> <h2 id="modele-nda">Créer le Modèle de NDA</h2> <p>Avant de pouvoir générer des NDA personnalisés, nous devons créer un modèle qui définit la structure du document et identifie où les informations spécifiques au client doivent être insérées. Pour ce tutoriel, nous allons utiliser le modèle <a href="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/Non Disclosure Agreement.docx">Accord de Confidentialité</a> de la <a href="https://www.docugenerate.com/fr/modeles/#contrats">Bibliothèque de Modèles</a> de DocuGenerate, qui fournit un document juridique formaté de manière professionnelle avec des balises de fusion appropriées.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/docugenerate-nda-template.png" alt="Aperçu du modèle de NDA DocuGenerate"/></p> <p>Le modèle comprend plusieurs sections clés qui le rendent adapté à notre workflow automatisé :</p> <ul> <li> <p><strong>Informations des Parties</strong> : Le modèle comprend des sections dédiées à la fois pour la partie divulgatrice (votre entreprise) et la partie destinataire (le client), avec des balises de fusion qui seront remplies avec les informations de notre formulaire Bubble.</p> </li> <li> <p><strong>Cadre Juridique</strong> : Tout le langage juridique nécessaire est pré-rédigé et formaté de manière appropriée, garantissant que les documents générés respectent des normes juridiques professionnelles sans nécessiter d’expertise juridique pour les créer.</p> </li> <li> <p><strong>Intégration des Balises de Fusion</strong> : Le placement stratégique des balises de fusion dans tout le document permet une insertion de contenu dynamique tout en maintenant un formatage et une structure juridique appropriés.</p> </li> </ul> <p>Le modèle utilise la <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">syntaxe des balises de fusion</a> de DocuGenerate pour identifier où le contenu dynamique doit être inséré. Ces balises correspondent aux données que nous allons collecter dans notre formulaire Bubble et envoyer via l’API DocuGenerate pendant le processus de génération.</p> <h2 id="workflow-generation-documents">Créer le Workflow de Génération de Documents</h2> <p>L’application générée par l’IA fournit un workflow de base que nous devons améliorer avec des capacités de génération de documents et de livraison par e-mail. Le workflow initial comprend le traitement de base du formulaire et la navigation entre pages, mais nous allons l’étendre pour inclure le processus complet d’automatisation des documents.</p> <h3 id="workflow-initial">Analyse du Workflow Initial</h3> <p>Le workflow existant sur la page d’accueil comprend trois étapes principales qui gèrent le processus de base de soumission du formulaire :</p> <ol> <li><strong>Déclencheur d’Événement</strong> : S’active lorsque le bouton <strong>Submit NDA Request</strong> est cliqué</li> <li><strong>Création de Données</strong> : Crée un nouvel enregistrement <code class="language-plaintext highlighter-rouge">NdaSubmission</code> avec les données du formulaire</li> <li><strong>Navigation</strong> : Redirige l’utilisateur vers la page de confirmation</li> </ol> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/submit-nda-initial-workflow-v2.png" alt="Configuration du workflow initial"/></p> <p>Ce workflow de base capture les données du formulaire et fournit un retour à l’utilisateur, mais il n’inclut pas encore la fonctionnalité de génération de document ou de livraison par e-mail dont nous avons besoin. Nous allons construire sur cette base en ajoutant des étapes de workflow supplémentaires qui gèrent ces fonctionnalités avancées.</p> <h3 id="ajout-generation-documents">Ajouter la Génération de Documents</h3> <p>L’étape suivante consiste à ajouter une action de génération de document à notre workflow. Cette action se déclenchera immédiatement après l’enregistrement des données du formulaire, garantissant que la génération de document commence dès que les informations du client sont disponibles dans le système.</p> <p>Pour ajouter l’étape de génération de document, cliquez sur le bouton <strong>+</strong> après les étapes de workflow existantes, accédez à la section <strong>Plugins</strong>, et sélectionnez <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="Ajout de l'action de génération de document"/></p> <p>L’<a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#generate-document">action de génération de document</a> nécessite plusieurs paramètres de configuration qui relient les données de notre formulaire au modèle DocuGenerate :</p> <ul> <li> <p><code class="language-plaintext highlighter-rouge">template_id</code> : Identifie le modèle de NDA spécifique que nous avons créé dans DocuGenerate. Chaque modèle possède un <a href="https://www.docugenerate.com/fr/aide/articles/comment-obtenir-l-id-du-modele/">ID unique</a> qui indique au système quelle structure de document utiliser pour la génération.</p> </li> <li> <p><code class="language-plaintext highlighter-rouge">name</code> : Nous allons définir ce champ pour inclure dynamiquement le nom du client. Cela crée des noms de fichiers descriptifs qui facilitent l’identification des documents générés.</p> </li> <li> <p><code class="language-plaintext highlighter-rouge">output_format</code> : Saisissez <code class="language-plaintext highlighter-rouge">.pdf</code> pour générer des documents PDF, qui offrent un formatage cohérent sur différents appareils et plateformes tout en conservant une apparence professionnelle.</p> </li> <li> <p><code class="language-plaintext highlighter-rouge">data</code> : Il s’agit de la partie la plus complexe de la configuration, car elle nécessite de mapper les données de notre formulaire aux balises de fusion du modèle. Les données doivent être formatées comme un tableau JSON contenant les valeurs dynamiques de la soumission de notre formulaire.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/config-generate-document-action-v2.png" alt="Configuration de l'action de génération de document"/></p> <p>Cette structure JSON associe chaque balise de fusion du modèle soit à des informations statiques (comme les coordonnées de votre entreprise), soit à des données dynamiques provenant de la soumission du formulaire. Les valeurs dynamiques utilisent la syntaxe de Bubble pour référencer les données créées lors de la première étape du workflow, garantissant que chaque document généré contient les bonnes informations client :</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="envoi-email">Mettre en Place l’Envoi par E-mail</h3> <p>La dernière étape du workflow gère la livraison par e-mail du document généré. Cela implique d’utiliser la fonctionnalité <a href="https://manual.bubble.io/core-resources/actions/email" target="_blank" rel="nofollow noopener">d’e-mail native de Bubble</a> pour envoyer le PDF en pièce jointe à l’adresse e-mail du client. Le système de livraison par e-mail offre une communication professionnelle tout en garantissant que les clients reçoivent leurs documents rapidement et de manière fiable.</p> <p>Pour ajouter l’étape d’e-mail, cliquez sur le signe <strong>+</strong> après l’étape de génération de document et sélectionnez <strong>Send email</strong> dans le sous-menu <strong>Email</strong> :</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/email-add-action-v2.png" alt="Ajout de l'action de livraison par e-mail"/></p> <p>La configuration de l’e-mail nécessite plusieurs paramètres qui créent une expérience de communication professionnelle :</p> <ul> <li> <p><strong>Destinataire</strong> : Définissez sur <code class="language-plaintext highlighter-rouge">Result of step 1 (Create a new NdaSubmission)'s email</code> pour envoyer automatiquement à l’adresse e-mail soumise par le client.</p> </li> <li> <p><strong>Nom de l’Expéditeur</strong> : Utilisez un nom professionnel comme “NDA Signer” ou le nom de votre entreprise pour établir la crédibilité et la reconnaissance de marque.</p> </li> <li> <p><strong>Ligne de Sujet</strong> : Créez un sujet clair et professionnel comme “Your NDA is ready” qui communique immédiatement l’objet de l’e-mail.</p> </li> <li> <p><strong>Corps de l’E-mail</strong> : Rédigez un message personnalisé qui reste professionnel.</p> </li> <li> <p><strong>Pièce Jointe</strong> : Il s’agit du point de configuration le plus critique. Définissez-le sur <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="Configuration de l'action de livraison par e-mail"/></p> <p>Le modificateur <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> est essentiel pour une gestion correcte des pièces jointes par e-mail. Sans ce modificateur, Bubble ne peut pas accéder au fichier PDF généré pour la pièce jointe. Cela indique à Bubble de télécharger le document généré depuis DocuGenerate et de le stocker temporairement dans le système de fichiers de Bubble, le rendant disponible pour la pièce jointe de l’e-mail.</p> <h2 id="test-application">Tester l’Application Complète</h2> <p>Une fois tous les composants du workflow configurés, nous pouvons tester l’application complète pour vérifier que chaque étape fonctionne correctement et que l’intégration entre Bubble, DocuGenerate et la livraison par e-mail fonctionne comme prévu. Cette phase de test est cruciale pour identifier tout problème de configuration avant de déployer l’application en production.</p> <p>Bubble fournit un mode de prévisualisation qui vous permet de tester votre application dans un environnement réel sans affecter les utilisateurs de production. Vous pouvez accéder à la version de test de notre application de NDA <a href="https://support-55928.bubbleapps.io/version-test?debug_mode=true" target="_blank">ici</a>. L’environnement de test offre des capacités de mode débogage, qui fournissent des informations détaillées sur l’exécution du workflow, le traitement des données et les erreurs éventuelles pendant les tests.</p> <h3 id="generation-nda">Génération du NDA et Envoi par E-mail</h3> <p>Le processus de test implique de réaliser tout le parcours utilisateur, de la soumission du formulaire à la réception du document. Lors des tests, utilisez des informations réalistes qui reflètent les données client attendues pour garantir que le système gère correctement les différents scénarios. Après avoir rempli le formulaire avec les informations du client, le système traite automatiquement la demande à travers toutes les étapes du workflow :</p> <p><strong>1. Traitement du Formulaire</strong> : Les informations du client sont validées et stockées dans la base de données. <strong>2. Génération du Document</strong> : Le NDA est créé avec les informations personnalisées. <strong>3. Envoi par E-mail</strong> : Le document complété est envoyé en pièce jointe. <strong>4. Retour à l’Utilisateur</strong> : La page de confirmation affiche le statut actuel.</p> <p>L’e-mail généré illustre l’apparence professionnelle et le fonctionnement du système complet :</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/email-received.png" alt="E-mail reçu avec le NDA en pièce jointe"/></p> <p>L’e-mail comprend le contenu du message personnalisé, un formatage professionnel, et le NDA généré en pièce jointe PDF. Cela démontre que l’ensemble du workflow fonctionne correctement et offre une expérience professionnelle aux clients.</p> <h3 id="verification-stockage">Vérification du Stockage des Fichiers</h3> <p>Un aspect important des tests consiste à vérifier que les documents générés sont correctement stockés dans le système de gestion de fichiers de Bubble. Cette capacité de stockage offre un accès de secours aux documents générés et prend en charge des améliorations futures comme l’historique des documents ou les fonctionnalités de renvoi.</p> <p><img src="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/file-manager.png" alt="Documents générés dans le gestionnaire de fichiers de Bubble"/></p> <p>Le <a href="https://manual.bubble.io/help-guides/data/files" target="_blank" rel="nofollow noopener">gestionnaire de fichiers</a> montre que chaque NDA généré est correctement stocké avec des conventions de nommage appropriées et accessible pour référence future. Cette capacité de stockage garantit que votre système conserve un historique de tous les documents générés, prenant en charge les exigences de conformité et les besoins du service client.</p> <h2 id="conclusion">Conclusion</h2> <p>Créer un système automatisé de génération de documents et de livraison par e-mail avec Bubble et DocuGenerate démontre la puissance des plateformes de développement no-code modernes lorsqu’elles sont combinées à des API spécialisées. Le système que nous avons créé gère des processus métier complexes incluant la collecte de données, la personnalisation de documents et la communication professionnelle, tout cela sans nécessiter de compétences traditionnelles en développement logiciel.</p> <p>Cette approche offre des avantages significatifs pour les entreprises qui doivent traiter des documents clients à grande échelle. Le workflow automatisé élimine la création manuelle de documents, réduit les erreurs, garantit un formatage cohérent et offre des expériences client professionnelles. L’intégration entre la plateforme de développement visuel de Bubble et les capacités de génération de documents de DocuGenerate crée une solution à la fois puissante et accessible.</p> <h3 id="ressources">Ressources</h3> <ul> <li><a href="https://support-55928.bubbleapps.io/version-test?debug_mode=true" target="_blank">Application de Test</a> pour une expérience pratique du workflow complet.</li> <li><a href="https://bubble.io/blog/ai-page-designer-prompts/" target="_blank" rel="nofollow noopener">Générateur de Pages IA de Bubble</a> documentation et bonnes pratiques.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/">Plugin Bubble de DocuGenerate</a> guide d’installation et de configuration.</li> <li><a href="https://www.docugenerate.com/assets/posts/024-email-attachments-bubble/Non Disclosure Agreement.docx">Accord de Confidentialité</a> modèle utilisé dans ce tutoriel.</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[Découvrez comment créer un workflow complet dans Bubble qui génère des NDA personnalisés et les envoie en pièce jointe par e-mail aux clients. Ce tutoriel pas à pas vous montre comment créer un système professionnel d'intégration client avec le générateur de pages IA de Bubble.]]></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">Générer des Formulaires d’Expédition PDF avec Retool pour la Gestion des Stocks</title> <link href="https://www.docugenerate.com/fr/blog/generer-des-formulaires-d-expedition-pdf-avec-retool-pour-la-gestion-des-stocks/" rel="alternate" type="text/html" title="Générer des Formulaires d’Expédition PDF avec Retool pour la Gestion des Stocks"/> <published>2025-07-29T00:00:00+00:00</published> <updated>2025-07-29T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/generer-des-formulaires-d-expedition-pdf-avec-retool-pour-la-gestion-des-stocks</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/generer-des-formulaires-d-expedition-pdf-avec-retool-pour-la-gestion-des-stocks/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les applications de gestion des stocks créées avec <a href="https://retool.com/" target="_blank" rel="nofollow noopener">Retool</a> excellent dans l’organisation des données et la fourniture d’interfaces intuitives pour suivre les produits, commandes et expéditions. Cependant, de nombreuses entreprises ont besoin d’une documentation professionnelle pour leurs opérations d’expédition qui va au-delà de simples affichages de données. Créer des formulaires d’expédition PDF incluant des informations détaillées sur les produits, des adresses et une image de marque personnalisée peut considérablement améliorer les opérations logistiques et offrir aux clients une documentation professionnelle.</p> <p>Dans ce tutoriel, nous allons améliorer le modèle <a href="https://retool.com/templates/inventory-management" target="_blank" rel="nofollow noopener">Inventory Management App</a> existant de Retool en intégrant les capacités de génération de documents de DocuGenerate. Plutôt que de créer un système de gestion des stocks depuis zéro, nous allons nous concentrer sur l’ajout d’une génération professionnelle de formulaires d’expédition PDF à une application déjà fonctionnelle. Cette approche illustre comment les applications Retool existantes peuvent être enrichies avec des fonctionnalités de génération de documents sans perturber les flux de travail établis.</p> <p>L’intégration que nous allons construire crée une combinaison puissante où les utilisateurs peuvent gérer leurs données de stock via l’interface intuitive de Retool tout en générant des documents d’expédition professionnels à la demande. Cette solution est particulièrement précieuse pour les entreprises qui doivent fournir aux transporteurs, clients et équipes internes une documentation d’expédition standardisée incluant des informations détaillées sur les produits et l’image de marque de l’entreprise.</p> <h2 id="comprendre-l-application-de-base">Comprendre l’Application de Base</h2> <p>Avant d’ajouter des capacités de génération de documents, examinons la base sur laquelle nous travaillons. Le modèle Inventory Management App de Retool propose une solution complète pour suivre les niveaux de stock, gérer les expéditions et surveiller les données produits sur plusieurs emplacements.</p> <p>L’application inclut plusieurs composants clés qui la rendent idéale pour notre amélioration des formulaires d’expédition :</p> <ul> <li> <p><strong>Shipment Tracking</strong> : Un système complet pour gérer les expéditions de la création à la livraison, incluant les mises à jour de statut et des informations détaillées sur les expéditions.</p> </li> <li> <p><strong>Product Management</strong> : Des données produits complètes incluant descriptions, quantités et informations de prix, essentielles pour la documentation d’expédition.</p> </li> <li> <p><strong>Location Management</strong> : Prise en charge de plusieurs entrepôts et lieux d’expédition, fournissant les informations d’adresse nécessaires aux formulaires d’expédition.</p> </li> <li> <p><strong>Data Relationships</strong> : Des relations bien structurées entre expéditions, produits et emplacements qui facilitent une génération complète de documents.</p> </li> </ul> <p>La structure de données existante du modèle fournit toutes les informations généralement nécessaires pour des formulaires d’expédition professionnels, y compris les coordonnées de l’expéditeur et du destinataire, les descriptions de produits, les quantités et les informations de statut d’expédition.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/app-database.png" alt="Base de données de l'application Inventory Management"/></p> <h2 id="preparer-l-application">Préparer l’Application</h2> <p>Pour nous concentrer sur les aspects de génération de documents de ce tutoriel, nous allons apporter plusieurs modifications au modèle de base. Ces changements simplifient l’interface tout en préservant les fonctionnalités essentielles nécessaires à la génération des formulaires d’expédition.</p> <h3 id="cloner-le-modele">Cloner le Modèle</h3> <p>Commencez par cloner le modèle Inventory Management App depuis la bibliothèque de modèles de Retool. Cela fournit la base complète avec des exemples de données, des flux de travail établis et des modèles d’interface utilisateur éprouvés.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/clone-app-template.png" alt="Clonage du modèle Inventory Management de Retool"/></p> <p>Le modèle cloné inclut tous les composants, requêtes et exemples de données nécessaires pour démontrer le processus de génération des formulaires d’expédition. La structure existante fournit des scénarios d’expédition réalistes qui illustrent diverses possibilités de génération de documents.</p> <h3 id="simplifier-l-interface">Simplifier l’Interface</h3> <p>Pour ce tutoriel, nous allons supprimer une partie de la complexité pour nous concentrer sur le flux de travail de génération de documents. La simplification principale consiste à mettre à jour la requête des expéditions pour supprimer le filtrage par date, ce qui facilite la visualisation de toutes les expéditions disponibles.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/get-shipments-filter.png" alt="Requête d'expéditions simplifiée avec suppression du filtre"/></p> <p>Nous supprimons les composants de filtrage par plage de dates et simplifions la requête <code class="language-plaintext highlighter-rouge">getShipments</code>. Ce changement n’affecte pas la fonctionnalité principale mais facilite la navigation parmi les expéditions pendant notre tutoriel. Dans un environnement de production, vous conserveriez généralement ces capacités de filtrage pour gérer de gros volumes de données d’expédition. La vue simplifiée offre un accès immédiat à toutes les expéditions, facilitant le test de la génération de documents avec différents types et configurations d’expéditions.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/simplified-shipments-view.png" alt="Vue des expéditions simplifiée sans filtres de date"/></p> <h3 id="ajouter-le-bouton-de-generation-pdf">Ajouter le Bouton de Génération PDF</h3> <p>Ensuite, nous allons ajouter un bouton <strong>View Shipping Form</strong> à la page de détail de l’expédition. Ce bouton déclenchera le processus de génération de document et redirigera les utilisateurs vers une page de visualisation PDF.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/view-shipping-form-pdf-button.png" alt="Bouton PDF View Shipping Form sur la page de détail de l'expédition"/></p> <p>L’emplacement du bouton s’intègre naturellement à l’interface existante de détail d’expédition, offrant aux utilisateurs un accès immédiat à la génération de formulaires d’expédition sans perturber les flux de travail établis. Le design du bouton correspond aux modèles de style existants de l’application et maintient la cohérence visuelle.</p> <h3 id="ajouter-la-page-du-formulaire-d-expedition">Ajouter la Page du Formulaire d’Expédition</h3> <p>La dernière étape consiste à créer une nouvelle page <strong>ShippingFormPDF</strong> pour afficher les formulaires d’expédition générés. Cette page inclut un composant de visualisation PDF configuré pour afficher les documents générés par DocuGenerate et un bouton flottant <strong>Print</strong> permettant aux utilisateurs d’imprimer le formulaire d’expédition.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/shipping-form-pdf.png" alt="Exemple du formulaire d'expédition PDF généré"/></p> <h2 id="creer-le-modele-de-formulaire-d-expedition">Créer le Modèle de Formulaire d’Expédition</h2> <p>Pour générer des formulaires d’expédition dynamiques, nous devrons d’abord <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créer un modèle</a>, conçu pour inclure tous les éléments essentiels généralement présents dans la documentation d’expédition commerciale. Le modèle de formulaire d’expédition inclut des sections avec des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> pour les informations de l’expéditeur, les détails du destinataire, le contenu de l’expédition et des notes supplémentaires.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/shipping-form-template.png" alt="Image du modèle de formulaire d'expédition"/></p> <p>Le modèle <a href="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/Shipping Form.docx">Shipping Form</a> utilisé dans ce tutoriel inclut plusieurs fonctionnalités importantes :</p> <ul> <li> <p><strong>Conditional Content</strong> : La section des notes n’apparaît que lorsque des notes d’expédition sont présentes, en utilisant la <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-conditions-a-un-modele/">syntaxe conditionnelle</a></p> </li> <li> <p><strong>Dynamic Table</strong> : La section des articles de l’expédition s’agrandit automatiquement pour s’adapter à des nombres variables de produits en utilisant la <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-tableaux-a-un-modele/">syntaxe des tableaux</a></p> </li> <li> <p><strong>Consistent Formatting</strong> : Tous les éléments conservent une mise en forme professionnelle, quelle que soit la longueur ou la complexité du contenu</p> </li> </ul> <h2 id="configurer-la-generation-de-document">Configurer la Génération de Document</h2> <p>Avec notre interface prête, nous pouvons nous concentrer sur l’intégration des capacités de génération PDF de DocuGenerate dans le flux de travail d’expédition existant pour créer automatiquement les formulaires d’expédition.</p> <h3 id="ressource-docugenerate">Ressource DocuGenerate</h3> <p>Nous devons configurer la connexion entre Retool et l’<a href="https://api.docugenerate.com/" target="_blank">API DocuGenerate</a>. Cela implique de créer une ressource API REST qui gère l’authentification et la communication avec le service de génération de documents de DocuGenerate.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/configure-rest-api.png" alt="Configuration de la connexion API REST pour DocuGenerate"/></p> <p>La configuration de l’API REST nécessite :</p> <ul> <li><strong>Resource Name</strong> : Utilisez “DocuGenerate” pour une identification facile dans les requêtes</li> <li><strong>Base URL</strong> : Définissez sur <code class="language-plaintext highlighter-rouge">https://api.docugenerate.com</code> (ou utilisez un de nos <a href="https://www.docugenerate.com/fr/aide/articles/puis-je-utiliser-des-points-de-terminaison-api-regionaux/">points de terminaison régionaux</a> pour de meilleures performances)</li> <li><strong>Authentication</strong> : Ajoutez votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">Clé API</a> DocuGenerate dans l’en-tête <code class="language-plaintext highlighter-rouge">Authorization</code></li> </ul> <p>Cette configuration établit la base de toutes les requêtes de génération de documents, gérant l’authentification automatiquement et fournissant une connexion réutilisable pour plusieurs types de documents.</p> <h3 id="requete-de-generation-de-document">Requête de Génération de Document</h3> <p>Avec notre modèle créé, nous devons configurer la requête Retool qui envoie les données d’expédition à DocuGenerate pour traitement. Cette requête gère la transformation des données et la communication avec l’API.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/generate-document-query.png" alt="Configuration de la requête de génération de document dans Retool"/></p> <p>La requête <code class="language-plaintext highlighter-rouge">generateDocument</code> utilise la <a href="#ressource-docugenerate">ressource DocuGenerate</a> et sa configuration inclut :</p> <ul> <li><strong>URL Path</strong> : Requête POST vers le point de terminaison <code class="language-plaintext highlighter-rouge">/v1/document/</code> pour créer de nouveaux documents</li> <li><strong>Request Body</strong> : JSON contenant les champs suivants : <ul> <li><code class="language-plaintext highlighter-rouge">template_id</code> : ID du modèle <a href="#creer-le-modele-de-formulaire-d-expedition">Shipping Form</a> créé dans DocuGenerate</li> <li><code class="language-plaintext highlighter-rouge">output_format</code> : défini sur <code class="language-plaintext highlighter-rouge">.pdf</code> pour générer des documents PDF</li> <li><code class="language-plaintext highlighter-rouge">name</code> : spécifie le nom dynamique du document pour correspondre au nom affiché dans l’application (<code class="language-plaintext highlighter-rouge">Shipment #{{ Shipments_HistoryCollection.selectedItem.id }}</code>)</li> <li><code class="language-plaintext highlighter-rouge">data</code> : les données du formulaire d’expédition basées sur <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>La requête transforme les données d’expédition de Retool dans le format attendu par le moteur de traitement de modèles de DocuGenerate. Cela inclut l’extraction des informations pertinentes de l’enregistrement d’expédition sélectionné et leur mise en forme appropriée pour les balises de fusion définies dans notre modèle.</p> <h3 id="transformation-des-donnees">Transformation des Données</h3> <p>La requête <code class="language-plaintext highlighter-rouge">getShipmentItems</code> fournit les articles de l’expédition dans un format tableau, mais celui-ci est incompatible avec le format liste attendu pour la valeur <code class="language-plaintext highlighter-rouge">shipment_items</code> utilisée dans la requête <code class="language-plaintext highlighter-rouge">generateDocument</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/get-shipment-items-table.png" alt="Tableau des articles d'expédition affichant les données produits"/></p> <p>Nous devons convertir ces données tabulaires en une structure de tableau pouvant alimenter la liste dynamique de produits dans notre modèle de formulaire d’expédition. Saisir le code JavaScript suivant dans l’étape <strong>Transform results</strong> convertira le format tableau en un tableau d’objets avec les attributs <code class="language-plaintext highlighter-rouge">title</code> et <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>Cette transformation garantit que les informations produits issues de la structure de base de données de Retool correspondent au format de tableau attendu par le moteur de traitement de modèles de DocuGenerate. Le tableau résultant peut accueillir n’importe quel nombre de produits tout en maintenant une mise en forme cohérente dans le document généré.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/get-shipment-items-array.png" alt="Tableau d'articles d'expédition transformé pour le traitement du modèle"/></p> <h2 id="mettre-en-oeuvre-le-flux-de-travail-complet">Mettre en Œuvre le Flux de Travail Complet</h2> <p>L’implémentation finale relie tous les composants en une expérience utilisateur fluide, de la sélection de l’expédition à la génération et l’affichage du PDF. Cette intégration garantit que la génération de documents s’intègre naturellement au flux de travail de gestion des stocks existant plutôt que d’apparaître comme un processus séparé.</p> <h3 id="configuration-des-gestionnaires-d-evenements">Configuration des Gestionnaires d’Événements</h3> <p>Le bouton <strong>View Shipping Form</strong> nécessite deux gestionnaires d’événements pour gérer le flux de travail complet. Le premier gestionnaire d’événements déclenche la requête <code class="language-plaintext highlighter-rouge">generateDocument</code>, qui envoie les données d’expédition à DocuGenerate et reçoit en retour l’URL du PDF généré.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/click-handler-generate-document.png" alt="Configuration du gestionnaire de clic pour la génération de document"/></p> <p>Le second gestionnaire d’événements gère la navigation vers la page <code class="language-plaintext highlighter-rouge">ShippingFormPDF</code> après la réussite de la génération du document. Cela crée une expérience utilisateur fluide où cliquer sur le bouton génère immédiatement le document et l’affiche à l’utilisateur.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/click-handler-navigate-to-page.png" alt="Configuration du gestionnaire de clic pour la navigation de page"/></p> <h3 id="implementation-du-visualiseur-pdf">Implémentation du Visualiseur PDF</h3> <p>La dernière étape consiste à afficher le formulaire d’expédition généré dans la <a href="#ajouter-la-page-du-formulaire-d-expedition">page dédiée</a> ajoutée à l’application au début de ce tutoriel.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/shipping-form-file-url.png" alt="Formulaire d'expédition PDF généré affiché dans le visualiseur"/></p> <p>Pour charger le document généré dans le composant <code class="language-plaintext highlighter-rouge">ShippingFormPDFViewer</code>, nous devons spécifier la valeur suivante dans le champ <code class="language-plaintext highlighter-rouge">File URL</code> :</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{{ generateDocument.data?.document_uri }}
</code></pre></div></div> <p>Cette configuration affiche automatiquement le PDF renvoyé par l’API de DocuGenerate via la <a href="#requete-de-generation-de-document">requête de génération de document</a>, offrant aux utilisateurs un accès immédiat à leurs formulaires d’expédition générés.</p> <h2 id="tester-la-solution-complete">Tester la Solution Complète</h2> <p>Avec tous les composants configurés, le flux de travail complet offre une expérience de génération de documents professionnelle intégrée directement à l’interface de gestion des stocks. Les utilisateurs peuvent passer de la gestion des expéditions à la génération de PDF professionnels sans quitter l’application.</p> <p><img src="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/demo-video-retool.gif" alt="Vidéo de démonstration montrant le flux de travail complet du formulaire d'expédition Retool"/></p> <p>La solution finalisée, à laquelle vous pouvez accéder <a href="https://docugenerate.retool.com/mobile/apps/Inventory%20Management" target="_blank">ici</a>, démontre plusieurs avantages clés :</p> <ul> <li><strong>Workflow Integration</strong> : La génération de documents s’intègre naturellement aux processus de gestion des expéditions existants</li> <li><strong>Professional Output</strong> : Les formulaires générés conservent une mise en forme et une image de marque cohérentes sur toutes les expéditions</li> <li><strong>User Experience</strong> : De simples clics sur un bouton déclenchent une génération de documents complexe sans exposer la complexité technique</li> <li><strong>Data Consistency</strong> : Toutes les informations d’expédition se remplissent automatiquement dans les formulaires générés, éliminant les erreurs de saisie manuelle</li> </ul> <h2 id="conclusion">Conclusion</h2> <p>Intégrer les capacités de génération de documents de DocuGenerate dans l’application Inventory Management de Retool démontre comment les applications no-code existantes peuvent être enrichies avec une création de documents professionnelle sans perturber les flux de travail établis. Cette approche apporte une valeur significative aux entreprises qui doivent générer une documentation d’expédition cohérente et professionnelle tout en maintenant l’efficacité de leurs processus de gestion des stocks existants.</p> <p>La combinaison des capacités de création d’interfaces intuitives de Retool avec le traitement de modèles robuste de DocuGenerate crée une solution qui concilie efficacité opérationnelle et exigences de documentation professionnelle. Les utilisateurs peuvent continuer à gérer leurs stocks et expéditions via des interfaces familières tout en accédant à des capacités de génération de documents de niveau entreprise grâce à de simples clics. La flexibilité des deux plateformes signifie que la solution peut évoluer avec les besoins changeants de l’entreprise, prenant en charge aussi bien de simples étiquettes d’expédition que des manifestes d’expédition complexes sur plusieurs pages.</p> <p>L’approche pas à pas de ce tutoriel démontre que des fonctionnalités sophistiquées de génération de documents peuvent être ajoutées à des applications existantes sans nécessiter de ressources de développement importantes ni perturber les flux de travail opérationnels actuels. Cela rend l’automatisation documentaire professionnelle accessible aux entreprises de toutes tailles, des petites structures gérant des dizaines d’expéditions aux grandes entreprises traitant des milliers de documents d’expédition par jour.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://retool.com/templates/inventory-management" target="_blank" rel="nofollow noopener">modèle Retool Inventory Management</a> pour la structure de l’application de base.</li> <li>La <a href="https://api.docugenerate.com/" target="_blank">documentation de l’API DocuGenerate</a> avec des conseils d’intégration complets.</li> <li>Le modèle <a href="https://www.docugenerate.com/assets/posts/023-retool-shipping-forms/Shipping Form.docx">Shipping Form</a> utilisé dans ce tutoriel.</li> <li>L’<a href="https://docugenerate.retool.com/mobile/apps/Inventory%20Management" target="_blank">application de démonstration en direct</a> montrant l’intégration complète en action.</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[Améliorez votre application de gestion des stocks Retool avec des formulaires d'expédition PDF professionnels grâce à DocuGenerate. Ce tutoriel pas à pas vous montre comment intégrer la génération de documents dans des flux de travail existants, en créant des documents d'expédition pour vos opérations logistiques.]]></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 : La Comparaison Ultime</title> <link href="https://www.docugenerate.com/fr/blog/google-docs-vs-docugenerate-la-comparaison-ultime/" rel="alternate" type="text/html" title="Google Docs vs DocuGenerate : La Comparaison Ultime"/> <published>2025-06-18T00:00:00+00:00</published> <updated>2025-06-18T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/google-docs-vs-docugenerate-la-comparaison-ultime</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/google-docs-vs-docugenerate-la-comparaison-ultime/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>La génération de documents est un processus essentiel pour les entreprises de tous secteurs. Que vous créiez des factures, des contrats, des certificats ou des rapports, la capacité de transformer efficacement des données en documents professionnels peut vous faire gagner un temps précieux et réduire les erreurs humaines. Deux approches populaires pour la génération de documents consistent à utiliser Google Docs avec son API, ou des plateformes spécialisées de génération de documents comme DocuGenerate.</p> <p>Bien que les deux solutions puissent créer des documents à partir de modèles et de données, elles diffèrent considérablement par leur approche, leur complexité et leurs capacités. <a href="https://developers.google.com/workspace/docs/api/how-tos/overview" target="_blank" rel="nofollow noopener">Google Docs</a> offre une interface familière et de puissantes fonctionnalités collaboratives, mais nécessite des connaissances en programmation pour automatiser la génération de documents au-delà du simple remplacement de texte. <a href="https://www.docugenerate.com/">DocuGenerate</a>, quant à lui, est spécialement conçu pour l’automatisation de documents et propose une génération déclarative basée sur des modèles, sans avoir besoin de code complexe.</p> <p>Dans cette comparaison approfondie, nous explorerons les forces et les limites de chaque approche, pour vous aider à déterminer quelle solution convient le mieux à vos besoins de génération de documents. Nous examinerons tout, de la création de modèles et de la gestion des données aux fonctionnalités avancées comme les listes dynamiques, les tableaux et l’insertion d’images.</p> <h2 id="utiliser-google-docs">Utiliser Google Docs</h2> <p>Google Docs propose des capacités de <a href="https://developers.google.com/workspace/docs/api/how-tos/merge" target="_blank" rel="nofollow noopener">génération de documents</a> via son API, qui permet aux développeurs de créer et modifier des documents par programmation. Le processus implique généralement plusieurs étapes :</p> <p><strong>1. Création du Modèle</strong> : Vous commencez par créer un document modèle dans Google Docs avec du texte de substitution qui sera remplacé par des données réelles.</p> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/google-docs-template.jpg" alt="Modèle Google Docs avec des substitutions"/></p> <p><strong>2. Duplication du Document</strong> : Lors de la génération d’un nouveau document, vous devez d’abord créer une copie du modèle en utilisant la méthode <a href="https://developers.google.com/workspace/drive/api/reference/rest/v3/files/copy" target="_blank" rel="nofollow noopener">files.copy</a> de l’API Google Drive.</p> <p><strong>3. Remplacement de Texte</strong> : Après avoir copié le modèle, vous utilisez la méthode <a href="https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/batchUpdate" target="_blank" rel="nofollow noopener">batchUpdate</a> de l’API Google Docs avec <a href="https://developers.google.com/workspace/docs/api/reference/rest/v1/documents/request#replacealltextrequest" target="_blank" rel="nofollow noopener">ReplaceAllTextRequest</a> pour remplacer le texte de substitution par des données réelles.</p> <p><strong>4. Récupération du Document</strong> : Enfin, vous récupérez le document terminé pour la distribution ou le stockage.</p> <p>Voici à quoi ressemble un flux de travail typique de l’API Google Docs :</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="limitations-de-google-docs">Limitations de Google Docs</h3> <p>Bien que Google Docs soit incroyablement puissant pour la collaboration et l’édition de documents, il présente plusieurs limitations en matière de génération automatisée de documents :</p> <ul> <li> <p><strong>Remplacement de Texte Simple Uniquement</strong> : L’API Google Docs prend principalement en charge des opérations de remplacement de texte basiques. Vous pouvez rechercher et remplacer du texte de substitution par des valeurs réelles, mais la création de structures de contenu dynamiques nécessite de la programmation.</p> </li> <li> <p><strong>Logique de Modèle Limitée</strong> : Les modèles Google Docs ne peuvent pas contenir de logique conditionnelle, de boucles ou de structures dynamiques au sein du modèle lui-même. Toute la logique doit être implémentée dans le code de votre application.</p> </li> <li> <p><strong>Complexité de Gestion des Images</strong> : Bien que vous puissiez insérer des images via l’API, celles-ci doivent être accessibles publiquement via une URL, et vous devez gérer leur positionnement et leur redimensionnement par le code plutôt que par le balisage du modèle.</p> </li> <li> <p><strong>Processus Multi-Étapes</strong> : Chaque génération de document nécessite plusieurs appels API - d’abord pour copier le modèle, puis pour effectuer les remplacements, et potentiellement des appels supplémentaires pour des modifications de formatage ou de structure complexes.</p> </li> <li> <p><strong>Expertise Technique Requise</strong> : L’implémentation de la génération de documents basée sur Google Docs nécessite des connaissances importantes en programmation et une bonne compréhension à la fois de l’API Google Docs et de l’API Google Drive.</p> </li> </ul> <h2 id="utiliser-docugenerate">Utiliser DocuGenerate</h2> <p>DocuGenerate adopte une approche fondamentalement différente de la génération de documents. Plutôt que d’exiger une programmation impérative pour modifier les documents, il utilise un système de modèles déclaratif où toute la logique et la structure sont définies directement dans le modèle lui-même.</p> <ul> <li> <p><strong>Conception Centrée sur le Modèle</strong> : Avec DocuGenerate, vous créez vos modèles à l’aide de documents Word familiers et intégrez des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> directement dans le modèle. Ces balises définissent non seulement de simples remplacements de texte, mais aussi des structures de données complexes comme des listes, des tableaux et du contenu conditionnel.</p> </li> <li> <p><strong>Appel API Unique</strong> : La génération de documents s’effectue avec un <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">appel API unique</a> ou via l’interface web. Vous fournissez l’ID de votre modèle et vos données, et DocuGenerate gère tout le traitement, le formatage et la génération en interne.</p> </li> <li> <p><strong>Prise en Charge Riche des Structures de Données</strong> : DocuGenerate prend nativement en charge des structures de données complexes, notamment des listes dynamiques, des tableaux, du contenu conditionnel, l’insertion d’images, des QR codes et un formatage avancé.</p> </li> </ul> <p>Voici à quel point l’approche de DocuGenerate est simple :</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="comparaison-fonctionnalites">Comparaison Fonctionnalité par Fonctionnalité</h2> <p>Pour vous aider à comprendre les différences pratiques entre Google Docs et DocuGenerate pour la génération de documents, nous avons décomposé les fonctionnalités clés en quatre catégories principales. Chaque tableau comparatif met en évidence la façon dont les deux plateformes gèrent les aspects essentiels de l’automatisation des documents, de la gestion des modèles à la qualité de la sortie.</p> <h3 id="creation-et-gestion-des-modeles">Création et Gestion des Modèles</h3> <table class="table table-bordered"> <thead> <tr> <th>Fonctionnalité</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Création de Modèle</strong></td> <td>Modèles créés dans l’interface Google Docs</td> <td>Modèles créés dans Microsoft Word ou téléversés en fichiers DOCX</td> </tr> <tr> <td><strong>Syntaxe de Substitution</strong></td> <td>Simples chaînes de texte avec la syntaxe des doubles accolades</td> <td>Syntaxe riche de balises de fusion prenant en charge des structures de données complexes et des <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">délimiteurs personnalisés</a></td> </tr> <tr> <td><strong>Contrôle de Version</strong></td> <td>Historique des révisions de Google Docs</td> <td><a href="https://www.docugenerate.com/fr/aide/articles/comment-restaurer-une-version-de-modele/">Versionnage de modèles</a> intégré et gestion</td> </tr> <tr> <td><strong>Gestion des Modèles</strong></td> <td>Gérée via Google Drive</td> <td>Gestion dédiée des modèles avec fonctionnalités de partage</td> </tr> <tr> <td><strong>Contrôle d’Accès</strong></td> <td>Partage et autorisations Google Drive</td> <td>Contrôle d’accès basé sur les rôles pour la <a href="https://www.docugenerate.com/fr/aide/articles/introduction-a-la-collaboration-d-equipe/">collaboration d’équipe</a></td> </tr> </tbody> </table> <h3 id="gestion-des-donnees-et-integration">Gestion des Données et Intégration</h3> <table class="table table-bordered"> <thead> <tr> <th>Fonctionnalité</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Traitement des Données</strong></td> <td>Nécessite du code personnalisé pour structurer et formater les données</td> <td>Accepte les données dans plusieurs formats : <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-de-donnees-json/">JSON</a>, <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-d-un-fichier-excel-ou-csv/">Excel ou CSV</a></td> </tr> <tr> <td><strong>Préparation des Données</strong></td> <td>Les données doivent être traitées et formatées avant les appels API</td> <td>Détection automatique du type de données et <a href="https://www.docugenerate.com/fr/aide/articles/comment-formater-les-donnees-avec-des-filtres/">formatage</a></td> </tr> <tr> <td><strong>Structures Complexes</strong></td> <td>Support limité sans programmation poussée</td> <td>Prise en charge native des structures de données imbriquées</td> </tr> <tr> <td><strong>Gestion des Types de Données</strong></td> <td>Chaque type de donnée nécessite une gestion API différente</td> <td>Gestion unifiée pour tous les types de données</td> </tr> <tr> <td><strong>Intégration de Plateformes</strong></td> <td>Intégrations natives avec toutes les grandes plateformes</td> <td>Intégrations natives avec <a href="https://www.docugenerate.com/fr/integrations/zapier/">Zapier</a>, <a href="https://www.docugenerate.com/fr/integrations/make/">Make</a>, <a href="https://www.docugenerate.com/fr/integrations/bubble/">Bubble</a> et plus encore</td> </tr> </tbody> </table> <h3 id="generation-de-contenu-dynamique">Génération de Contenu Dynamique</h3> <table class="table table-bordered"> <thead> <tr> <th>Fonctionnalité</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Listes Dynamiques</strong></td> <td>Nécessite la manipulation programmatique des <a href="https://developers.google.com/workspace/docs/api/how-tos/lists" rel="nofollow noopener">listes</a></td> <td><a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-listes-a-un-modele/">Listes dynamiques</a> créées avec une syntaxe de modèle simple</td> </tr> <tr> <td><strong>Tableaux Variables</strong></td> <td>Appels API complexes nécessaires pour insérer et <a href="https://developers.google.com/workspace/docs/api/how-tos/tables" rel="nofollow noopener">formater des tableaux</a></td> <td><a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-tableaux-a-un-modele/">Tableaux</a> générés automatiquement à partir de tableaux de données</td> </tr> <tr> <td><strong>Contenu Conditionnel</strong></td> <td>Logique applicative requise pour déterminer ce qui doit être inclus</td> <td><a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-conditions-a-un-modele/">Sections conditionnelles</a> définies directement dans les modèles</td> </tr> <tr> <td><strong>Insertion d’Images</strong></td> <td>Les <a href="https://developers.google.com/workspace/docs/api/how-tos/images" rel="nofollow noopener">images</a> doivent être accessibles publiquement via une URL</td> <td><a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-images-a-un-modele/">Gestion des images</a> avec redimensionnement et positionnement</td> </tr> </tbody> </table> <h3 id="formats-de-sortie-et-qualite">Formats de Sortie et Qualité</h3> <table class="table table-bordered"> <thead> <tr> <th>Fonctionnalité</th> <th>Google Docs</th> <th>DocuGenerate</th> </tr> </thead> <tbody> <tr> <td><strong>Format Natif</strong></td> <td>Format Google Docs</td> <td><a href="https://www.docugenerate.com/fr/aide/articles/selectionner-le-format-d-export-de-fusion/">Plusieurs formats de sortie</a> : PDF, DOCX, DOC, ODT, TXT, HTML, PNG</td> </tr> <tr> <td><strong>Options d’Export</strong></td> <td>PDF, DOCX, ODT, RTF, TXT, HTML, EPUB</td> <td>Conversion en une seule étape vers le format cible</td> </tr> <tr> <td><strong>Qualité de Sortie</strong></td> <td>Dépend des algorithmes de conversion de Google</td> <td>Génération haute-fidélité préservant le formatage original</td> </tr> <tr> <td><strong>Cohérence</strong></td> <td>Qualité variable selon les formats d’export</td> <td>Qualité de sortie cohérente pour tous les formats</td> </tr> <tr> <td><strong>Fonctionnalités Avancées</strong></td> <td>Contrôle limité sur le formatage et la mise en page finale</td> <td>Fonctionnalités PDF avancées comme la <a href="https://www.docugenerate.com/fr/aide/articles/fusionner-un-pdf-a-la-fin-des-documents-generes/">fusion avec des fichiers existants</a></td> </tr> </tbody> </table> <h2 id="integration-no-code">Intégration avec les Plateformes No-Code/Low-Code</h2> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/zapier-google-docs.png" alt="Intégration Zapier pour Google Docs"/></p> <p>Les plateformes no-code et low-code comme <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/">Zapier</a> ont révolutionné la façon dont les entreprises automatisent leurs flux de génération de documents. Ces plateformes permettent aux utilisateurs de créer des automatisations sophistiquées sans écrire de code, rendant la génération de documents accessible aux membres d’équipe non techniques. Cependant, l’expérience d’intégration varie considérablement entre <a href="https://zapier.com/apps/google-docs/integrations">Google Docs</a> et <a href="https://zapier.com/apps/docugenerate/integrations">DocuGenerate</a>, notamment en ce qui concerne la flexibilité des modèles et la gestion des balises de fusion.</p> <p>L’intégration Zapier pour Google Docs démontre à la fois la puissance et les limites de l’utilisation de Google Docs pour la génération automatisée de documents. Comme détaillé dans le <a href="https://zapier.com/blog/create-autopopulate-google-docs-template/" target="_blank" rel="nofollow noopener">guide de Zapier</a> sur la création et le remplissage automatique de modèles Google Docs, la plateforme détecte automatiquement les balises de fusion dans vos modèles Google Docs qui utilisent la syntaxe standard <code class="language-plaintext highlighter-rouge">{{ }}</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/template-field-names.png" alt="Noms de champs dans un exemple de modèle" class="desktop-width-75"/></p> <p>Lorsque vous configurez votre Zap, ces espaces réservés sont détectés comme des champs de formulaire, vous permettant de mapper les données de votre application déclencheuse directement à votre modèle sans configuration manuelle. Bien que cette détection automatique rende l’intégration Google Docs apparemment fluide, elle crée une limitation importante : vous êtes enfermé dans la syntaxe spécifique de délimiteurs à double accolade <code class="language-plaintext highlighter-rouge">{{ }}</code> de Google. Cette contrainte devient problématique lorsque vos modèles doivent coexister avec d’autres systèmes susceptibles d’entrer en conflit avec cette syntaxe, ou lorsque vous souhaitez utiliser d’autres délimiteurs correspondant aux conventions existantes de votre organisation.</p> <p><img src="https://www.docugenerate.com/assets/posts/022-google-docs-compare/zapier-field-names.png" alt="Détection automatique des noms de champs par Zapier" class="desktop-width-75"/></p> <p>DocuGenerate adopte une approche plus flexible pour la configuration des délimiteurs. Bien qu’il prenne en charge par défaut la syntaxe standard à double accolade <code class="language-plaintext highlighter-rouge">{{ }}</code>, vous pouvez <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">personnaliser les délimiteurs</a> pour utiliser n’importe quels caractères adaptés à vos besoins, qu’il s’agisse de crochets <code class="language-plaintext highlighter-rouge">[ ]</code>, d’accolades simples <code class="language-plaintext highlighter-rouge">{ }</code>, ou même de chaînes personnalisées comme des chevrons <code class="language-plaintext highlighter-rouge">&lt;&lt; &gt;&gt;</code>. L’impact pratique de cette différence devient évident dans des scénarios d’automatisation complexes. Avec Google Docs, l’ensemble de votre flux de travail doit se conformer au standard à double accolade, nécessitant potentiellement des modifications de modèles et une gestion attentive du contenu pour éviter les conflits.</p> <h2 id="quand-choisir">Quand Choisir Google Docs ou DocuGenerate</h2> <h3 id="choisir-google-docs">Choisissez Google Docs Pour</h3> <ul> <li> <p><strong>Intégration Native à Google Workspace</strong> : Si votre organisation investit fortement dans Google Workspace et dispose déjà de flux de travail Google Docs établis, capitaliser sur cette base peut être pertinent.</p> </li> <li> <p><strong>Remplacement de Texte Simple Uniquement</strong> : Pour une génération de documents basique nécessitant uniquement des opérations de recherche et remplacement simples, sans structures de contenu dynamiques.</p> </li> <li> <p><strong>Édition Collaborative de Modèles</strong> : Lorsque plusieurs membres de l’équipe doivent collaborer sur la création de modèles et que vous souhaitez exploiter les fonctionnalités de collaboration en temps réel de Google Docs.</p> </li> <li> <p><strong>Traitement de Documents Personnalisé</strong> : Si vous avez besoin d’une logique de traitement de documents hautement personnalisée allant au-delà des modèles standards de génération de documents.</p> </li> </ul> <h3 id="choisir-docugenerate">Choisissez DocuGenerate Pour</h3> <ul> <li> <p><strong>Modèles de Documents Complexes</strong> : Lorsque vos documents nécessitent des listes dynamiques, des tableaux, du contenu conditionnel ou l’insertion d’images.</p> </li> <li> <p><strong>Mise en Œuvre Rapide</strong> : Si vous devez mettre en place la génération de documents rapidement, sans effort de développement important.</p> </li> <li> <p><strong>Génération de Documents en Masse</strong> : Pour générer de gros volumes de documents à partir de jeux de données (Excel, CSV, JSON).</p> </li> <li> <p><strong>Gestion des Modèles</strong> : Lorsque vous avez besoin de contrôle de version, de partage et de fonctionnalités de gestion spécifiquement conçues pour les modèles de documents.</p> </li> <li> <p><strong>Plusieurs Formats de Sortie</strong> : Si vous devez générer des documents dans différents formats (PDF, Word, etc.) à partir du même modèle.</p> </li> </ul> <h2 id="conclusion">Conclusion</h2> <p>Google Docs et DocuGenerate offrent tous deux des approches viables pour la génération de documents, mais ils répondent à des besoins et des cas d’usage différents. <a href="#utiliser-google-docs">Google Docs</a> excelle lorsque vous avez besoin d’une intégration approfondie avec Google Workspace et que vous disposez des ressources techniques pour créer des solutions personnalisées de génération de documents. Cependant, il nécessite une expertise importante en programmation et une maintenance continue pour les modèles de documents complexes.</p> <p><a href="#utiliser-docugenerate">DocuGenerate</a>, quant à lui, est spécialement conçu pour la génération de documents et propose une approche plus déclarative et centrée sur les modèles qui réduit la complexité et la charge de développement. Il est particulièrement adapté aux organisations qui doivent générer des documents complexes rapidement, s’intégrer à des plateformes no-code, ou gérer des flux de génération de documents à grande échelle.</p> <p>Si vous utilisez actuellement Google Docs pour la génération de documents et envisagez DocuGenerate, le processus de migration est généralement plus simple que vous ne le pensez. Vos modèles Google Docs existants peuvent être convertis au format Word et enrichis avec la syntaxe de balises de fusion de DocuGenerate, et ce processus révèle souvent des opportunités de simplifier une logique complexe qui était auparavant intégrée dans le code.</p> <h3 id="ressources">Ressources</h3> <ul> <li><a href="https://developers.google.com/workspace/docs/api/how-tos/merge" target="_blank" rel="nofollow noopener">Google Docs - Fusionner du texte dans un document</a> pour l’approche de Google en matière de génération de documents.</li> <li><a href="https://zapier.com/blog/create-autopopulate-google-docs-template/" target="_blank" rel="nofollow noopener">Comment créer et remplir automatiquement un modèle Google Docs</a> tutoriel Zapier.</li> <li><a href="https://www.docugenerate.com/fr/modeles/">Bibliothèque de Modèles de DocuGenerate</a> avec des modèles prêts à l’emploi pour les cas d’usage courants.</li> <li><a href="https://www.docugenerate.com/fr/aide/">Centre d’Aide de DocuGenerate</a> couvrant les fonctionnalités avancées de DocuGenerate et les guides d’intégration.</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[Découvrez les différences clés entre Google Docs et DocuGenerate pour la génération automatisée de documents. Apprenez quelle solution est la mieux adaptée pour créer des modèles dynamiques avec des listes, des tableaux, des images et la fusion de données complexes pour vos flux de travail métier.]]></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">Présentation de l’Historique des Versions de Modèles</title> <link href="https://www.docugenerate.com/fr/blog/presentation-de-l-historique-des-versions-de-modeles/" rel="alternate" type="text/html" title="Présentation de l’Historique des Versions de Modèles"/> <published>2025-05-27T00:00:00+00:00</published> <updated>2025-05-27T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/presentation-de-l-historique-des-versions-de-modeles</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/presentation-de-l-historique-des-versions-de-modeles/"><![CDATA[<h2 id="qu-est-ce-que-l-historique-des-versions">Qu’est-ce que l’Historique des Versions de Modèles?</h2> <p>L’Historique des Versions de Modèles est une nouvelle fonctionnalité puissante qui enregistre automatiquement les versions précédentes de vos modèles à chaque modification. Cela vous donne un historique complet de l’évolution de vos modèles au fil du temps et vous permet de restaurer une version précédente si nécessaire.</p> <p>Jusqu’à présent, chaque mise à jour d’un fichier modèle dans DocuGenerate écrasait définitivement la version précédente. Beaucoup de nos utilisateurs contournaient cette limitation en suivant manuellement les versions, en ajoutant des suffixes comme V1, V2, etc. ou d’autres systèmes de numérotation à leurs noms de modèles. Cette approche fonctionnait mais était lourde et sujette aux erreurs.</p> <p>Sur la base des retours et des demandes de fonctionnalités de nos utilisateurs, nous avons développé un système robuste d’historique des versions qui suit automatiquement toutes les modifications apportées à vos modèles dans DocuGenerate, éliminant ainsi le besoin de suivi manuel des versions.</p> <h2 id="pourquoi-l-historique-des-versions-est-important">Pourquoi l’Historique des Versions est Important</h2> <p>Le versionnage des modèles résout plusieurs défis critiques auxquels les créateurs de documents font face quotidiennement. À mesure que les organisations s’appuient de plus en plus sur des modèles pour la cohérence et l’efficacité de leurs flux de documents, le besoin d’un contrôle de version fiable devient essentiel. Avec cette fonctionnalité, vous pouvez préserver l’intégrité de vos modèles tout en intégrant les modifications et améliorations nécessaires au fil du temps.</p> <p><strong>1. Protection Contre les Modifications Accidentelles</strong> Tout le monde fait des erreurs. Qu’il s’agisse de téléverser accidentellement le mauvais fichier ou d’apporter des modifications involontaires à un modèle, l’historique des versions offre un filet de sécurité, vous permettant de restaurer rapidement une version précédente.</p> <p><strong>2. Suivi de l’Évolution des Modèles</strong> À mesure que vos processus métier évoluent, vos modèles évoluent aussi. L’historique des versions vous donne une visibilité sur la façon dont vos modèles ont changé au fil du temps, vous aidant à comprendre l’évolution de votre processus de génération de documents.</p> <p><strong>3. Exigences de Conformité et d’Audit</strong> Pour les organisations des secteurs réglementés, disposer d’un historique des modifications de modèles peut être crucial pour la conformité et les audits. L’historique des versions fournit une documentation de ce qui a changé, et quand cela a changé.</p> <h2 id="comment-fonctionne-l-historique-des-versions">Comment Fonctionne l’Historique des Versions de Modèles</h2> <h3 id="activer-l-historique-des-versions">Activer l’Historique des Versions</h3> <p>Cette fonctionnalité est disponible exclusivement dans nos nouveaux forfaits Premium et Business, comme détaillé sur notre <a href="https://www.docugenerate.com/fr/tarifs/">page tarifaire</a>. Si vous êtes sur un forfait plus ancien, vous pouvez continuer à l’utiliser indéfiniment. Cependant, pour profiter de l’historique des versions de modèles, vous devrez passer à l’un de ces nouveaux forfaits.</p> <p>Pour les modèles existants, le versionnage n’est pas activé par défaut, mais peut être activé via les <a href="https://www.docugenerate.com/fr/aide/articles/comment-activer-l-historique-des-versions/">paramètres du modèle</a> dans l’application web :</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/enable-versioning.png" alt="Activer le versionnage dans les paramètres du modèle" class="desktop-width-75"/></p> <p>Sinon, si vous utilisez notre API, vous pouvez activer le versionnage en définissant le paramètre <code class="language-plaintext highlighter-rouge">versioning_enabled</code> sur <code class="language-plaintext highlighter-rouge">true</code> lors de la <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">mise à jour d’un modèle</a> :</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/update-template-api.png" alt="Paramètres pour le point de terminaison de mise à jour de modèle"/></p> <p>Pour les nouveaux modèles, si votre compte a accès à cette fonctionnalité, le versionnage est activé par défaut. Lors de la <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">création d’un modèle</a> via l’API, vous pouvez définir explicitement le paramètre <code class="language-plaintext highlighter-rouge">versioning_enabled</code> sur <code class="language-plaintext highlighter-rouge">true</code> ou <code class="language-plaintext highlighter-rouge">false</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/create-template-api.png" alt="Paramètres pour le point de terminaison de création de modèle"/></p> <h3 id="quand-de-nouvelles-versions-sont-creees">Quand de Nouvelles Versions Sont Créées</h3> <p>Une fois le versionnage activé pour un modèle, une nouvelle version est automatiquement enregistrée chaque fois que vous <strong>mettez à jour le fichier modèle</strong>. Il est important de noter que les modifications des métadonnées du modèle (comme le nom ou d’autres paramètres) ne créent pas de nouvelles versions. Seules les modifications réelles du fichier modèle lui-même déclenchent la création d’une nouvelle version.</p> <p>Cette approche ciblée garantit que votre historique des versions reste pertinent et n’est pas encombré de modifications mineures de métadonnées qui n’affectent pas le résultat de la génération de documents. En ne suivant que les modifications substantielles du contenu du modèle, nous vous aidons à maintenir un historique des versions clair et pertinent qui met en évidence l’évolution réelle de la conception et des fonctionnalités de votre modèle, facilitant l’identification du moment et de la manière dont les modifications importantes ont été mises en œuvre.</p> <h3 id="gerer-les-versions-de-modeles">Gérer les Versions de Modèles</h3> <p>Dans la vue détaillée du modèle, vous trouverez un nouveau panneau <strong>Versions</strong> qui affiche toutes les versions enregistrées de votre modèle. La version active actuelle est mise en évidence par une icône en étoile :</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/versions-panel.png" alt="Panneau des versions dans la vue détaillée du modèle" class="desktop-width-75"/></p> <p>Cliquer sur une version dans la liste affichera un aperçu de cette version dans le panneau de gauche, vous permettant de revoir le contenu avant d’effectuer toute action. Pour chaque version, vous pouvez effectuer les actions suivantes :</p> <ul> <li> <p><strong>Restaurer :</strong> Cette action remplace le fichier modèle actuel par la version sélectionnée et met également à jour les paramètres du modèle (nom, délimiteurs, balises, etc.) associés à cette version. Après la restauration, la version sélectionnée devient la version active actuelle.</p> </li> <li> <p><strong>Télécharger :</strong> Cette action vous permet de télécharger une version spécifique du fichier modèle sur votre appareil local. Cela est utile si vous souhaitez consulter ou modifier une version précédente hors ligne.</p> </li> <li> <p><strong>Supprimer :</strong> Si vous n’avez plus besoin d’une version spécifique, vous pouvez facilement la retirer de votre historique. Notez que cette action est permanente et ne peut pas être annulée, utilisez-la donc avec précaution.</p> </li> </ul> <p>Il n’y a pas de limite au nombre de versions pouvant être enregistrées pour un modèle, vous offrant une couverture historique complète de l’évolution de votre modèle.</p> <h2 id="considerations-multi-regions">Considérations Multi-Régions</h2> <p>Si vous utilisez notre fonctionnalité de <a href="https://www.docugenerate.com/fr/blog/presentation-du-traitement-et-du-stockage-multi-regions/">traitement et stockage multi-régions</a>, il est important de comprendre comment le versionnage des modèles interagit avec les paramètres de région. Cette interaction affecte où vos versions historiques de modèles sont stockées et comment elles sont gérées lorsque vous changez la région de votre modèle, ce qui peut avoir un impact sur les exigences de conformité et les politiques de gouvernance des données.</p> <p>Les versions de modèles sont toujours stockées dans la région actuelle du modèle. Si vous changez la région d’un modèle (par exemple, des États-Unis vers l’UE), seul le fichier modèle actuel est déplacé vers la nouvelle région. Les versions précédentes restent dans la région d’origine.</p> <p>Cependant, toutes les nouvelles versions enregistrées après le changement de région seront stockées dans la nouvelle région. Cela signifie qu’au fil du temps, l’historique des versions de votre modèle peut s’étendre sur plusieurs régions. Cette approche minimise le transfert de données tout en garantissant que votre modèle actuel se trouve toujours dans la région que vous avez spécifiée.</p> <h2 id="team-collaboration">Autorisations des Membres de l’Équipe</h2> <p>Pour les utilisateurs qui partagent des modèles avec des <a href="https://www.docugenerate.com/fr/aide/articles/introduction-a-la-collaboration-d-equipe/">membres de l’équipe</a>, l’historique des versions améliore la collaboration de plusieurs façons, selon le niveau d’autorisation :</p> <ul> <li> <p>Les membres de l’équipe disposant de l’autorisation <strong>d’écriture</strong> peuvent mettre à jour les modèles, restaurer des versions précédentes et supprimer des versions de l’historique. Ils disposent d’un contrôle complet sur la gestion des modèles, similaire au propriétaire du modèle, à la seule exception qu’ils ne peuvent pas supprimer le modèle lui-même.</p> </li> <li> <p>Les membres de l’équipe disposant de l’autorisation de <strong>lecture</strong> peuvent uniquement consulter et télécharger les versions de modèles. Ils ne peuvent pas apporter de modifications au modèle actuel ni restaurer des versions précédentes. Lors de la consultation d’un modèle avec une autorisation en lecture seule, ils verront une version simplifiée du panneau des versions comme illustré ci-dessous :</p> <p><img src="https://www.docugenerate.com/assets/posts/021-template-version-history/team-member-read-v2.png" alt="Vue du panneau des versions pour un membre de l'équipe avec autorisation en lecture seule" class="desktop-width-75"/></p> </li> </ul> <p>Cette approche basée sur les autorisations garantit que les membres de l’équipe disposent d’un accès approprié à l’historique des versions selon leur rôle dans le processus de collaboration. Les chefs d’équipe peuvent déléguer en toute confiance les responsabilités de modification des modèles tout en conservant une supervision, et les membres de l’équipe en lecture seule peuvent toujours bénéficier de la visibilité sur l’historique de développement du modèle sans risque de modifications involontaires.</p> <h2 id="limitations-de-l-api">Limitations de l’API</h2> <p>Pour garder notre API simple et ciblée, la gestion des versions de modèles n’est disponible que via l’application web. Lors de l’utilisation de l’API, vous interagirez toujours avec la version actuelle d’un modèle. Cela signifie :</p> <ul> <li>Vous ne pouvez pas lister, restaurer ou supprimer des versions de modèles via l’API.</li> <li>La génération de documents utilise toujours la dernière version du modèle.</li> <li>Vous pouvez activer ou désactiver le versionnage pour un modèle via l’API, mais vous ne pouvez pas gérer les versions elles-mêmes.</li> </ul> <p>Ce choix de conception garde l’API simple tout en offrant la flexibilité d’activer le versionnage pour les modèles créés ou mis à jour via l’API.</p> <h2 id="scenarios-d-utilisation">Scénarios d’Utilisation</h2> <p>Explorons quelques scénarios concrets où l’historique des versions de modèles peut apporter une valeur significative :</p> <h3 id="scenario-modifications-accidentelles">Scénario 1 : Récupération après des Modifications Accidentelles</h3> <p>Un membre de l’<strong>équipe marketing</strong> téléverse accidentellement le mauvais fichier en mettant à jour un modèle de communication client critique, écrasant la version correcte par une ébauche incomplète.</p> <p>Le chef d’équipe découvre l’erreur, ouvre simplement le modèle dans DocuGenerate, accède au panneau Versions, localise la dernière version correcte, et clique sur <strong>Restaurer</strong>. En quelques secondes, le modèle retrouve son état correct, <strong>sans perturbation</strong> des opérations métier.</p> <p>Sans historique des versions, l’équipe devrait recréer le modèle depuis zéro ou espérer qu’une copie locale de la version correcte existe, ce qui pourrait causer des retards dans les communications clients.</p> <h3 id="scenario-conformite">Scénario 2 : Évolution des Modèles et Conformité</h3> <p>Une entreprise de <strong>services financiers</strong> doit conserver des traces de l’évolution de ses modèles de contrats clients au fil du temps pour satisfaire les exigences réglementaires de conformité.</p> <p>Avec le versionnage activé, l’équipe de conformité peut consulter l’<strong>historique complet</strong> des modifications du modèle, télécharger des versions spécifiques à des <strong>fins d’audit</strong>, et démontrer une chronologie claire de l’évolution du modèle aux régulateurs.</p> <p>Sans historique des versions, l’entreprise devrait mettre en place un processus manuel de suivi des modifications de modèles, en stockant potentiellement des copies de modèles avec des noms de fichiers ou des emplacements différents, rendant le processus d’audit plus complexe et sujet aux erreurs.</p> <h3 id="scenario-collaboration">Scénario 3 : Développement Collaboratif de Modèles</h3> <p>Une <strong>équipe juridique</strong> développe collaborativement un nouveau modèle de contrat, avec plusieurs membres de l’équipe apportant des contributions et des améliorations sur plusieurs semaines.</p> <p>À mesure que les membres de l’équipe <strong>apportent des modifications</strong>, chaque mise à jour est automatiquement enregistrée comme une nouvelle version. Si une modification particulière pose problème ou ne répond pas aux exigences, il est facile de restaurer une <strong>version précédente</strong>. L’équipe peut également examiner l’évolution du modèle au fil du temps pour comprendre comment il s’est développé.</p> <p>Sans historique des versions, l’équipe devrait coordonner manuellement les modifications et éventuellement conserver plusieurs copies du modèle avec des noms de fichiers différents, créant de la confusion sur la version la plus récente ou la plus exacte.</p> <h2 id="bonnes-pratiques">Bonnes Pratiques pour le Versionnage des Modèles</h2> <p>Pour tirer le meilleur parti de cette fonctionnalité, voici quelques bonnes pratiques qui vous aideront à maintenir un historique des versions de modèles organisé, efficace et utile :</p> <ol> <li> <p><strong>Activez le Versionnage pour les Modèles Critiques</strong> Bien que vous n’ayez pas forcément besoin du versionnage pour chaque modèle, il est particulièrement précieux pour les modèles utilisés fréquemment, impliquant une logique complexe, ou critiques pour vos opérations métier.</p> </li> <li> <p><strong>Effectuez des Mises à Jour de Modèles Significatives</strong> Lorsque vous apportez des modifications à un modèle, essayez de regrouper les modifications liées plutôt que de faire de nombreuses petites mises à jour incrémentales. Cela aide à garder votre historique des versions clair et pertinent.</p> </li> <li> <p><strong>Examinez Périodiquement l’Historique des Versions</strong> Prenez le temps d’examiner occasionnellement l’historique des versions de votre modèle pour supprimer les versions inutiles. Bien qu’il n’y ait actuellement aucune limite au nombre de versions, concentrer votre historique sur les modifications importantes facilite la navigation.</p> </li> <li> <p><strong>Documentez les Modifications Majeures</strong> Bien que DocuGenerate suive automatiquement le moment où les modifications ont été apportées, il ne capture pas l’objectif ou l’intention derrière ces modifications. Envisagez de maintenir un journal des modifications ou une documentation séparée pour les mises à jour majeures des modèles.</p> </li> <li> <p><strong>Utilisez les Autorisations d’Équipe avec Discernement</strong> Si vous partagez des modèles avec des membres de l’équipe, réfléchissez soigneusement à quels membres ont besoin d’un accès « écriture » leur permettant de mettre à jour les modèles et de gérer les versions. Pour les utilisateurs qui ont seulement besoin de générer des documents, l’accès « lecture » est suffisant.</p> </li> </ol> <h2 id="conclusion">Conclusion</h2> <p>L’Historique des Versions de Modèles représente une amélioration significative des capacités de gestion de modèles de DocuGenerate. En suivant automatiquement les modifications et en fournissant des outils pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-restaurer-une-version-de-modele/">restaurer des versions précédentes</a>, cette fonctionnalité offre une tranquillité d’esprit, favorise la collaboration, et aide à préserver l’intégrité de votre processus de génération de documents.</p> <p>Nous sommes impatients de voir comment cette fonctionnalité améliore vos flux de génération de documents et aide votre équipe à travailler plus efficacement et avec plus de confiance avec les modèles. Comme toujours, nous accueillons vos retours et suggestions à mesure que nous continuons à améliorer et étendre les capacités de DocuGenerate.</p> <h3 id="ressources">Ressources</h3> <ul> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-activer-l-historique-des-versions/">Comment activer l’historique des versions?</a></li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-restaurer-une-version-de-modele/">Comment restaurer une version de modèle?</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[La nouvelle fonctionnalité d'historique des versions de modèles offre la possibilité de suivre, restaurer et gérer les versions précédentes de vos modèles. Cet ajout puissant permet d'éviter les modifications accidentelles et offre un filet de sécurité pour vos modèles importants.]]></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">Automatiser les Billets RSVP d’Événements avec Xano et DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/automatiser-les-billets-rsvp-d-evenements-avec-xano-et-docugenerate/" rel="alternate" type="text/html" title="Automatiser les Billets RSVP d’Événements avec Xano et DocuGenerate"/> <published>2025-04-13T00:00:00+00:00</published> <updated>2025-04-13T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/automatiser-les-billets-rsvp-d-evenements-avec-xano-et-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/automatiser-les-billets-rsvp-d-evenements-avec-xano-et-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>La gestion des confirmations de présence (RSVP) aux événements est un défi courant pour les organisateurs, et proposer des billets de confirmation instantanés améliore l’expérience des participants tout en vous aidant à rester organisé. Dans ce tutoriel, vous apprendrez à créer un système de billetterie d’événements automatisé en utilisant <a href="https://www.xano.com/" target="_blank" rel="noopener">Xano</a> pour la logique backend et <a href="https://www.docugenerate.com">DocuGenerate</a> pour la génération de PDF. Nous utiliserons le modèle <a href="https://gitlab.com/xano-marketplace/xano-events" target="_blank" rel="nofollow noopener">Events</a> de la marketplace de Xano, qui propose un système de gestion d’événements prêt à l’emploi avec des fonctionnalités RSVP.</p> <p>À la fin de ce tutoriel, votre système générera automatiquement des billets PDF personnalisés lorsqu’une personne confirme sa présence à un événement, avec les détails de l’événement et les informations du participant. Cette approche automatisée élimine la création manuelle de billets et garantit des billets cohérents et professionnels pour tous vos événements. Le flux de travail que vous allez créer suit ce processus :</p> <ol> <li>Un participant remplit un formulaire RSVP pour un événement via une application de démonstration.</li> <li>Les données RSVP sont stockées dans votre base de données Xano.</li> <li>Un déclencheur de base de données détecte le nouvel enregistrement RSVP.</li> <li>Le déclencheur récupère les détails de l’événement et génère un billet PDF avec DocuGenerate.</li> <li>Le billet généré est prêt à être distribué au participant.</li> </ol> <p>Le système peut gérer plusieurs événements simultanément, ce qui le rend adapté aux organisations gérant plusieurs événements en parallèle.</p> <h2 id="installer-le-modele-events">Installer le Modèle Events de Xano</h2> <p>La marketplace de Xano propose des modèles prêts à l’emploi que vous pouvez installer directement dans votre espace de travail. Le modèle <strong>Events</strong> propose un système complet de gestion d’événements conçu pour collecter et gérer les RSVP. Il inclut des fonctionnalités pour publier de nouveaux événements avec des images de bannière, des descriptions et des dates, ainsi que pour collecter les informations RSVP telles que les noms et adresses e-mail des participants.</p> <p>Pour commencer, accédez à la page <strong>Marketplace</strong> de votre espace de travail et recherchez le modèle <strong>Events</strong> dans <strong>Starter templates</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/xano-events-template.png" alt="Le modèle Events de la marketplace Xano"/></p> <p>Cliquez sur <strong>Get Template</strong> pour installer le modèle dans votre espace de travail. Vous devriez voir le message de confirmation indiquant que le modèle est désormais disponible dans votre espace de travail.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/events-template-installed.png" alt="Modèle Events installé dans l'espace de travail"/></p> <p>Une fois le modèle installé, vous trouverez les composants suivants ajoutés à votre espace de travail.</p> <h3 id="tables-de-base-de-donnees">Tables de Base de Données</h3> <ul> <li><code class="language-plaintext highlighter-rouge">event</code> : Stocke les informations de l’événement, notamment le nom, la description, la photo de couverture, la date de début et la date de fin. Le modèle inclut 6 exemples d’enregistrements d’événements.</li> <li><code class="language-plaintext highlighter-rouge">RSVP</code> : Stocke les réponses des participants avec le nom, l’e-mail et une référence à l’événement. Le modèle inclut 13 exemples d’enregistrements RSVP.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/database-tables.png" alt="Les tables de base de données Events"/></p> <h3 id="points-de-terminaison-api">Points de Terminaison API</h3> <p>Le modèle crée un groupe d’API <strong>Events</strong> avec des points de terminaison pour gérer à la fois les événements et les RSVP. Ces points de terminaison gèrent toutes les opérations CRUD (Create, Read, Update, Delete) pour vos données d’événements. Vous pouvez consulter ces points de terminaison dans le groupe d’API <strong>events</strong> de votre espace de travail Xano, où vous trouverez également un bouton <strong>Copy base URL</strong> utile pour la connexion à l’<a href="#application-de-demonstration">application de démonstration</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/events-api-group.png" alt="Le groupe d'API Events avec des points de terminaison pour les ressources /event et /rsvp"/></p> <h3 id="modules-complementaires">Modules Complémentaires</h3> <p>Le modèle inclut un module complémentaire <code class="language-plaintext highlighter-rouge">rsvp_count</code> qui calcule automatiquement le nombre de RSVP pour chaque événement, facilitant le suivi de la fréquentation.</p> <h2 id="application-de-demonstration">Découvrir l’Application de Démonstration</h2> <p>Après l’<a href="#installer-le-modele-events">installation</a>, cliquez sur <strong>Explore live demo</strong> pour voir le modèle Events en action. Xano fournit l’infrastructure backend, mais vous avez besoin d’une application frontend pour interagir avec votre API. L’<a href="https://demo.xano.com/xano-events/" target="_blank" rel="nofollow noopener">application de démonstration</a> créée par Xano vous permet de tester l’ensemble des fonctionnalités.</p> <p>Pour connecter l’application de démonstration à votre backend Xano, vous devrez fournir l’URL de votre API. Vous la trouverez en accédant au <a href="#points-de-terminaison-api">groupe d’API</a> <strong>events</strong> de votre espace de travail et en cliquant sur <strong>Copy base URL</strong>. Collez cette URL dans le champ de configuration de l’application de démonstration.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/xano-events-demo.png" alt="Application de démonstration Events"/></p> <p>L’application de démonstration propose plusieurs fonctionnalités clés : afficher tous les événements sous forme de cartes avec défilement infini, rechercher des événements par nom, créer de nouveaux événements avec photos de couverture et descriptions, consulter les détails complets d’un événement, et soumettre des RSVP avec nom et e-mail. L’application est entièrement fonctionnelle et illustre comment les points de terminaison de l’API fonctionnent ensemble pour créer un système de gestion d’événements cohérent.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/xano-events-app.png" alt="Application Xano Events affichant les cartes d'événements"/></p> <p>Les événements affichés dans l’application de démonstration correspondent directement aux enregistrements de votre <a href="#tables-de-base-de-donnees">table de base de données</a> <code class="language-plaintext highlighter-rouge">event</code>, qui ont été pré-remplis lors de l’installation du modèle.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/event-database-table.png" alt="Table de base de données event avec des exemples d'enregistrements"/></p> <h2 id="comprendre-le-flux-rsvp">Comprendre le Flux RSVP</h2> <p>Cliquez sur n’importe quel événement pour afficher ses détails. Vous verrez des informations sur l’événement ainsi qu’un bouton <strong>Details</strong> pour plus d’informations et un bouton <strong>RSVP</strong> pour confirmer votre présence.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/festival-event-details.png" alt="Détails de l'événement &quot;Festival&quot;"/></p> <p>Le formulaire RSVP est volontairement simple, ne demandant qu’un nom et une adresse e-mail. Cette approche minimaliste réduit les frictions et encourage davantage de RSVP. Lorsqu’une personne soumet ce formulaire, un nouvel enregistrement est créé dans la <a href="#tables-de-base-de-donnees">table de base de données</a> <code class="language-plaintext highlighter-rouge">RSVP</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/festival-event-rsvp.png" alt="Formulaire RSVP pour l'événement &quot;Festival&quot;"/></p> <p>Vous pouvez consulter tous les enregistrements RSVP dans votre espace de travail Xano en accédant à la <a href="#tables-de-base-de-donnees">table de base de données</a> <code class="language-plaintext highlighter-rouge">RSVP</code>, qui affiche les exemples de données pré-remplies lors de l’installation du modèle.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/rsvp-database-table.png" alt="Table de base de données RSVP avec des exemples d'enregistrements"/></p> <p>Maintenant que vous comprenez le fonctionnement du modèle Events, améliorons-le en générant automatiquement des billets PDF lorsqu’une personne confirme sa présence à un événement.</p> <h2 id="creer-le-declencheur-de-base-de-donnees">Créer le Déclencheur de Base de Données</h2> <p>Les <a href="https://docs.xano.com/the-function-stack/building-with-visual-development/triggers" target="_blank" rel="nofollow noopener">déclencheurs</a> dans Xano vous permettent d’exécuter des flux de travail personnalisés lorsque des événements spécifiques se produisent dans la base de données. Nous allons créer un déclencheur qui s’active chaque fois qu’un nouvel enregistrement RSVP est inséré dans la base de données. Ce déclencheur gérera toute la logique de génération et, éventuellement, de distribution des billets d’événements. Notez que les déclencheurs de base de données sont une fonctionnalité premium de Xano et ne sont pas disponibles dans le plan gratuit.</p> <p>Pour créer un déclencheur, accédez à la table <code class="language-plaintext highlighter-rouge">RSVP</code> dans votre vue de base de données et cliquez sur <strong>+ Trigger</strong>, puis sélectionnez <strong>+ Add database trigger and continue</strong>. Configurez votre déclencheur avec les paramètres suivants :</p> <ul> <li><strong>Name</strong> : Entrez par exemple “New RSVP Answer”</li> <li><strong>Data Sources</strong> : Laissez vide (cela signifie que le déclencheur s’exécute pour toutes les sources de données)</li> <li><strong>Actions</strong> : Sélectionnez uniquement <strong>Inserts</strong> (le déclencheur ne doit s’activer que lors de la création de nouveaux enregistrements RSVP, pas lors de leur mise à jour ou suppression)</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/new-rsvp-answer-trigger-create.png" alt="Création du déclencheur &quot;New RSVP Answer&quot;"/></p> <p>Après avoir créé le déclencheur, vous verrez un flux de travail basique contenant uniquement une fonction <strong>Inputs</strong>, qui reçoit les données du nouvel enregistrement RSVP chaque fois que le déclencheur s’active. Vous allez enrichir cette base en ajoutant des fonctions qui récupèrent les données de l’événement et génèrent les billets.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/rsvp-trigger-created.png" alt="Déclencheur &quot;New RSVP Answer&quot; vide"/></p> <h2 id="installer-le-snippet-docugenerate">Installer le Snippet DocuGenerate</h2> <p>Pour activer les fonctionnalités de génération de PDF dans votre espace de travail Xano, vous devez installer le <a href="https://www.xano.com/snippet/be03h9xT/" target="_blank" rel="nofollow noopener">snippet DocuGenerate</a> depuis la marketplace de Xano. Les snippets sont des fonctions prêtes à l’emploi qui étendent les capacités de Xano en s’intégrant à des services externes.</p> <p>Cliquez sur <strong>Add to your Xano Account</strong> et suivez les étapes d’installation. Connectez-vous à votre compte Xano, sélectionnez l’instance où vous souhaitez ajouter le snippet, puis cliquez sur <strong>Add to Instance</strong>. Après confirmation, vous pourrez installer le snippet directement dans votre espace de travail en le sélectionnant dans une liste d’espaces de travail disponibles.</p> <p>Une fois installé, le snippet DocuGenerate propose une fonction <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-xano/#generate-document">Generate Document</a> que vous pouvez utiliser dans n’importe quel flux de travail. Cette fonction se connecte à l’API DocuGenerate pour créer des documents à partir de modèles.</p> <h3 id="configurer-votre-cle-api">Configurer Votre Clé API</h3> <p>Avant de pouvoir utiliser le snippet DocuGenerate, vous devez configurer votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">Clé API</a> dans les paramètres de l’espace de travail. Accédez aux paramètres de votre espace de travail dans Xano et recherchez la section <strong>Environment Variables</strong>. Cliquez sur le bouton <strong>Manage</strong>, puis saisissez votre clé API dans la variable <code class="language-plaintext highlighter-rouge">docugenerate_api_key</code>. N’oubliez pas de cliquer sur <strong>Save</strong> pour appliquer les modifications.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/docugenerate-api-key.png" alt="Configurer la clé API DocuGenerate"/></p> <h2 id="creer-le-modele-de-billet">Créer le Modèle de Billet d’Événement RSVP</h2> <p>Vous allez maintenant devoir créer un modèle Word pour vos billets d’événements dans DocuGenerate. Le modèle doit inclure des balises de fusion pour toutes les données que vous souhaitez afficher sur le billet. Pour ce tutoriel, nous utiliserons les balises de fusion suivantes :</p> <ul> <li><code class="language-plaintext highlighter-rouge">[event_name]</code> : Le nom de l’événement</li> <li><code class="language-plaintext highlighter-rouge">[start_at]</code> : La date et l’heure de début de l’événement</li> <li><code class="language-plaintext highlighter-rouge">[end_at]</code> : La date et l’heure de fin de l’événement</li> <li><code class="language-plaintext highlighter-rouge">[event_photo]</code> : La photo de couverture de l’événement</li> <li><code class="language-plaintext highlighter-rouge">[rsvp_name]</code> : Le nom du participant</li> <li><code class="language-plaintext highlighter-rouge">[rsvp_email]</code> : L’adresse e-mail du participant</li> </ul> <p>Créez un nouveau modèle dans DocuGenerate et téléversez votre document Word. Assurez-vous d’activer la <a href="https://www.docugenerate.com/fr/aide/articles/comment-activer-la-syntaxe-avancee/">syntaxe avancée</a> pour ce modèle, qui vous permet d’utiliser des fonctionnalités avancées comme le filtre de redimensionnement d’images. Notez que lors de l’utilisation de la syntaxe avancée, les noms de balises de fusion ne peuvent pas contenir d’espaces, c’est pourquoi nous utilisons des underscores à la place.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/rsvp-event-ticket-template-v2.png" alt="Modèle RSVP Event Ticket dans DocuGenerate"/></p> <p>Vous pouvez <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/RSVP Event Ticket.docx" target="_blank">télécharger le modèle</a> utilisé dans ce tutoriel et le personnaliser pour vos propres événements. Une fois votre modèle créé, copiez son <a href="https://www.docugenerate.com/fr/aide/articles/comment-obtenir-l-id-du-modele/">identifiant de modèle</a> depuis l’interface DocuGenerate, car vous en aurez besoin lors de la configuration de la fonction Generate Document dans Xano plus tard.</p> <h2 id="construire-le-flux-de-travail">Construire le Flux de Travail du Déclencheur</h2> <p>Maintenant que votre déclencheur est créé et que DocuGenerate est installé, vous êtes prêt à construire le flux de travail qui génère les billets. Ce flux de travail récupérera les détails de l’événement pour le RSVP et utilisera ces données pour générer un billet PDF personnalisé.</p> <h3 id="configurer-la-generation-de-document">Configurer la Génération de Document</h3> <p>Pour ajouter la fonction <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-xano/#generate-document">Generate Document</a> à votre flux de travail, cliquez sur <strong>Add function</strong>, recherchez “DocuGenerate” dans la bibliothèque de fonctions. Sélectionnez ensuite <strong>DocuGenerate/Generate Document</strong> dans les résultats.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/search-generate-document-function-v2.png" alt="Ajout de la fonction &quot;DocuGenerate/Generate Document&quot; au flux de travail"/></p> <p>La fonction Generate Document nécessite plusieurs champs de saisie :</p> <ul> <li><strong>template_id</strong> : Collez l’identifiant de modèle de votre modèle <a href="#creer-le-modele-de-billet">RSVP Event Ticket</a></li> <li><strong>name</strong> : Définissez une valeur dynamique comme <code class="language-plaintext highlighter-rouge">Ticket for %s</code> en utilisant la fonction <code class="language-plaintext highlighter-rouge">sprintf</code> pour inclure le nom du participant depuis <code class="language-plaintext highlighter-rouge">new.name</code></li> <li><strong>output_format</strong> : Définissez sur <code class="language-plaintext highlighter-rouge">.pdf</code> pour générer des billets PDF</li> <li><strong>data</strong> : Pour le paramètre <code class="language-plaintext highlighter-rouge">data</code>, commencez par sélectionner le type objet, puis utilisez le filtre <code class="language-plaintext highlighter-rouge">set</code> plusieurs fois pour ajouter des paires clé-valeur. Cet objet contiendra les valeurs des balises de fusion pour votre modèle : <ul> <li><strong>rsvp_name</strong> : Défini sur <code class="language-plaintext highlighter-rouge">new.name</code> depuis l’enregistrement RSVP</li> <li><strong>rsvp_email</strong> : Défini sur <code class="language-plaintext highlighter-rouge">new.email</code> depuis l’enregistrement RSVP</li> </ul> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/configure-generate-document-function.png" alt="Configuration de la fonction &quot;DocuGenerate/Generate Document&quot;"/></p> <p>Avec cette configuration, le billet ne contiendra que les données de la personne. Nous devons également inclure les données de l’événement sur le billet.</p> <h3 id="recuperer-les-donnees-de-l-evenement">Récupérer les Données de l’Événement</h3> <p>L’enregistrement RSVP contient un champ <code class="language-plaintext highlighter-rouge">event_id</code> qui référence l’événement associé. Vous devez récupérer les détails complets de l’événement avant de générer le billet. Ajoutez une fonction <strong>Query all Records</strong> à votre flux de travail de déclencheur avant <a href="#configurer-la-generation-de-document">Generate Document</a> et configurez-la pour interroger la table <code class="language-plaintext highlighter-rouge">event</code>.</p> <p>Pour récupérer uniquement l’événement spécifique à ce RSVP, ajoutez un filtre avec une requête personnalisée : <code class="language-plaintext highlighter-rouge">db:event.id==input:new.event_id</code>. Cette condition fait correspondre l’identifiant de l’événement dans la base de données avec l’identifiant de l’événement dans le nouvel enregistrement RSVP. Dans <strong>Return settings</strong>, changez le type de retour en <strong>single</strong> au lieu de la liste par défaut, car vous n’attendez qu’un seul enregistrement d’événement. Enfin, définissez la valeur <strong>Return as</strong> sur <code class="language-plaintext highlighter-rouge">event</code> afin de pouvoir référencer ces données plus tard dans le flux de travail.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/query-event-records-by-id.png" alt="Configuration de la fonction &quot;Query all Records&quot; pour la table &quot;event&quot;"/></p> <h3 id="ajouter-les-donnees-de-l-evenement">Ajouter les Données de l’Événement au Billet</h3> <p>Avec les données de l’événement récupérées dans la variable <code class="language-plaintext highlighter-rouge">event</code>, nous devons retourner configurer la fonction <a href="#configurer-la-generation-de-document">Generate Document</a> et ajouter les correspondances suivantes à l’entrée <code class="language-plaintext highlighter-rouge">data</code> :</p> <ul> <li><strong>event_name</strong> : Défini sur <code class="language-plaintext highlighter-rouge">event.name</code> depuis l’enregistrement de l’événement <a href="#recuperer-les-donnees-de-l-evenement">récupéré précédemment</a></li> <li><strong>start_at</strong> : Défini sur <code class="language-plaintext highlighter-rouge">event.start_at</code> formaté avec le filtre <a href="https://docs.xano.com/the-function-stack/filters/timestamp" target="_blank" rel="nofollow noopener">format_timestamp</a> au format <code class="language-plaintext highlighter-rouge">M j, Y h:i A</code> pour afficher des dates comme “Oct 31, 2023 12:00 AM”</li> <li><strong>end_at</strong> : Défini sur <code class="language-plaintext highlighter-rouge">event.end_at</code> également formaté en <code class="language-plaintext highlighter-rouge">M j, Y h:i A</code></li> <li><strong>event_photo</strong> : Défini sur <code class="language-plaintext highlighter-rouge">event.cover_photo.url</code> pour inclure l’image de couverture de l’événement sur le billet</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/generate-document-all-params.png" alt="Configuration de tous les paramètres pour la fonction &quot;Generate Document&quot;"/></p> <p>Le filtre <code class="language-plaintext highlighter-rouge">format_timestamp</code> est particulièrement utile ici car il transforme le format d’horodatage de Xano en un format lisible qui paraît professionnel sur vos billets.</p> <h2 id="tester-le-flux-de-travail">Tester le Flux de Travail de Bout en Bout</h2> <p>Une fois votre flux de travail de déclencheur terminé, il est temps de tester l’ensemble du système. Retournez à l’<a href="#application-de-demonstration">application de démonstration</a> et soumettez un nouveau RSVP pour un événement quelconque. Lorsque vous soumettez le formulaire, le déclencheur s’exécute automatiquement en arrière-plan.</p> <p>Par exemple, essayez de confirmer votre présence à l’événement “2 Day Pokemon Dance Party” avec votre nom et e-mail. Accédez ensuite à votre modèle dans DocuGenerate et consultez ses <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-les-documents-generes/">documents générés</a>. Vous devriez voir un nouveau document correspondant à votre réponse RSVP.</p> <p><img src="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/generated-ticket-example.png" alt="Document généré &quot;Ticket for John Silver.pdf&quot; dans DocuGenerate"/></p> <p>Le billet doit inclure le nom du participant, son e-mail, les informations de l’événement, les dates et la photo de couverture de l’événement. Pour référence, vous pouvez <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/Ticket for John Silver.pdf" target="_blank">télécharger</a> l’exemple de billet PDF généré dans ce tutoriel.</p> <h2 id="ameliorations-possibles">Améliorations Possibles</h2> <p>Le flux de travail actuel génère avec succès les billets, mais il existe plusieurs façons de l’améliorer pour créer un système de gestion d’événements encore plus puissant.</p> <p>Une amélioration intéressante consisterait à envoyer automatiquement le billet par e-mail au participant. Xano prend en charge l’intégration d’e-mails via différents fournisseurs, et vous pourriez ajouter une fonction d’e-mail après l’étape de génération du document. Cela permettrait d’envoyer l’URL du billet ou de joindre directement le PDF à un e-mail de confirmation, offrant une gratification instantanée aux participants et réduisant votre charge de travail administrative.</p> <p>Une autre possibilité consiste à ajouter des codes QR à vos billets en utilisant la <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-qr-codes-et-codes-a-barres/">fonctionnalité de codes QR</a> de DocuGenerate. Vous pourriez encoder l’identifiant RSVP ou un code de confirmation unique dans le code QR, facilitant ainsi le scan des billets à l’accueil de l’événement et la vérification de la présence.</p> <p>Pour les événements à capacité limitée, vous pourriez ajouter une logique pour vérifier le nombre actuel de RSVP avant de générer les billets. Si l’événement est complet, le flux de travail pourrait soit empêcher de nouveaux RSVP, soit ajouter les participants à une liste d’attente plutôt que de générer immédiatement des billets.</p> <h2 id="conclusion">Conclusion</h2> <p>Nous avons réussi à créer un système de billetterie d’événements automatisé qui génère des billets PDF personnalisés lorsque les participants confirment leur présence à vos événements. Ce flux de travail démontre la puissance de la combinaison des capacités backend de Xano avec les fonctionnalités de génération de documents de DocuGenerate, tout cela sans écrire de code traditionnel.</p> <p>Le système est à la fois pratique et extensible, et peut s’adapter à d’autres cas d’usage au-delà des billets d’événements, comme la génération de certificats, de factures, ou de tout autre document devant être créé automatiquement en fonction des modifications de la base de données. Le concept clé d’utiliser des déclencheurs de base de données pour lancer des flux de travail de génération de documents peut s’appliquer à d’innombrables scénarios.</p> <p>En continuant à travailler avec <a href="https://www.docugenerate.com/fr/integrations/xano/">Xano et DocuGenerate</a>, réfléchissez à la façon de personnaliser ce flux de travail selon vos besoins spécifiques. Que vous gériez de petits événements communautaires ou de grandes conférences, ce système de billetterie automatisé offre une base solide qui peut évoluer avec vos besoins.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://www.xano.com/snippet/be03h9xT/" target="_blank" rel="noopener">Snippet Xano DocuGenerate</a> pour les fonctionnalités de génération de documents.</li> <li>L’<a href="https://demo.xano.com/xano-events/" target="_blank" rel="nofollow noopener">application de démonstration Events</a> pour tester le système de gestion d’événements.</li> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/RSVP Event Ticket.docx" target="_blank">RSVP Event Ticket</a> utilisé dans ce tutoriel.</li> <li>Un exemple de <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/Ticket for John Silver.pdf" target="_blank">billet PDF généré</a> créé par le flux de travail.</li> <li>Le flux de travail complet <a href="https://www.docugenerate.com/assets/posts/020-xano-events-rsvp/trigger-xanoscript.txt" target="_blank">XanoScript</a> pour le déclencheur de base de données.</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[Découvrez comment générer automatiquement des billets PDF d'événements lorsque les participants confirment leur présence à vos événements avec Xano et DocuGenerate. Ce tutoriel complet vous guide à travers la configuration des déclencheurs de base de données et la création d'un flux de travail complet de billetterie d'événements.]]></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">Comment Créer des Factures PDF ZUGFeRD / Factur-X avec DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/comment-creer-des-factures-pdf-zugferd-factur-x-avec-docugenerate/" rel="alternate" type="text/html" title="Comment Créer des Factures PDF ZUGFeRD / Factur-X avec DocuGenerate"/> <published>2025-03-08T00:00:00+00:00</published> <updated>2025-03-08T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/comment-creer-des-factures-pdf-zugferd-factur-x-avec-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/comment-creer-des-factures-pdf-zugferd-factur-x-avec-docugenerate/"><![CDATA[<h2 id="qu-est-ce-que-la-facturation-electronique">Qu’est-ce que la Facturation Électronique?</h2> <p>La <strong>facturation électronique (e-invoicing)</strong> est l’échange de documents de facturation entre fournisseurs et acheteurs dans un format électronique structuré. Contrairement aux factures papier traditionnelles ou aux simples fichiers PDF envoyés par e-mail, les factures électroniques contiennent des données structurées qui peuvent être traitées automatiquement par les systèmes comptables, réduisant la saisie manuelle et améliorant la précision.</p> <p>L’Union européenne encourage l’adoption de la facturation électronique à travers diverses directives et normes. En Allemagne, la facturation électronique devient obligatoire pour les transactions B2B à partir du 1er janvier 2025, tandis que la France l’exigera dès septembre 2026. Ces réglementations visent à améliorer l’efficacité, réduire les coûts et renforcer la conformité fiscale sur le marché européen.</p> <p>Les factures électroniques se présentent généralement sous différents formats, mais l’une des approches les plus répandues est le <strong>format hybride</strong>, qui combine des éléments lisibles par l’humain et par la machine dans un seul document. Cette approche garantit la compatibilité avec les flux de travail existants tout en permettant un traitement automatisé. La génération de factures électroniques peut être intégrée dans divers flux de travail métier :</p> <ul> <li><strong>Intégration ERP</strong> : Déclencher la génération de factures électroniques lorsque les factures sont approuvées dans votre système ERP</li> <li><strong>Plateformes E-commerce</strong> : Générer automatiquement des factures électroniques pour les commandes en ligne</li> <li><strong>Systèmes d’Abonnement</strong> : Créer des factures électroniques récurrentes pour les services par abonnement</li> <li><strong>Gestion de Projet</strong> : Générer des factures électroniques en fonction des jalons de projet terminés</li> </ul> <h2 id="comprendre-les-formats-hybrides">Comprendre les Formats de Facture Électronique Hybrides</h2> <p>Les formats de facture électronique hybrides offrent le meilleur des deux mondes : ils conservent la présentation PDF familière, lisible et compréhensible par l’humain, tout en intégrant des données XML structurées que les machines peuvent traiter automatiquement. Les exemples les plus représentatifs de cette approche sont <a href="https://www.mustangproject.org/zugferd/" target="_blank" rel="nofollow noopener">ZUGFeRD</a> (développé en Allemagne) et <a href="https://fnfe-mpe.org/factur-x/" target="_blank" rel="nofollow noopener">Factur-X</a> (développé en France), qui ont été harmonisés et constituent désormais essentiellement la même norme.</p> <h3 id="composants-cles">Composants Clés des Factures Électroniques Hybrides</h3> <p>Une facture électronique hybride se compose de plusieurs éléments essentiels :</p> <ul> <li> <p><strong>Document PDF/A-3</strong> : La représentation visuelle de la facture, qui ressemble à une facture traditionnelle. Le PDF/A-3 est spécifiquement choisi car il prend en charge les pièces jointes intégrées tout en garantissant des capacités d’archivage à long terme.</p> </li> <li> <p><strong>Fichier XML Intégré</strong> : Données structurées lisibles par machine contenant toutes les informations de la facture dans un format standardisé. Ce XML suit des normes internationales comme UN/CEFACT Cross Industry Invoice (CII).</p> </li> <li> <p><strong>Métadonnées</strong> : Métadonnées spéciales intégrées dans le PDF qui identifient le document comme une facture électronique et fournissent des informations sur la structure du XML intégré.</p> </li> <li> <p><strong>Signatures Numériques</strong> : Signatures cryptographiques optionnelles garantissant l’intégrité et l’authenticité du document.</p> </li> </ul> <h3 id="normes-et-conventions-de-nommage">Normes et Conventions de Nommage</h3> <p>Différentes normes de facturation électronique exigent des conventions de nommage spécifiques pour les fichiers XML intégrés :</p> <ul> <li><strong>ZUGFeRD 1.0</strong> : Le fichier XML doit être nommé <code class="language-plaintext highlighter-rouge">ZUGFeRD-invoice.xml</code></li> <li><strong>ZUGFeRD 2.0</strong> : Le fichier XML doit être nommé <code class="language-plaintext highlighter-rouge">zugferd-invoice.xml</code></li> <li><strong>ZUGFeRD 2.1 et Factur-X</strong> : Le fichier XML doit être nommé <code class="language-plaintext highlighter-rouge">factur-x.xml</code></li> <li><strong>FatturaPA italienne</strong> : Doit correspondre à l’identifiant de la facture, par ex. <code class="language-plaintext highlighter-rouge">IT01234567890_00001.xml</code></li> </ul> <p>Pour la plupart des implémentations européennes, suivre la norme Factur-X avec le nom de fichier <code class="language-plaintext highlighter-rouge">factur-x.xml</code> offre la compatibilité la plus large.</p> <h2 id="approche-docugenerate">L’Approche de DocuGenerate pour la Facturation Électronique</h2> <p>DocuGenerate propose une solution pratique pour générer des factures électroniques en se concentrant sur l’aspect génération de PDF, tout en prenant en charge les <a href="https://www.docugenerate.com/fr/aide/articles/est-il-possible-d-ajouter-des-pieces-jointes-aux-pdf/">pièces jointes XML</a> via son API. Cette approche reconnaît que si le PDF peut être généré dynamiquement à partir de modèles, la structure XML nécessite souvent une validation et une vérification de conformité spécialisées, mieux gérées par des systèmes dédiés.</p> <h3 id="processus-en-deux-etapes">Processus en Deux Étapes</h3> <p>La création de factures électroniques conformes avec DocuGenerate implique un processus en deux étapes :</p> <p><strong>1. Générer la Structure XML</strong> : Utilisez des bibliothèques ou services spécialisés de facturation électronique pour créer des données XML conformes aux normes requises (ZUGFeRD, Factur-X, etc.).</p> <p><strong>2. Générer le PDF avec XML Intégré</strong> : Utilisez DocuGenerate pour créer la facture PDF en joignant le fichier XML préalablement généré.</p> <p>Cette séparation des responsabilités garantit que chaque composant répond à ses exigences spécifiques : le XML maintient une stricte conformité aux normes de facturation électronique, tandis que le PDF offre une présentation professionnelle et une flexibilité de marque.</p> <h3 id="considerations-generation-xml">Considérations sur la Génération du XML</h3> <p>Le composant XML d’une facture électronique doit être soigneusement conçu pour garantir la conformité à la norme choisie. Les principales considérations incluent :</p> <ul> <li><strong>Précision des Données</strong> : Toutes les valeurs du XML doivent correspondre exactement à celles affichées dans le PDF.</li> <li><strong>Validation</strong> : Le XML doit être validé par rapport au schéma XSD et aux règles Schematron appropriés.</li> <li><strong>Sélection du Profil</strong> : Choisissez le profil approprié (Minimum, Basic, EN16931, Extended) selon vos besoins.</li> <li><strong>Listes de Codes</strong> : Utilisez les listes de codes correctes pour les pays, devises, catégories fiscales et autres valeurs standardisées.</li> </ul> <h2 id="mise-en-oeuvre-generation">Mettre en Œuvre la Génération de Factures Électroniques</h2> <p>Voyons une implémentation pratique de la génération de factures électroniques en utilisant l’API de DocuGenerate avec des pièces jointes PDF.</p> <h3 id="preparer-modele">Étape 1 : Préparer Votre Modèle de Facture</h3> <p>Créez un modèle de facture professionnel dans Microsoft Word ou un autre format pris en charge. Le modèle doit inclure des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> pour tout le contenu dynamique qui sera renseigné à partir de votre source de données. Comme illustré dans le modèle ci-dessous, vous devrez placer stratégiquement les balises de fusion dans le document pour capturer toutes les informations de facturation nécessaires.</p> <p><img src="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/invoice-template.png" alt="Modèle Word de la facture"/></p> <p>Le <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.docx">modèle de facture</a> présenté dans ce tutoriel inclut les balises de fusion suivantes :</p> <p><strong>Informations Client :</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[Company Name]</code> - Le nom de l’entreprise du client</li> <li><code class="language-plaintext highlighter-rouge">[Street Address]</code> - L’adresse du client</li> <li><code class="language-plaintext highlighter-rouge">[City]</code> - La ville du client</li> <li><code class="language-plaintext highlighter-rouge">[State]</code> - L’état ou la région du client</li> <li><code class="language-plaintext highlighter-rouge">[Zip Code]</code> - Le code postal du client</li> </ul> <p><strong>Détails de la Facture :</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[Invoice No]</code> - Identifiant unique de la facture</li> <li><code class="language-plaintext highlighter-rouge">[Invoice Date]</code> - Date d’émission de la facture</li> </ul> <p><strong>Éléments de Ligne (avec la syntaxe de liste) :</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[#Items]...[/]</code> - Structure de boucle pour plusieurs lignes de facture</li> <li><code class="language-plaintext highlighter-rouge">[Description]</code> - Description du produit ou du service</li> <li><code class="language-plaintext highlighter-rouge">[Quantity]</code> - Nombre d’unités</li> <li><code class="language-plaintext highlighter-rouge">[Price]</code> - Prix unitaire</li> <li><code class="language-plaintext highlighter-rouge">[Amount]</code> - Montant total de la ligne</li> </ul> <p><strong>Totaux :</strong></p> <ul> <li><code class="language-plaintext highlighter-rouge">[Sub Total]</code> - Somme de toutes les lignes avant taxes</li> <li><code class="language-plaintext highlighter-rouge">[Tax Rate]</code> - Taux de taxe en pourcentage</li> <li><code class="language-plaintext highlighter-rouge">[Tax Total]</code> - Montant total des taxes</li> <li><code class="language-plaintext highlighter-rouge">[Total]</code> - Total final de la facture, taxes incluses</li> </ul> <h3 id="preparer-donnees">Étape 2 : Préparer Vos Données de Facture</h3> <p>Avant de générer la facture, vous devez préparer vos données au format JSON. Les clés JSON doivent correspondre exactement aux balises de fusion de votre modèle pour une substitution correcte. Chaque clé correspond à une balise de fusion dans le modèle - par exemple, la clé JSON <code class="language-plaintext highlighter-rouge">"Company Name"</code> remplacera la balise de fusion <code class="language-plaintext highlighter-rouge">[Company Name]</code> dans le document.</p> <p>Voici un exemple de <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/invoice-data.json">données JSON</a> correspondant à notre modèle de facture :</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>Remarquez comment le tableau <code class="language-plaintext highlighter-rouge">Items</code> contient plusieurs objets, chacun représentant une ligne de la facture. Cette structure fonctionne avec la syntaxe de boucle <code class="language-plaintext highlighter-rouge">[#Items]...[/]</code> dans le modèle pour générer <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-tableaux-a-un-modele/">plusieurs lignes</a> dans le tableau de la facture.</p> <h3 id="generer-xml">Étape 3 : Générer un XML Conforme</h3> <p>Avant de créer le PDF, vous devez générer la structure XML qui sera intégrée dans le PDF. Toutes les valeurs du fichier XML doivent correspondre aux valeurs correspondantes de votre jeu de données JSON qui alimente le PDF, comme les numéros de facture, les montants, les dates, les lignes et les totaux. Toute divergence entre les données du PDF et du XML peut entraîner des échecs de validation ou des problèmes de traitement chez les systèmes destinataires.</p> <p>Voici un exemple simplifié de ce à quoi pourrait ressembler une structure XML Factur-X :</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>Vous pouvez enrichir votre modèle et votre XML avec des informations métier supplémentaires telles que :</p> <ul> <li><strong>Informations de Paiement</strong> : Coordonnées bancaires IBAN, numéros de routage ACH, conditions de paiement</li> <li><strong>Coordonnées de Contact</strong> : Personnes de contact pour l’acheteur et le vendeur</li> <li><strong>Numéros de Référence</strong> : Numéros de bon de commande, références de bon de livraison, numéros de contrat</li> <li><strong>Adresses Supplémentaires</strong> : Adresses de livraison, adresses de facturation différentes de l’adresse de l’entreprise</li> <li><strong>Détails Fiscaux</strong> : Taux de taxe multiples, exonérations fiscales, indicateurs d’autoliquidation</li> </ul> <h3 id="creer-pdf-xml">Étape 4 : Créer le PDF avec XML Intégré</h3> <p>Une fois votre fichier XML prêt, vous pouvez le joindre au PDF grâce à la <a href="https://www.docugenerate.com/fr/aide/articles/est-il-possible-d-ajouter-des-pieces-jointes-aux-pdf/">fonctionnalité de pièces jointes PDF</a> de DocuGenerate. L’API prend en charge deux méthodes pour fournir le fichier XML :</p> <ol> <li><strong>URL Directe</strong> : Si votre fichier XML est hébergé en ligne, vous pouvez fournir l’URL directe</li> <li><strong>URI de Données Base64</strong> : Pour les fichiers locaux ou lorsque vous souhaitez intégrer le contenu directement</li> </ol> <p>Pour l’approche Base64, le format de l’URI de données doit être <code class="language-plaintext highlighter-rouge">data:text/xml;name=factur-x.xml;base64,{BASE64_ENCODED_XML}</code> et vous pouvez utiliser divers <a href="https://www.base64encode.org/" target="_blank" rel="nofollow noopener">outils en ligne</a> ou utilitaires en ligne de commande pour convertir votre fichier XML en Base64. Pour l’exemple XML présenté ci-dessus, vous pouvez utiliser le <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/factur-x-base64.txt">fichier XML Base64</a> pré-encodé correspondant à nos données d’exemple.</p> <p>Voici comment utiliser l’API de DocuGenerate pour générer la facture PDF avec le XML joint :</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>La valeur <code class="language-plaintext highlighter-rouge">name=factur-x.xml</code> est une partie importante du paramètre <code class="language-plaintext highlighter-rouge">attach</code>, car elle spécifie le nom de fichier de la pièce jointe conformément au <a href="#normes-et-conventions-de-nommage">schéma de nommage</a> Factur-X requis par la norme. De plus, l’utilisation du format de sortie <code class="language-plaintext highlighter-rouge">.pdf/a-3b</code> est nécessaire pour créer un document conforme PDF/A-3, requis par les normes de facturation électronique car il prend en charge les pièces jointes intégrées tout en garantissant des capacités d’archivage à long terme.</p> <h3 id="valider-resultat">Étape 5 : Valider le Résultat</h3> <p>Après la génération, le <a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.pdf">PDF résultant</a> contient une facture professionnelle correspondant à votre modèle, ainsi que le fichier XML intégré. Vous pouvez vérifier la pièce jointe en ouvrant le PDF dans un lecteur prenant en charge les pièces jointes, comme Adobe Acrobat Reader, où vous verrez le fichier <code class="language-plaintext highlighter-rouge">factur-x.xml</code> listé dans le panneau <strong>Pièces Jointes</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/generated-invoice.png" alt="PDF généré avec pièce jointe XML visible"/></p> <h2 id="bonnes-pratiques">Bonnes Pratiques pour la Mise en Œuvre de la Facturation Électronique</h2> <h3 id="coherence-des-donnees">Cohérence des Données</h3> <p>Maintenir une synchronisation parfaite entre la présentation PDF et les données XML intégrées est l’un des aspects les plus critiques de la mise en œuvre de la facturation électronique. Comme les destinataires peuvent utiliser soit le PDF visuel, soit le XML structuré pour le traitement, toute incohérence peut entraîner des retards de paiement, des problèmes de conformité, voire un rejet pur et simple par les systèmes automatisés.</p> <p>Assurez-vous que tous les montants, dates et autres informations critiques sont identiques entre le PDF et le XML intégré. Accordez une attention particulière aux calculs, montants de taxes et totaux, car ce sont souvent les premiers éléments validés par les systèmes destinataires. Toute divergence peut entraîner des échecs de validation ou des problèmes de traitement.</p> <h3 id="gestion-des-erreurs">Gestion des Erreurs</h3> <p>Une gestion robuste des erreurs est essentielle pour maintenir la fiabilité du système et garantir des opérations fluides lors du traitement de volumes importants de factures. Les systèmes de facturation électronique font face à des défis particuliers car ils doivent coordonner plusieurs composants (génération XML, création PDF et processus de pièces jointes) tout en respectant des exigences de conformité strictes. Mettez en place une gestion complète des erreurs pour la génération XML et la création PDF, avec une journalisation et des mécanismes de récupération appropriés. Les problèmes courants incluent :</p> <ul> <li>Structure XML invalide ou champs requis manquants</li> <li>Erreurs de calcul entre les montants du PDF et du XML</li> <li>Nommage de fichier ou paramètres de pièce jointe incorrects</li> <li>Erreurs de rendu du modèle</li> </ul> <h3 id="tests-et-validation">Tests et Validation</h3> <p>Des tests approfondis sont essentiels pour les systèmes de facturation électronique, car les échecs de conformité peuvent entraîner des problèmes juridiques, des retards de paiement et une détérioration des relations commerciales. Contrairement à la génération de documents traditionnelle, les factures électroniques doivent passer plusieurs niveaux de validation, incluant la validation technique du XML, la vérification des règles métier et la vérification de la conformité réglementaire. Avant de déployer votre système de facturation électronique, établissez une stratégie de test complète couvrant à la fois les scénarios techniques et métier :</p> <ul> <li>Valider les fichiers XML par rapport aux schémas XSD officiels et aux règles Schematron</li> <li>Tester avec divers scénarios de facturation (devises, taux de taxe, lignes différentes)</li> <li>Vérifier la conformité PDF/A-3b à l’aide d’outils de validation</li> <li>Tester avec les systèmes destinataires pour garantir un traitement correct</li> </ul> <h2 id="perenniser-systeme">Pérenniser Votre Système de Facturation Électronique</h2> <h3 id="evolution-des-normes">Évolution des Normes</h3> <p>Les normes de facturation électronique continuent d’évoluer rapidement, les gouvernements et organisations internationales affinant leurs exigences. Des mises à jour régulières des listes de codes et des règles de validation surviennent semestriellement dans de nombreuses juridictions, tandis que de nouvelles exigences de profils et fonctionnalités optionnelles sont introduites pour répondre aux besoins du secteur et à l’interopérabilité transfrontalière. Des améliorations en matière de signature numérique et de sécurité sont également développées pour faire face aux menaces de cybersécurité et garantir l’authenticité des documents.</p> <h3 id="changements-reglementaires">Changements Réglementaires</h3> <p>Les gouvernements du monde entier mettent en œuvre des obligations de facturation électronique à des rythmes différents, l’obligation B2B allemande débutant en 2025 et la France suivant en 2026. Des changements dans les exigences de déclaration fiscale accompagnent souvent ces obligations, nécessitant une transmission en temps réel des données de facturation aux autorités fiscales. De nouvelles obligations de conformité et d’archivage sont introduites, tandis que les mesures de facilitation du commerce transfrontalier exigent que les systèmes prennent en charge plusieurs normes simultanément.</p> <h3 id="ameliorations-technologiques">Améliorations Technologiques</h3> <p>Les technologies émergentes transforment le paysage de la facturation électronique avec de nouvelles opportunités d’automatisation, de sécurité et d’efficacité. Les systèmes de vérification basés sur la blockchain fournissent des pistes d’audit immuables, tandis que les outils d’extraction de données alimentés par l’IA améliorent la précision du traitement et réduisent l’intervention manuelle. Les capacités de calcul fiscal en temps réel permettent une conformité automatique dans plusieurs juridictions, et des solutions mobiles améliorées offrent des options de facturation plus flexibles. Concevoir des systèmes avec l’extensibilité à l’esprit permet d’intégrer plus facilement ces avancées à mesure qu’elles arrivent à maturité.</p> <h2 id="conclusion">Conclusion</h2> <p>Construire un système de facturation électronique robuste avec DocuGenerate offre une voie pratique vers la conformité aux exigences européennes et mondiales de facturation électronique. En séparant la <a href="#generer-xml">création du XML</a> de la <a href="#creer-pdf-xml">génération du PDF</a>, vous pouvez garantir à la fois la conformité technique et la flexibilité de présentation. Cette approche hybride, combinant des données XML structurées avec une présentation PDF professionnelle, offre la meilleure expérience utilisateur tout en respectant les exigences réglementaires.</p> <p>Que vous mettiez en œuvre la facturation électronique pour une petite entreprise ou une grande entreprise, les principes et modèles présentés dans ce guide constituent une base solide pour réussir. À mesure que la facturation électronique devient obligatoire sur de plus en plus de marchés, disposer d’un système évolutif et conforme vous procurera des avantages concurrentiels significatifs. N’oubliez pas de rester à jour avec l’évolution des normes, de valider rigoureusement vos implémentations et de concevoir pour l’évolutivité dès le départ.</p> <h3 id="ressources">Ressources</h3> <ul> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.docx">Modèle de Facture</a> - Téléchargez le modèle Word utilisé dans ce tutoriel.</li> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/invoice-data.json">Exemple de Données JSON</a> - Téléchargez l’exemple de données de facture utilisé dans ce tutoriel.</li> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/factur-x.xml">Exemple de Fichier XML</a> - Téléchargez le fichier XML utilisé dans ce tutoriel.</li> <li><a href="https://www.docugenerate.com/assets/posts/019-e-invoice-pdf-xml/Factur-X Invoice.pdf">Exemple de PDF Généré</a> - Téléchargez le PDF complet avec la pièce jointe XML intégrée.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/est-il-possible-d-ajouter-des-pieces-jointes-aux-pdf/">Documentation sur les Pièces Jointes PDF</a> - Découvrez comment intégrer des fichiers dans des PDF.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/puis-je-creer-des-pdf-conformes-factur-x/">Documentation sur les PDF Factur-X</a> - Découvrez comment créer des PDF conformes Factur-X.</li> <li><a href="https://www.mustangproject.org/zugferd/" target="_blank" rel="nofollow noopener">Spécification ZUGFeRD</a> - Documentation officielle ZUGFeRD.</li> <li><a href="https://fnfe-mpe.org/factur-x/" target="_blank" rel="nofollow noopener">Norme Factur-X</a> - Spécifications du format hybride franco-allemand.</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[Découvrez comment créer des factures PDF hybrides Factur-X conformes avec des fichiers XML intégrés. Explorez les exigences, les normes et les approches de mise en œuvre pour ZUGFeRD, Factur-X et d'autres formats de facturation électronique utilisés en Europe et dans le monde.]]></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">Automatiser la Création de Pleading Papers avec Make et DocuGenerate</title> <link href="https://www.docugenerate.com/fr/blog/automatiser-la-creation-de-pleading-papers-avec-make-et-docugenerate/" rel="alternate" type="text/html" title="Automatiser la Création de Pleading Papers avec Make et DocuGenerate"/> <published>2025-02-21T00:00:00+00:00</published> <updated>2025-02-21T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/automatiser-la-creation-de-pleading-papers-avec-make-et-docugenerate</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/automatiser-la-creation-de-pleading-papers-avec-make-et-docugenerate/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Les professionnels du droit font face à un défi constant : le processus chronophage de conversion des informations clients en documents judiciaires correctement formatés. L’un des documents les plus fondamentaux du contentieux civil est le pleading paper, qui constitue la base de la présentation des affaires devant le tribunal. Créer ces documents manuellement à partir de formulaires de prise en charge client implique une saisie de données répétitive, du formatage, et un risque important d’erreur humaine.</p> <p>Un pleading paper est un document judiciaire déposé au début d’une affaire qui présente la position de votre client, qu’il s’agisse d’une demande ou d’une défense. Ce document démontre clairement au tribunal et aux parties adverses ce qui se serait produit, en fournissant le fondement factuel de votre dossier. Bien que les pleading papers ne contiennent pas toutes les preuves que vous présenterez au procès, ils établissent le cadre essentiel qui définit ce qui doit être prouvé si l’affaire devait être jugée.</p> <p>Ce tutoriel vous montrera comment créer un flux de travail automatisé qui transforme directement les données de prise en charge client en pleading papers correctement formatés. Nous utiliserons trois outils puissants : <a href="https://www.typeform.com/" target="_blank" rel="nofollow noopener">Typeform</a> pour la collecte des données clients, <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> pour l’automatisation du flux de travail, et <a href="https://www.docugenerate.com/">DocuGenerate</a> pour la génération de documents. Le système résultant créera automatiquement des pleading papers en PDF et les stockera dans Dropbox pour un accès facile et une distribution aux clients.</p> <p>Bien que les implémentations réelles puissent s’intégrer à des systèmes spécialisés de gestion de dossiers juridiques, ce tutoriel utilise des outils accessibles qui démontrent les principes fondamentaux. Le flux de travail d’automatisation que nous allons construire peut facilement être adapté pour fonctionner avec des plateformes logicielles juridiques plus sophistiquées, ou modifié pour envoyer les documents vers différents systèmes de stockage selon les besoins spécifiques de votre cabinet.</p> <h2 id="exigences-pleading-papers">Comprendre les Exigences des Pleading Papers</h2> <p>Avant de se lancer dans l’automatisation, il est important de comprendre les différents types de pleading papers et leur utilisation dans le contentieux civil. Les différentes phases d’une affaire nécessitent différents documents de procédure, chacun ayant un objectif juridique spécifique.</p> <p>Les pleading papers les plus courants incluent les <strong>Complaints</strong> (plaintes), qui présentent le dossier du plaignant avec des descriptions détaillées des actions du défendeur et des demandes de dommages-intérêts ; les <strong>Answers</strong> (réponses), qui répondent aux plaintes dans des délais spécifiés et peuvent inclure des moyens de défense affirmatifs ; les <strong>Counterclaims</strong> (demandes reconventionnelles), où les défendeurs réclament leurs propres dommages-intérêts pour le même incident ; et diverses <strong>Pre-Trial Motions</strong> (requêtes préalables au procès) qui traitent des questions de preuve ou demandent le rejet de l’affaire.</p> <p>Chaque pleading paper doit respecter des exigences de formatage strictes qui varient selon la juridiction, mais qui incluent généralement une <strong>police</strong> spécifique (Times New Roman), des <strong>marges</strong> (2,5 cm sur tous les côtés pour un espacement correct), un <strong>interligne</strong> (double pour faciliter la lecture et l’annotation), et d’autres éléments structurels tels que des <strong>numéros de ligne</strong>. Comprendre ces exigences est essentiel pour créer des modèles qui seront acceptés par le tribunal.</p> <h2 id="creer-le-modele">Créer le Modèle de Pleading Paper</h2> <p>La base de notre système automatisé est un modèle de pleading paper correctement structuré qui inclut des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> pour l’insertion dynamique de données. La création de ce modèle nécessite une attention particulière aux normes de formatage juridique et aux détails techniques d’implémentation.</p> <p>Pour ce tutoriel, nous utiliserons un document Microsoft Word standard, <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/Pleading Paper.docx">Pleading Paper</a>, qui sera téléversé manuellement pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créer un modèle</a> sur DocuGenerate.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/pleading-paper-template.png" alt="Structure du Modèle Pleading Paper"/></p> <p>La structure du modèle inclut des balises de fusion spécifiques qui seront remplies avec les données de notre formulaire de prise en charge client. Les balises clés de notre modèle sont :</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>, et <code class="language-plaintext highlighter-rouge">[FAX]</code> pour les informations de contact de l’avocat ;</li> <li><code class="language-plaintext highlighter-rouge">[COURT NAME]</code> et <code class="language-plaintext highlighter-rouge">[JURISDICTION]</code> pour les détails du tribunal ;</li> <li><code class="language-plaintext highlighter-rouge">[PLAINTIFFS NAME]</code> et <code class="language-plaintext highlighter-rouge">[DEFENDANTS NAME]</code> pour l’identification des parties ;</li> <li><code class="language-plaintext highlighter-rouge">[NUMBER]</code> pour le numéro de dossier ;</li> <li><code class="language-plaintext highlighter-rouge">[PLEADING TITLE]</code> pour le type spécifique de pleading ;</li> <li><code class="language-plaintext highlighter-rouge">[BODY OF PLEADING]</code> pour le contenu principal ;</li> <li><code class="language-plaintext highlighter-rouge">[DATE]</code> pour la date de dépôt.</li> </ul> <p>Cette structure de modèle garantit que tous les éléments essentiels du document juridique sont présents tout en conservant la flexibilité nécessaire pour traiter différents types de pleading papers. Les champs d’informations sur l’avocat contiendront généralement des données statiques qui restent cohérentes pour tous les documents générés par votre cabinet, tandis que les champs spécifiques à l’affaire seront remplis dynamiquement à partir des réponses du formulaire de prise en charge client.</p> <h2 id="configurer-typeform">Configurer le Formulaire de Prise en Charge Client avec Typeform</h2> <p>L’étape suivante de notre flux de travail d’automatisation consiste à créer un formulaire de prise en charge client qui capture toutes les informations nécessaires à la génération des pleading papers. Nous utiliserons la fonctionnalité de création de formulaires par IA de Typeform pour créer rapidement un formulaire professionnel correspondant aux balises de fusion de notre modèle.</p> <h3 id="generateur-ia-typeform">Utiliser le Générateur de Formulaires IA de Typeform</h3> <p>Typeform propose un <a href="https://help.typeform.com/hc/en-us/articles/14955071444244-Use-AI-to-create-forms" target="_blank" rel="nofollow noopener">outil de création de formulaires par IA</a> capable de générer des formulaires à partir de descriptions en langage naturel. Cette approche est particulièrement utile pour les professionnels du droit qui souhaitent se concentrer sur le contenu plutôt que sur la conception du formulaire. Le processus de création de formulaire par IA comporte trois étapes où vous pouvez préciser vos besoins à l’aide d’instructions descriptives.</p> <p>Pour la première étape, <strong>Describe your form</strong>, nous utiliserons l’instruction suivante : <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> Cela donne le contexte nécessaire pour comprendre l’objectif juridique du formulaire et son cas d’usage prévu.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/typeform-ai-form-v2.png" alt="Interface de Création de Formulaire IA Typeform"/></p> <p>Dans la deuxième étape, <strong>Add important topics</strong>, nous préciserons les champs exacts nécessaires : <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>Remarquez que nous excluons délibérément les champs d’informations de contact de l’avocat du formulaire de prise en charge. Ces informations restent généralement statiques pour chaque cabinet et peuvent être codées en dur dans notre flux de travail d’automatisation plutôt que collectées auprès des clients, réduisant ainsi la complexité du formulaire tout en maintenant l’exactitude des données.</p> <h3 id="structure-test-formulaire">Structure et Test du Formulaire de Prise en Charge Client</h3> <p>L’IA de Typeform génère avec succès un formulaire de prise en charge complet avec des types de champs appropriés pour chaque donnée. La plupart des champs utilisent le type de saisie <strong>Short Text</strong> pour les noms, numéros et titres, tandis que le champ <strong>Body of Pleading</strong> utilise un type de saisie <strong>Long Text</strong> pour accueillir un contenu juridique multi-paragraphes pouvant s’étendre sur plusieurs lignes.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/client-intake-form.png" alt="Structure du Formulaire de Prise en Charge Client Généré"/></p> <p>Le formulaire résultant offre une interface conviviale permettant aux clients de soumettre les informations de leur dossier. Chaque question est clairement libellée et correspond directement aux balises de fusion de notre modèle de pleading paper. Vous pouvez tester le fonctionnement du formulaire via ce lien <a href="https://form.typeform.com/to/U7qVSqcZ" target="_blank" rel="nofollow noopener">Client Intake Form</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/client-intake-form-v2.gif" alt="Processus de Remplissage du Formulaire de Prise en Charge Client"/></p> <p>La conception du formulaire met l’accent sur la clarté et la facilité d’utilisation, ce qui est essentiel lors de la collecte d’informations auprès de clients qui ne sont pas nécessairement familiers avec la terminologie juridique. Chaque champ inclut un contexte utile pour garantir que les clients fournissent les informations dans le format attendu par le système judiciaire.</p> <h2 id="scenario-automatisation-make">Créer le Scénario d’Automatisation Make</h2> <p>Nous allons maintenant créer le scénario d’automatisation Make qui relie tous nos composants entre eux. Ce flux de travail détectera automatiquement les nouvelles soumissions Typeform, générera les pleading papers avec DocuGenerate, et stockera les documents résultants dans Dropbox. Le scénario complet implique quatre composants principaux fonctionnant en séquence pour créer un pipeline de génération de documents entièrement automatisé.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/make-scenario.png" alt="Scénario d'Automatisation Make Complet"/></p> <h3 id="declencheur-typeform">Configurer le Déclencheur Typeform</h3> <p>L’automatisation commence par le déclencheur <strong>Watch Responses</strong> de l’ <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">intégration Typeform</a>. Ce déclencheur surveille votre <a href="#structure-test-formulaire">Client Intake Form</a> pour détecter les nouvelles soumissions et lance le flux de travail chaque fois qu’un client remplit le formulaire. La configuration de ce déclencheur est simple et nécessite de connecter votre compte Typeform à Make.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/typeform-trigger-add.png" alt="Ajout du Déclencheur Typeform au Scénario Make"/></p> <p>Après avoir établi la connexion Typeform, configurez le déclencheur <strong>Watch Responses</strong> en sélectionnant votre <strong>Client Intake Form</strong> dans la liste déroulante <strong>Form ID</strong>. Les autres paramètres peuvent conserver leurs valeurs par défaut, qui surveilleront les nouvelles réponses en temps réel. Cliquez sur <strong>Save</strong> pour terminer la configuration du déclencheur.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/typeform-trigger-configure.png" alt="Configuration du Déclencheur Watch Responses Typeform"/></p> <h3 id="configuration-docugenerate">Configurer l’Action de Génération de Document</h3> <p>Le composant suivant de notre flux de travail est l’action <strong>Generate Document</strong> du <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">module DocuGenerate</a>. Cette étape transforme les données du formulaire collectées en un pleading paper correctement formaté. Avant de configurer cette action, vous devrez établir une connexion à votre compte DocuGenerate en fournissant votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a>, que vous trouverez sur la page des paramètres de votre compte DocuGenerate.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/docugenerate-create-connection.png" alt="Création de la Connexion DocuGenerate dans Make"/></p> <p>La configuration de l’action DocuGenerate nécessite plusieurs paramètres clés qui contrôlent la génération du document. Tout d’abord, sélectionnez votre modèle <strong>Pleading Paper</strong> dans la liste déroulante <strong>Template</strong>. Pour le <strong>Name</strong> du document, créez un nom de fichier dynamique en combinant le numéro de dossier et le titre du pleading depuis la réponse du formulaire. Définissez le <strong>Format</strong> sur <strong>PDF (.pdf)</strong>, le format standard accepté par les systèmes judiciaires.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/docugenerate-action-config.png" alt="Configuration de l'Action DocuGenerate"/></p> <p>Le paramètre <strong>Data</strong> nécessite une configuration minutieuse car il associe les réponses du formulaire aux <a href="#creer-le-modele">balises de fusion du modèle</a>. Cette structure JSON combine les valeurs dynamiques issues de la soumission Typeform avec les informations statiques de l’avocat qui restent cohérentes pour tous les documents.</p> <h3 id="donnees-multi-lignes">Gérer les Valeurs de Données Multi-Lignes</h3> <p>Lors du test de notre scénario avec des données d’exemple issues du questionnaire Typeform, vous pourriez rencontrer une erreur spécifique liée au contenu multi-lignes du champ <strong>Body of Pleading</strong>. C’est un défi courant lorsqu’on travaille avec des documents juridiques contenant des sauts de paragraphe et du formatage de lignes. L’erreur apparaît généralement comme suit :</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="Erreur de Données Multi-Lignes dans Make"/></p> <p>Cette erreur se produit parce que le champ <strong>Body of Pleading</strong> peut contenir plusieurs lignes et sauts de paragraphe qui interfèrent avec l’analyse JSON. Lorsque les clients saisissent un contenu de pleading détaillé avec des sauts de ligne, ces caractères peuvent casser la structure JSON que Make utilise pour transmettre les données entre les modules.</p> <p>La solution consiste à prétraiter les données textuelles multi-lignes avant de les transmettre à DocuGenerate. Nous devons échapper les caractères de saut de ligne pour garantir qu’ils soient correctement gérés dans la structure JSON. Make propose des fonctions de manipulation de texte spécifiquement à cet effet.</p> <p>Pour implémenter cette correction, nous ajouterons une étape de traitement de texte utilisant la fonction <code class="language-plaintext highlighter-rouge">replace</code> de la catégorie <strong>Text and binary functions</strong> de Make. Cette fonction remplacera les caractères <code class="language-plaintext highlighter-rouge">newline</code> réels par des séquences de saut de ligne échappées <code class="language-plaintext highlighter-rouge">\n</code>, sûres pour la transmission JSON, tout en préservant le formatage original dans le document final.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/replace-newlines-function.png" alt="Utilisation de la Fonction Replace pour Gérer les Sauts de Ligne"/></p> <p>Après avoir implémenté cette étape de prétraitement, le module <strong>Generate Document</strong> s’exécute avec succès sans erreur d’analyse JSON. Le <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/DC-24-08756 - COMPLAINT FOR PERSONAL INJURY.pdf" target="_blank">Pleading Paper</a> résultant conserve les sauts de ligne et le formatage d’origine saisis par le client.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/generate-document-success.png" alt="Génération de Document Réussie"/></p> <h3 id="recuperer-document">Récupérer le Document Généré</h3> <p>Les derniers composants de notre flux de travail d’automatisation consistent à récupérer le <a href="#configuration-docugenerate">PDF généré</a> et à le stocker dans Dropbox pour un accès facile et une distribution aux clients. Tout d’abord, nous devons récupérer le fichier PDF généré à l’aide de l’action <strong>Get a file</strong> du <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">module HTTP natif de Make</a>.</p> <p>Dans le champ <strong>URL</strong>, indiquez la valeur <code class="language-plaintext highlighter-rouge">Document URL</code> renvoyée par l’étape DocuGenerate précédente. Cette URL dynamique pointe vers le PDF du pleading paper nouvellement généré. Le module HTTP téléchargera le contenu du fichier et le rendra disponible pour l’étape suivante de notre flux de travail.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/http-getfile-config-v3.png" alt="Configuration HTTP Get File"/></p> <h3 id="enregistrer-dropbox">Enregistrer le Fichier PDF dans Dropbox</h3> <p>La dernière étape consiste à téléverser le PDF récupéré vers Dropbox à l’aide de l’action <strong>Upload a File</strong> de l’<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">intégration Dropbox</a>. Dropbox est largement utilisé dans les cabinets juridiques pour le stockage sécurisé de documents et le partage de fichiers avec les clients, ce qui en fait un choix idéal pour stocker les pleading papers générés.</p> <p>Avant de configurer l’action de téléversement, assurez-vous d’avoir établi une connexion Dropbox dans Make. Cela nécessite de vous authentifier avec votre compte Dropbox et d’accorder à Make l’autorisation d’accéder à vos fichiers. Une fois connecté, configurez les paramètres de téléversement pour organiser efficacement vos documents générés.</p> <p>Pour le paramètre <strong>Folder</strong>, indiquez un répertoire dédié tel que <code class="language-plaintext highlighter-rouge">/Pleading Papers/</code> pour garder les documents générés organisés et facilement accessibles. Le paramètre <strong>File</strong> doit référencer les données de fichier de l’<a href="#recuperer-document">étape précédente</a>, plus précisément la sortie <strong>HTTP - Get a file</strong>. Cela garantit que le contenu PDF complet est téléversé vers votre stockage Dropbox.</p> <p><img src="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/dropbox-config.png" alt="Configuration du Téléversement Dropbox"/></p> <p>Avec cette configuration, votre flux de travail d’automatisation est complet. Chaque fois qu’un client soumet le formulaire de prise en charge, le système générera automatiquement un pleading paper correctement formaté et le stockera dans le dossier Dropbox désigné, prêt à être révisé, modifié et déposé auprès du tribunal compétent.</p> <h2 id="avantages-applications">Avantages et Applications Concrètes</h2> <p>Ce système automatisé de génération de pleading papers offre des avantages significatifs pour les cabinets juridiques de toutes tailles. Le principal avantage est la réduction drastique du temps de préparation des documents. Ce qui nécessitait auparavant une saisie manuelle des données, du formatage et une relecture peut désormais être accompli automatiquement en quelques minutes après la réception des informations du client.</p> <p>L’automatisation améliore également la précision en éliminant les erreurs de transcription manuelle. Les informations du client passent directement du formulaire de prise en charge au document final sans intervention humaine, réduisant le risque de fautes de frappe ou d’erreurs de saisie pouvant potentiellement impacter les procédures judiciaires. Cette cohérence est particulièrement précieuse lors du traitement de plusieurs affaires simultanément.</p> <p>Ce flux de travail peut facilement être adapté à différents types de documents juridiques au-delà des pleading papers. Les mêmes principes d’automatisation s’appliquent à la génération de réponses, de demandes reconventionnelles, de requêtes et d’autres documents judiciaires. Pour les cabinets plus importants, ce système peut s’intégrer aux logiciels de gestion de dossiers existants. Plutôt que d’utiliser Typeform pour la prise en charge, le flux de travail peut être déclenché par de nouvelles entrées dans les systèmes de gestion de cabinets juridiques, créant une solution d’automatisation plus complète.</p> <p>Les avantages financiers sont également substantiels. La réduction du temps consacré à la préparation des documents permet aux avocats de se concentrer sur un travail juridique à plus forte valeur ajoutée, ce qui peut améliorer l’efficacité des heures facturables. Pour les cabinets traitant un volume élevé d’affaires similaires, les gains de temps peuvent se traduire directement par une meilleure rentabilité.</p> <h2 id="conclusion">Conclusion</h2> <p>En combinant la création intuitive de formulaires de Typeform, les puissantes capacités d’automatisation de Make et la génération professionnelle de documents de DocuGenerate, les cabinets juridiques peuvent créer des systèmes robustes qui gèrent automatiquement la préparation des documents de routine. Cette approche permet non seulement de gagner du temps et de réduire les erreurs, mais aussi de permettre aux professionnels du droit de se concentrer sur les aspects stratégiques et analytiques de leur travail qui nécessitent réellement une expertise humaine.</p> <p>Le système que nous avons construit aujourd’hui peut servir de base à des initiatives d’automatisation plus complètes. À mesure que votre cabinet se développe et que vos besoins en automatisation évoluent, les mêmes principes peuvent être appliqués à d’autres types de documents, intégrés à des logiciels juridiques plus sophistiqués, ou enrichis d’étapes supplémentaires telles que des notifications par e-mail, la planification de calendriers, ou des mises à jour de portail client.</p> <p>Les professionnels du droit qui mettent en place ce type de systèmes d’automatisation constatent souvent que l’investissement initial en temps porte rapidement ses fruits grâce à une efficacité améliorée, une réduction des charges administratives et une satisfaction client accrue. Dans un marché juridique de plus en plus concurrentiel, ces améliorations opérationnelles peuvent offrir des avantages significatifs tout en maintenant les standards élevés de précision et de professionnalisme exigés par la pratique juridique.</p> <h2 id="ressources">Ressources</h2> <ul> <li>Le modèle <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/Pleading Paper.docx" target="_blank">Pleading Paper</a> utilisé dans ce tutoriel.</li> <li>Un exemple de <a href="https://www.docugenerate.com/assets/posts/018-make-pleading-papers/DC-24-08756 - COMPLAINT FOR PERSONAL INJURY.pdf" target="_blank">PDF généré</a> avec les données du Client Intake Form.</li> <li>Le <a href="https://form.typeform.com/to/U7qVSqcZ" target="_blank" rel="nofollow noopener">Client Intake Form</a> interactif créé sur Typeform.</li> <li>La page officielle de l’<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">intégration Typeform</a> de Make.</li> <li>La page officielle de l’<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">intégration DocuGenerate</a> de Make.</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[Transformez votre pratique juridique grâce à la génération automatisée de pleading papers. Découvrez comment créer un flux de travail efficace avec Make, Typeform et DocuGenerate qui convertit les données de prise en charge client en pleading papers correctement formatés et conformes aux standards professionnels.]]></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">Reconnu comme Top Performer Hiver 2025 par SourceForge</title> <link href="https://www.docugenerate.com/fr/blog/reconnu-comme-top-performer-hiver-2025-par-sourceforge/" rel="alternate" type="text/html" title="Reconnu comme Top Performer Hiver 2025 par SourceForge"/> <published>2025-01-24T00:00:00+00:00</published> <updated>2025-01-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/reconnu-comme-top-performer-hiver-2025-par-sourceforge</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/reconnu-comme-top-performer-hiver-2025-par-sourceforge/"><![CDATA[<h2 id="top-performer">Top Performer dans la catégorie PDF Generators</h2> <p>DocuGenerate est fier d’être nommé <strong>Top Performer Hiver 2025</strong> dans la catégorie <strong>PDF Generators</strong> par SourceForge, le plus grand site web de comparaison et d’avis logiciels au monde. Ce prix récompense les entreprises et produits exceptionnels ayant reçu un volume élevé d’avis utilisateurs récents et excellents, les plaçant dans le top dix pourcent des produits les mieux notés sur SourceForge.</p> <p>Pour remporter le prix Top Performer Hiver 2025, chaque lauréat devait recevoir suffisamment d’avis utilisateurs bien notés pour placer le produit gagnant dans le <strong>top 10 %</strong> des <strong>produits les mieux notés</strong> parmi les 100 000 produits de SourceForge, ce qui démontre le niveau de qualité exceptionnel que DocuGenerate offre à ses clients.</p> <h2 id="pourquoi-choisir-docugenerate">Pourquoi choisir DocuGenerate pour la génération de PDF?</h2> <p>DocuGenerate est un outil puissant de génération de documents conçu pour aider les entreprises et les professionnels à créer des <strong>PDF de haute qualité</strong> en toute simplicité. Que vous ayez besoin de générer des contrats, des factures, des accords ou des rapports, DocuGenerate vous permet d’automatiser ce processus à l’aide de modèles Word et de données dynamiques. Avec un accent mis sur la <strong>fiabilité et la scalabilité</strong>, DocuGenerate est idéal pour les équipes souhaitant simplifier leurs flux de travail documentaires sans modification manuelle.</p> <p>DocuGenerate est conçu pour l’automatisation, permettant aux utilisateurs de traiter de gros volumes de documents efficacement. Il offre également des intégrations fluides avec des plateformes no-code comme <a href="/fr/integrations/make/">Make</a>, <a href="/fr/integrations/zapier/">Zapier</a>, et <a href="/fr/integrations/bubble/">Bubble</a>, ainsi que des services backend comme <a href="/fr/integrations/xano/">Xano</a>. De plus, notre produit prend en charge des options de mise en forme avancées, la génération par lot, et l’export PDF/A pour la conservation de documents à long terme.</p> <p>Que vous soyez une startup, un cabinet juridique ou une entreprise gérant des milliers de documents par mois, DocuGenerate offre une solution flexible et <strong>rentable</strong> pour répondre à vos besoins de génération de documents.</p> <h2 id="avis-utilisateurs">Ce que disent nos utilisateurs</h2> <p>DocuGenerate a obtenu une note globale de <strong>5 étoiles</strong> auprès des utilisateurs sur SourceForge :</p> <p><img src="https://www.docugenerate.com/assets/posts/017-sourceforge-top-performer/docugenerate-review.png" alt="Note 5 étoiles sur SourceForge"/></p> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Le logiciel est simple et fait parfaitement son travail. C'est rapide et facile – aucune courbe d'apprentissage. Le support a également été fantastique lorsque j'avais des questions. </p> <h6> Source: <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> L'un des meilleurs services client et supports techniques que j'aie JAMAIS connus... C'est formidable d'avoir cette 'agréable sensation de confiance' en sachant qu'un partenaire dont vous dépendez pour servir vos propres clients se soucie du service qu'il fournit. </p> <h6> Source: <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> L'interface est intuitive et conviviale, ce qui la rend facile à prendre en main et à naviguer, même pour les débutants. DocuGenerate est devenu un élément central de notre travail quotidien et je n'imagine pas ce que je ferais sans lui. </p> <h6> Source: <a href="https://sourceforge.net/software/product/DocuGenerate/#review-671fcf6f8c9144fa306b2bb1" target="_blank"> SourceForge </a> </h6> </div> <p>Si DocuGenerate vous a aidé à simplifier vos flux de travail documentaires, nous aimerions beaucoup connaître votre avis ! Partagez votre expérience sur SourceForge <a href="https://sourceforge.net/software/product/DocuGenerate/reviews/new" target="_blank" rel="nofollow noopener">ici</a>.</p> <h2 id="a-propos-de-sourceforge">À propos de SourceForge</h2> <p><a href="https://sourceforge.net/" target="_blank" rel="nofollow noopener">SourceForge.net</a> est le plus grand annuaire de comparaison de logiciels au monde, servant près de 20 millions d’utilisateurs chaque mois et proposant des avis utilisateurs, des comparaisons de produits, des guides logiciels, et plus encore. La mission de SourceForge est d’aider les entreprises à trouver le meilleur logiciel adapté à leurs besoins et à leur budget. Il existe une grande variété d’outils logiciels disponibles pour les entreprises, avec des outils dans presque chaque catégorie et niche, chacun ayant un objectif légèrement différent.</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 est fier d'être lauréat du prix Top Performer dans la catégorie PDF Generators de SourceForge, le plus grand site web de comparaison et d'avis logiciels au monde. Nous sommes honorés d'être valorisés par nos clients et d'être reconnus par ce prix.]]></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">Créer une Version Simplifiée de DocuGenerate avec Bubble</title> <link href="https://www.docugenerate.com/fr/blog/creer-une-version-simplifiee-de-docugenerate-avec-bubble/" rel="alternate" type="text/html" title="Créer une Version Simplifiée de DocuGenerate avec Bubble"/> <published>2024-12-18T00:00:00+00:00</published> <updated>2024-12-18T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/creer-une-version-simplifiee-de-docugenerate-avec-bubble</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/creer-une-version-simplifiee-de-docugenerate-avec-bubble/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Automatiser la génération de documents peut considérablement améliorer votre productivité, en particulier lors de la gestion de plusieurs modèles et jeux de données. Bien que l’<a href="https://app.docugenerate.com/" target="_blank">application web</a> de DocuGenerate offre une solution complète, vous pourriez vouloir intégrer des capacités de génération de documents directement dans votre propre application Bubble.</p> <p>C’est pourquoi nous avons créé un <a href="https://www.docugenerate.com/fr/integrations/bubble/">plugin Bubble</a> qui vous permet d’exploiter la puissance de l’API DocuGenerate directement dans vos applications Bubble. Dans ce tutoriel, nous allons voir comment nous avons construit une version simplifiée de DocuGenerate avec Bubble et notre plugin - aucun code requis !</p> <h2 id="how-the-app-works">Comment Fonctionne l’Application</h2> <p>Pour mieux comprendre ce que nous allons construire, vous pouvez consulter la <a href="https://docugenerate-demo-app.bubbleapps.io/version-test/" target="_blank">démo Bubble</a>. L’animation ci-dessous montre un parcours utilisateur complet à travers l’application, de la création du modèle à la génération et au téléchargement du document.</p> <p><img src="https://www.docugenerate.com/assets/images/integrations/bubble/bubble-test-app-v2.gif" alt="Démo de l'application montrant le plugin DocuGenerate sur Bubble"/></p> <p>Le parcours utilisateur typique suit ces étapes :</p> <ol> <li><strong>Création du Modèle</strong> : téléversez un modèle Word avec des balises de fusion et donnez-lui un nom.</li> <li><strong>Parcourir les Modèles</strong> : depuis le tableau de bord, parcourez tous les modèles disponibles.</li> <li><strong>Sélection du Modèle</strong> : cliquez sur un modèle pour voir ses détails et les documents précédemment générés.</li> <li><strong>Génération du Document</strong> : utilisez le bouton « + » pour accéder au formulaire de génération de document.</li> <li><strong>Saisie des Données</strong> : indiquez un nom de document, sélectionnez un format de sortie et saisissez les données JSON.</li> <li><strong>Génération</strong> : après avoir cliqué sur « Generate », le document est créé via l’API DocuGenerate.</li> <li><strong>Accès au Document</strong> : retournez sur la page de détail du modèle pour consulter le nouveau document.</li> </ol> <p>Ce flux reproduit les fonctionnalités principales de l’application web de DocuGenerate, mais entièrement implémentées dans Bubble. L’intégration fluide entre la plateforme de développement visuel de Bubble et l’API de DocuGenerate crée une solution de génération de documents à la fois puissante et accessible.</p> <h2 id="setting-up">Configurer Votre Projet Bubble</h2> <p>Avant de commencer à construire notre application, vous devrez préparer votre environnement de développement. La plateforme visuelle de Bubble simplifie ce processus, mais il y a quelques étapes essentielles à suivre :</p> <ol> <li>Inscrivez-vous pour un <a href="https://bubble.io/" target="_blank" rel="nofollow noopener">compte Bubble</a> si vous n’en avez pas déjà un.</li> <li><a href="https://manual.bubble.io/help-guides/getting-started/creating-and-managing-apps" target="_blank" rel="nofollow noopener">Créez une application</a> dans Bubble et donnez-lui un nom.</li> <li>Installez le <a href="https://bubble.io/plugin/docugenerate-1730225425528x319288222630019100" target="_blank">plugin DocuGenerate</a> dans votre nouvelle application.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#install-the-plugin">Configurez</a> le plugin avec votre <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">clé API</a> DocuGenerate.</li> </ol> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/install-new-plugin.png" alt="Installer la clé API DocuGenerate dans Bubble"/></p> <h2 id="docugenerate-plugin">Que Contient le Plugin DocuGenerate?</h2> <p>Le plugin Bubble de DocuGenerate fournit un ensemble complet d’appels API reflétant les fonctionnalités de notre API REST. Ils sont classés en deux catégories :</p> <h3 id="appels-de-données">Appels de Données</h3> <p>Ils permettent de récupérer des informations depuis votre compte DocuGenerate :</p> <ul> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#list-templates">List Templates</a> : renvoie tous les modèles disponibles dans votre compte.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#get-template">Get Template</a> : récupère des informations détaillées sur un modèle spécifique.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#list-documents">List Documents</a> : renvoie tous les documents générés à partir d’un modèle spécifique.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#get-document">Get Document</a> : récupère des informations détaillées sur un document spécifique.</li> </ul> <h3 id="actions">Actions</h3> <p>Elles permettent de créer, modifier ou supprimer des ressources dans votre compte DocuGenerate :</p> <ul> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#create-template">Create Template</a> : téléverse un nouveau fichier de modèle.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#update-template">Update Template</a> : modifie un modèle existant.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#delete-template">Delete Template</a> : supprime un modèle de votre compte.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#generate-document">Generate Document</a> : crée un nouveau document à partir d’un modèle et de données.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#update-document">Update Document</a> : modifie les propriétés d’un document.</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#delete-document">Delete Document</a> : supprime un document de votre compte.</li> </ul> <p>Comprendre ces appels API est essentiel, car ils constituent l’ossature de notre application de démonstration. Tout au long de ce tutoriel, nous utiliserons la plupart de ces appels pour créer un flux de génération de documents entièrement fonctionnel.</p> <h2 id="page-navigation">Concevoir la Navigation de l’Application</h2> <p>Avant d’examiner chaque page en détail, configurons la structure de navigation qui reliera toutes les parties de notre application. Un système de navigation cohérent est essentiel pour offrir une expérience utilisateur fluide à travers l’application. Nous avons créé une barre de navigation simple qui apparaît en haut de chaque page et qui comprend :</p> <ul> <li>Le logo DocuGenerate à gauche, qui fait office de bouton d’accueil pointant vers le <a href="#dashboard-page">tableau de bord</a>.</li> <li>Un bouton <strong>New Template</strong> à droite qui amène directement les utilisateurs vers la page de <a href="#new-template-page">création de modèle</a>.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/navigation-bar.png" alt="Barre de navigation montrant le logo et le bouton New Template"/></p> <p>Cette structure de navigation reprend l’approche utilisée dans l’application web DocuGenerate elle-même, offrant une expérience familière aux utilisateurs qui ont déjà utilisé notre plateforme principale. Cette mise en page familière aide les utilisateurs à comprendre intuitivement comment naviguer dans l’application sans instructions supplémentaires.</p> <h2 id="dashboard-page">La Page Dashboard</h2> <p>La page Dashboard sert de hub central de notre application, offrant aux utilisateurs une vue d’ensemble immédiate de tous leurs modèles disponibles. C’est le premier écran que voient les utilisateurs à l’ouverture de l’application, elle est donc conçue pour être à la fois informative et intuitive, permettant un accès rapide aux fonctionnalités les plus importantes.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/index-page.png" alt="Page Dashboard montrant les modèles dans une vue en grille"/></p> <p>Comme pour l’interface web de DocuGenerate, nous avons organisé les modèles dans une grille visuellement attrayante qui présente les aperçus des modèles avec leurs noms. Cette approche visuelle permet aux utilisateurs d’identifier rapidement le modèle recherché, même en gérant des dizaines de modèles différents.</p> <h3 id="comment-la-construire-">Comment la Construire :</h3> <ol> <li><strong>Créez un élément RepeatingGroup</strong> pour afficher les modèles.</li> <li><strong>Définissez la Data Source</strong> sur l’appel de données <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#list-templates">List Templates</a> du plugin DocuGenerate. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/dashboard-repeating-group.png" alt="Élément RepeatingGroup pour afficher les modèles"/></li> <li><strong>Concevez chaque élément de la grille</strong> pour inclure : <ul> <li>Un élément texte pour le nom du modèle</li> <li>Un élément image pour l’aperçu du modèle <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/dashboard-template-image.png" alt="Élément image pour l'aperçu du modèle"/></li> </ul> </li> <li><strong>Ajoutez un workflow</strong> à l’élément image afin que, lorsqu’il est cliqué, il navigue vers la page de détail du modèle et transmette l’ID du modèle comme paramètre d’URL. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/workflow-template-image.png" alt="Workflow au clic sur l'image du modèle"/></li> </ol> <p>L’élément clé ici est le RepeatingGroup, qui se remplit automatiquement avec tous les modèles de votre compte DocuGenerate. Cette approche dynamique garantit que le tableau de bord affiche toujours la liste la plus à jour des modèles, sans nécessiter de mise à jour manuelle.</p> <p>Chaque modèle de la grille est cliquable et navigue vers une <a href="#template-detail-page">vue détaillée</a> de ce modèle spécifique. Ce schéma d’interaction crée un flux naturel à travers l’application, guidant les utilisateurs de la vue d’ensemble vers des informations plus détaillées en un seul clic.</p> <p>Le tableau de bord s’intègre également parfaitement à notre barre de navigation, qui inclut le bouton « New Template » pour un accès rapide à la <a href="#new-template-page">création de modèle</a>. Cela garantit que les utilisateurs peuvent facilement démarrer le processus de génération de documents depuis cet emplacement central.</p> <h2 id="new-template-page">La Page de Création de Modèle</h2> <p>C’est sur cette page que les utilisateurs commencent le processus de génération de documents en téléversant un document Word qui servira de modèle. Cette étape essentielle constitue la base de toute génération de documents ultérieure, car le modèle téléversé contient la structure, le formatage et les balises de fusion qui seront utilisés lors de la génération des documents.</p> <p>Nous avons conçu cette page pour qu’elle soit simple et ciblée, éliminant les distractions inutiles et guidant les utilisateurs à travers le processus de création de modèle. L’interface communique clairement ce qui est requis (un document Word et un nom) et fournit un retour immédiat lorsque le modèle est créé avec succès.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-page.png" alt="Page de création de modèle avec le sélecteur de fichier et le formulaire"/></p> <h3 id="comment-la-construire--1">Comment la Construire :</h3> <ol> <li><strong>Ajoutez un élément FileUploader</strong> pour permettre aux utilisateurs de sélectionner leur document Word. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-file-uploader.png" alt="Élément FileUploader pour permettre aux utilisateurs de sélectionner leur document Word"/></li> <li><strong>Ajoutez un champ de saisie</strong> pour entrer le nom du modèle.</li> <li><strong>Ajoutez un bouton « Create Template »</strong> avec le workflow suivant : <ul> <li>Lorsqu’il est cliqué, appelez l’action <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#create-template">Create Template</a> du plugin DocuGenerate</li> <li>Transmettez le fichier du FileUploader comme paramètre <code class="language-plaintext highlighter-rouge">file</code> via l’option de lien dynamique</li> <li>Transmettez le nom du champ de saisie comme paramètre <code class="language-plaintext highlighter-rouge">name</code> <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-workflow-create-template.png" alt="Étape du workflow pour créer un modèle"/></li> <li>Une fois le modèle créé, naviguez vers la page de détail du modèle avec le nouvel ID de modèle <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-template-workflow-template-detail.png" alt="Étape du workflow pour accéder au détail du modèle"/></li> </ul> </li> </ol> <p>Ce formulaire simplifié gère tout ce qui est nécessaire pour créer un modèle dans DocuGenerate. Le composant FileUploader offre un moyen natif pour les utilisateurs de sélectionner des fichiers depuis leur appareil, avec prise en charge du glisser-déposer et un retour visuel clair. Cela rend le processus intuitif même pour les utilisateurs non techniques qui ne sont pas familiers avec l’automatisation de documents.</p> <p>Une fois le modèle créé, la navigation automatique vers la page de <a href="#template-detail-page">détail du modèle</a> crée une transition fluide vers l’étape suivante du flux. Ce parcours utilisateur réfléchi évite aux utilisateurs de naviguer manuellement entre les pages, réduisant les frictions et améliorant l’expérience globale.</p> <h2 id="template-detail-page">La Page de Détail du Modèle</h2> <p>La page de détail du modèle sert de hub central pour gérer un modèle spécifique et tous les documents qui en sont générés. Cette page réunit les informations essentielles du modèle avec des fonctionnalités de gestion de documents, offrant une vue complète de l’utilisation et de la production de chaque modèle.</p> <p>Contrairement aux pages plus simples que nous avons créées jusqu’à présent, la page de détail du modèle intègre plusieurs sources de données et éléments interactifs pour créer une interface plus complexe et fonctionnelle. Nous avons soigneusement organisé ces éléments pour conserver de la clarté malgré cette complexité accrue, garantissant que les utilisateurs peuvent facilement trouver et utiliser les fonctionnalités dont ils ont besoin.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-page.png" alt="Page de détail du modèle montrant l'aperçu et la liste des documents"/></p> <h3 id="comment-la-construire--2">Comment la Construire :</h3> <ol> <li><strong>Créez un élément Group</strong> comme conteneur pour le contenu de la page.</li> <li><strong>Définissez la Data Source du Group</strong> sur l’appel de données <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#get-template">Get Template</a> du plugin DocuGenerate, avec le paramètre <code class="language-plaintext highlighter-rouge">id</code> défini sur le template_id de l’URL. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-group-content.png" alt="Élément RepeatingGroup pour afficher le contenu de la page"/></li> <li><strong>Ajoutez un élément texte</strong> pour afficher le nom du modèle.</li> <li><strong>Ajoutez un élément image</strong> pour afficher l’aperçu du modèle. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-template-image.png" alt="Élément image pour afficher l'aperçu du modèle"/></li> <li><strong>Ajoutez un RepeatingGroup</strong> pour la liste des documents avec : <ul> <li>La Data Source définie sur l’appel <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#list-documents">List Documents</a> avec le paramètre <code class="language-plaintext highlighter-rouge">template_id</code></li> <li>Chaque élément affichant le nom du document comme un lien vers le <code class="language-plaintext highlighter-rouge">document_uri</code> pour le téléchargement <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-document-repeating-group.png" alt="RepeatingGroup pour afficher la liste des documents"/></li> </ul> </li> <li><strong>Ajoutez un bouton « + »</strong> qui navigue vers la page de nouveau document. <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/template-detail-workflow-new-document.png" alt="Workflow pour naviguer vers la page de nouveau document"/></li> </ol> <p>L’aspect le plus puissant de cette page est la façon dont elle utilise la Data Source de l’élément Group pour rendre toutes les données du modèle disponibles aux éléments enfants. Ce schéma, parfois appelé « héritage de données » dans Bubble, garantit que tous les éléments de la page se mettent automatiquement à jour lorsqu’un modèle différent est sélectionné. Cette approche simplifie la logique de la page et améliore les performances en réduisant les appels API redondants.</p> <p>La liste des documents offre une vue chronologique de tous les documents générés à partir de ce modèle, les documents les plus récents apparaissant en haut. Chaque élément de document inclut un lien de téléchargement direct, permettant aux utilisateurs d’accéder rapidement à leurs fichiers générés sans naviguer vers d’autres pages.</p> <p>Le bouton « + » bien visible constitue un appel à l’action clair, guidant les utilisateurs vers le processus de génération de documents. Lorsqu’il est cliqué, ce bouton navigue vers la page de <a href="#new-document-page">génération de document</a>, en transmettant l’ID du modèle pour conserver le contexte. Cette conception réfléchie de l’interaction garantit que les utilisateurs peuvent facilement passer de la consultation des détails du modèle à la génération de nouveaux documents.</p> <h2 id="new-document-page">La Page de Génération de Document</h2> <p>C’est ici que la véritable puissance de la génération de documents prend tout son sens, permettant aux utilisateurs de connecter leurs données à des modèles pour produire des documents personnalisés. Nous avons conçu cette page pour qu’elle soit puissante tout en restant accessible, équilibrant des fonctionnalités avancées avec une interface claire.</p> <p>Cette page conserve une cohérence visuelle avec la page de <a href="#template-detail-page">détail du modèle</a>, affichant les mêmes informations de modèle en haut pour fournir du contexte. Cela aide les utilisateurs à confirmer qu’ils travaillent avec le bon modèle avant de poursuivre la génération de document, évitant ainsi d’éventuelles erreurs ou confusions.</p> <p><img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-page.png" alt="Page de génération de document avec le formulaire de saisie des données JSON"/></p> <h3 id="comment-la-construire--3">Comment la Construire :</h3> <ol> <li><strong>Affichez les informations du modèle</strong> (nom et aperçu) de manière similaire à la page de détail du modèle.</li> <li><strong>Créez un formulaire avec :</strong> <ul> <li>Un champ de saisie texte pour le nom du document</li> <li>Une liste déroulante pour sélectionner le format de sortie (PDF, DOCX, DOC, ODT, TXT, HTML, PNG)</li> <li>Un champ MultiLine Input pour saisir les données JSON <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-form.png" alt="Formulaire pour générer des documents"/></li> </ul> </li> <li><strong>Ajoutez un bouton « Generate »</strong> qui : <ul> <li>Appelle l’action <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/#generate-document">Generate Document</a> du plugin DocuGenerate</li> <li>Transmet toutes les valeurs du formulaire comme paramètres, ainsi que le <code class="language-plaintext highlighter-rouge">template_id</code> de l’URL <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-workflow-generate-document.png" alt="Étape du workflow pour générer un document"/></li> <li>Après la génération, retourne vers la page de détail du modèle <img src="https://www.docugenerate.com/assets/posts/016-bubble-demo-app/new-document-workflow-template-detail.png" alt="Étape du workflow pour accéder au détail du modèle"/></li> </ul> </li> </ol> <p>Le champ MultiLine Input est particulièrement important car il offre un moyen flexible pour les utilisateurs de saisir leurs données JSON. Cette approche prend en charge à la fois des structures de données simples pour des documents basiques et des objets ou tableaux imbriqués complexes pour des scénarios de génération plus sophistiqués. Pour les utilisateurs avancés, cette capacité d’édition JSON directe offre un contrôle précis sur les données fusionnées dans leurs modèles.</p> <p>La liste déroulante du format de sortie illustre l’un des principaux avantages de DocuGenerate : la possibilité de générer des documents dans plusieurs formats à partir d’un seul modèle. Les utilisateurs peuvent choisir le format le mieux adapté à leurs besoins, qu’il s’agisse d’un PDF pour une diffusion officielle, d’un DOCX pour une modification ultérieure, ou d’un autre format pour des cas d’usage spécifiques.</p> <p>Une fois le document généré, la page revient automatiquement à la page de <a href="#template-detail-page">détail du modèle</a>, où le document nouvellement créé apparaît en haut de la liste. Ce retour immédiat confirme que la génération a réussi et offre un accès rapide au document généré.</p> <h2 id="enhancement-opportunities">Opportunités d’Amélioration</h2> <p>Bien que notre application de démonstration fournisse les fonctionnalités essentielles pour la génération de documents, il existe de nombreuses façons de l’améliorer pour créer une application encore plus puissante et conviviale :</p> <ul> <li><strong>Aperçu PDF</strong> : remplacez les images statiques par des <a href="https://www.docugenerate.com/fr/aide/articles/comment-afficher-un-document-genere/">aperçus PDF</a> intégrés des modèles et documents.</li> <li><strong>Vues Alternatives</strong> : ajoutez des options pour afficher les modèles <a href="https://www.docugenerate.com/fr/aide/articles/comment-basculer-les-options-d-affichage/#list-view">sous forme de liste</a> plutôt qu’en grille.</li> <li><strong>Modification de Modèle</strong> : permettez aux utilisateurs de <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-un-modele/">mettre à jour les modèles</a> avec de nouveaux fichiers ou de modifier les paramètres.</li> <li><strong>Navigation entre Modèles</strong> : ajoutez une liste déroulante ou une <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">barre de recherche</a> pour naviguer facilement entre les modèles.</li> <li><strong>Prise en Charge des Feuilles de Calcul</strong> : ajoutez la possibilité de téléverser des fichiers <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-d-un-fichier-excel-ou-csv/">Excel ou CSV</a> pour la génération de documents.</li> </ul> <p>Ces améliorations transformeraient notre application de démonstration d’une simple preuve de concept en une solution complète de génération de documents, adaptée à des besoins métier spécifiques. L’avantage d’utiliser la plateforme de développement visuel de Bubble est que ces fonctionnalités peuvent être ajoutées progressivement, permettant à l’application d’évoluer avec les besoins des utilisateurs.</p> <h2 id="conclusion">Conclusion</h2> <p>Créer une application de génération de documents avec Bubble et le plugin DocuGenerate démontre la puissance du développement no-code combiné à des API spécialisées. L’application de démonstration que nous avons construite sert à la fois de preuve de concept et de point de départ pour vos propres projets d’automatisation de documents. En exploitant la plateforme de développement visuel de Bubble et les capacités de génération de documents de DocuGenerate, vous pouvez créer des solutions personnalisées adaptées à vos besoins spécifiques sans écrire une seule ligne de code.</p> <p>Cette approche est particulièrement précieuse pour les entreprises sans équipes de développement dédiées ou celles qui souhaitent prototyper et itérer rapidement sur des flux de génération de documents. La nature visuelle de Bubble la rend accessible aux analystes métier, spécialistes des opérations et autres membres d’équipe non techniques, leur permettant de créer des solutions qui répondent directement à leurs défis d’automatisation de documents.</p> <p>Que vous construisiez des outils internes pour votre équipe ou des applications destinées aux clients, cette approche offre un moyen rapide et flexible de mettre en œuvre des fonctionnalités de génération de documents. La combinaison de l’interface intuitive de Bubble et de la puissante API de DocuGenerate crée une synergie qui rend l’automatisation de documents sophistiquée accessible aux organisations de toutes tailles.</p> <h3 id="resources">Ressources</h3> <ul> <li>Version en ligne de la <a href="https://docugenerate-demo-app.bubbleapps.io/version-test/" target="_blank">démo Bubble</a> que nous avons construite dans ce tutoriel.</li> <li>Lien d’installation du <a href="https://bubble.io/plugin/docugenerate-1730225425528x319288222630019100" target="_blank">plugin DocuGenerate</a> sur la marketplace Bubble.</li> <li>Instructions pas à pas de notre Centre d’Aide pour <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-bubble/">configurer le plugin</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[Découvrez comment créer une application simplifiée de génération de documents avec Bubble et le plugin DocuGenerate. Ce tutoriel pas à pas vous montre comment créer une démo fonctionnelle permettant de téléverser des modèles, générer des documents et gérer votre bibliothèque de documents.]]></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">Enregistrer les Fichiers Générés sur Dropbox avec Zapier</title> <link href="https://www.docugenerate.com/fr/blog/enregistrer-les-fichiers-generes-sur-dropbox-avec-zapier/" rel="alternate" type="text/html" title="Enregistrer les Fichiers Générés sur Dropbox avec Zapier"/> <published>2024-11-11T00:00:00+00:00</published> <updated>2024-11-11T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/enregistrer-les-fichiers-generes-sur-dropbox-avec-zapier</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/enregistrer-les-fichiers-generes-sur-dropbox-avec-zapier/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Dans le monde du travail numérique d’aujourd’hui, l’automatisation des flux de documents fait gagner un temps précieux et garantit une cohérence au sein de votre organisation. Que vous génériez des certificats de travail, des contrats, des factures ou d’autres documents professionnels, leur enregistrement automatique dans un espace de stockage cloud élimine la gestion manuelle des fichiers et crée un système de sauvegarde fiable.</p> <p>Ce tutoriel montre comment construire une automatisation puissante qui génère des certificats de travail avec DocuGenerate et les enregistre automatiquement sur Dropbox via Zapier. En connectant ces trois outils, vous créerez un flux fluide qui transforme des données en documents professionnels et les stocke dans des dossiers cloud organisés.</p> <p><a href="https://zapier.com/" target="_blank" rel="nofollow noopener">Zapier</a> sert de pont d’automatisation, connectant différentes applications sans nécessiter de connaissances en programmation. <a href="https://www.docugenerate.com/">DocuGenerate</a> gère la génération de documents à partir de vos modèles et données, tandis que <a href="https://www.dropbox.com/" target="_blank" rel="nofollow noopener">Dropbox</a> fournit un stockage cloud sécurisé avec des fonctionnalités de partage simples.</p> <h2 id="zapier-table">Configurer Votre Source de Données avec Zapier Tables</h2> <p>Pour ce tutoriel, nous allons utiliser le modèle <strong>Certificate of Employment</strong> de la <a href="https://www.docugenerate.com/fr/modeles/">Bibliothèque de Modèles</a> de DocuGenerate. Ce modèle inclut à la fois un modèle de document Word et des données d’exemple que nous allons importer dans Zapier Tables pour faciliter l’automatisation.</p> <p>Nous allons commencer par créer une table de données dans Zapier contenant les informations des employés nécessaires pour générer les certificats. Zapier Tables offre un moyen pratique de stocker et de gérer des données structurées qui peuvent déclencher des automatisations lors de l’ajout ou de la mise à jour d’enregistrements.</p> <p>Tout d’abord, accédez à <a href="https://tables.zapier.com/" target="_blank" rel="nofollow noopener">Zapier Tables</a> et créez une nouvelle table. Nous allons importer nos données d’exemple à partir d’un <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.csv">fichier CSV</a> qui contient les colonnes suivantes :</p> <ul> <li><strong>Company Name</strong> : l’organisation qui délivre le certificat</li> <li><strong>First Name</strong> : le prénom de l’employé</li> <li><strong>Last Name</strong> : le nom de l’employé</li> <li><strong>Job Title</strong> : le poste de l’employé</li> <li><strong>Start Date</strong> : la date de début d’emploi</li> <li><strong>End Date</strong> : la date de fin d’emploi (le cas échéant)</li> <li><strong>Certificate Date</strong> : la date d’émission du certificat</li> </ul> <p>Pour importer les données, cliquez sur <strong>Import data</strong> et sélectionnez <strong>Start with data from a CSV file or another platform</strong>. Téléversez le fichier CSV contenant les données de vos employés, et Zapier créera automatiquement la structure de la table et la remplira avec vos enregistrements.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/zapier-csv-import.png" alt="Importer des données CSV dans Zapier Tables"/></p> <p>Une fois importée, votre table devrait contenir 10 enregistrements d’exemple avec les informations des employés. Donnez à votre table un nom descriptif comme « Certificate of Employment » pour la retrouver facilement dans vos Zaps.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/zapier-data-table.png" alt="Table Certificate of Employment dans Zapier"/></p> <p>Cette table servira de déclencheur pour notre automatisation : chaque fois qu’un enregistrement est ajouté ou mis à jour, notre Zap génèrera automatiquement un certificat et l’enregistrera sur Dropbox.</p> <h2 id="create-template">Créer le Modèle dans DocuGenerate</h2> <p>Avant de configurer l’automatisation Zapier, nous devons préparer notre modèle de document dans DocuGenerate. Connectez-vous à votre compte DocuGenerate et <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créez un nouveau modèle</a> à partir du document Word <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.docx">Certificate of Employment</a>.</p> <p>Le modèle contient des balises de fusion qui correspondent aux noms de colonnes de notre <a href="#zapier-table">table Zapier</a>. Elles sont automatiquement détectées par DocuGenerate, ce qui facilite le mappage des données lors de la génération du document.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-template.png" alt="Modèle Certificate of Employment dans DocuGenerate"/></p> <p>Les <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> du modèle incluent <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> et <code class="language-plaintext highlighter-rouge">[Certificate Date]</code>. Ces balises seront remplacées par les données réelles des employés lors de la génération du document via notre automatisation Zapier.</p> <h2 id="tables-trigger">Configurer le Déclencheur Zapier Tables</h2> <p>Nous allons maintenant créer notre Zap pour automatiser l’ensemble du processus. Commencez par créer un nouveau Zap dans Zapier et sélectionnez <strong>Zapier Tables</strong> comme application déclencheur. Choisissez l’événement déclencheur <strong>New or Updated Record</strong>. Cela garantit que notre automatisation s’exécute chaque fois que des données d’employé sont ajoutées ou modifiées dans notre table.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/trigger-new-record.png" alt="Déclencheur New or Updated Record dans Zapier Tables"/></p> <p>Dans la configuration du déclencheur, connectez-vous à votre compte Zapier Tables si vous ne l’avez pas encore fait, puis sélectionnez la table <strong>Certificate of Employment</strong> <a href="#zapier-table">créée précédemment</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/trigger-table-selection.png" alt="Configurer le déclencheur Zapier Tables"/></p> <p>Testez le déclencheur pour vous assurer qu’il fonctionne correctement. Zapier vous montrera les enregistrements les plus récents de votre table, vous permettant d’en sélectionner un pour tester les étapes suivantes de votre Zap.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/trigger-test-data.png" alt="Tester le déclencheur Zapier Tables"/></p> <p>Sélectionnez l’un des enregistrements d’employé et continuez. Cet enregistrement de test sera utilisé pour prévisualiser le mappage des données dans les étapes suivantes de notre automatisation.</p> <h2 id="generate-document">Configurer l’Action de Génération de Document</h2> <p>Ensuite, nous allons ajouter DocuGenerate à notre Zap pour gérer la génération de documents. Recherchez l’<a href="https://zapier.com/apps/docugenerate/integrations" target="_blank" rel="noopener">application DocuGenerate</a> et ajoutez l’action <strong>Generate Document</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-account.png" alt="Ajouter l'action Generate Document"/></p> <p>Si c’est la première fois que vous connectez DocuGenerate à Zapier, vous devrez vous authentifier avec votre <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/#connect-to-zapier">clé API DocuGenerate</a>. Vous trouverez votre clé API dans les paramètres de votre compte DocuGenerate.</p> <p>Dans la configuration de l’action, sélectionnez le modèle <strong>Certificate of Employment</strong> dans la liste déroulante. Pour le nom du document, nous utiliserons des valeurs dynamiques de notre table Zapier : <code class="language-plaintext highlighter-rouge">Certificate of [First Name] [Last Name]</code>. Ainsi, le nom du document généré sera personnalisé avec le nom de la personne. Définissez le format d’export sur <strong>PDF</strong> pour garantir que les certificats sont générés dans un format professionnel, prêt à l’impression.</p> <p>L’élément le plus important est le mappage des données de votre <a href="#tables-trigger">table Zapier</a> vers les balises de fusion du modèle. Dans le champ <strong>Data</strong>, assurez-vous de sélectionner les valeurs réelles des champs de l’étape précédente pour chaque clé. L’insertion dynamique de champs renseignera automatiquement ces valeurs lors de l’exécution du Zap.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-configure.png" alt="Configurer les paramètres de Generate Document"/></p> <p>Testez cette étape pour vous assurer que la génération de document fonctionne correctement. En cas de succès, vous verrez une réponse JSON de DocuGenerate contenant les détails du document, comme l’ID du document, son nom, son format et l’<strong>URL du document</strong>, qui pointe vers le fichier PDF généré que nous utiliserons à l’étape suivante. Vous remarquerez que le nom du document et le nom du fichier sont personnalisés avec les valeurs de l’enregistrement sélectionné, comme prévu.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/docugenerate-test.png" alt="Tester l'action Generate Document"/></p> <h2 id="dropbox-upload">Ajouter l’Action de Téléversement Dropbox</h2> <p>La dernière étape de notre automatisation consiste à enregistrer le certificat généré sur Dropbox. Ajoutez l’<a href="https://zapier.com/apps/dropbox/integrations" target="_blank" rel="noopener">application Dropbox</a> à votre Zap et sélectionnez l’action <strong>Upload File</strong>. Connectez votre compte Dropbox à Zapier si vous ne l’avez pas encore fait. Cela permettra à Zapier de téléverser des fichiers vers votre espace de stockage Dropbox.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-upload-file.png" alt="Ajouter l'action Upload File de Dropbox"/></p> <p>Dans la configuration de l’action, vous devrez spécifier deux paramètres clés :</p> <ul> <li> <p><strong>Folder</strong> : choisissez où enregistrer les certificats dans votre Dropbox. Pour ce tutoriel, nous utiliserons le chemin statique <code class="language-plaintext highlighter-rouge">/DocuGenerate/Certificates</code>. Cela crée une structure de dossiers organisée pour une gestion facile des documents. Vous pouvez également utiliser des noms de dossiers dynamiques basés sur les données de votre table, par exemple en organisant par nom d’entreprise ou par date.</p> </li> <li> <p><strong>File</strong> : c’est ici que nous spécifions le fichier à téléverser. Sélectionnez l’<strong>URL du document</strong> de l’étape DocuGenerate. Cela indique à Dropbox de télécharger le fichier depuis le stockage de DocuGenerate et de l’enregistrer dans le dossier spécifié.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-configure.png" alt="Configurer les paramètres de téléversement Dropbox"/></p> <p>Laissez les champs <strong>Specify File Name</strong> et <strong>Specify File Extension</strong> vides. Cela permet à Dropbox d’utiliser le nom de fichier et l’extension d’origine du document généré, qui pour l’enregistrement d’exemple sélectionné est <code class="language-plaintext highlighter-rouge">Certificate of Conrado Fearnyhough.pdf</code>.</p> <p>Testez cette étape pour vérifier que le fichier est correctement téléversé dans votre dossier Dropbox.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-test.png" alt="Tester le téléversement Dropbox"/></p> <p>Si le test réussit, vous verrez une confirmation que le fichier a été téléversé dans le dossier Dropbox spécifié. Vous pouvez le vérifier directement dans votre compte Dropbox.</p> <p><img src="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/dropbox-file.png" alt="Fichiers Dropbox dans le dossier « Certificates »"/></p> <h2 id="enhancements">Améliorer Votre Automatisation</h2> <p>Une fois votre automatisation de base fonctionnelle, envisagez ces améliorations pour la rendre encore plus puissante. Ces fonctionnalités supplémentaires peuvent vous aider à créer des flux plus sophistiqués et à mieux organiser votre système de gestion des documents.</p> <h3 id="dynamic-folders">Organisation Dynamique des Dossiers</h3> <p>Plutôt que d’utiliser un chemin de dossier statique, vous pouvez organiser les certificats par entreprise, département ou date. Par exemple :</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="conditional-logic">Logique Conditionnelle</h3> <p>Utilisez les fonctionnalités <a href="https://zapier.com/blog/filter-by-zapier-guide/" target="_blank" rel="nofollow noopener">Filter</a> ou <a href="https://zapier.com/features/paths" target="_blank" rel="nofollow noopener">Paths</a> de Zapier pour gérer différents types de documents ou flux d’approbation :</p> <ul> <li>Générer différents modèles de certificats selon le poste</li> <li>Faire passer les documents par des processus d’approbation avant le stockage final</li> <li>Appliquer différentes structures de dossiers selon les divisions de l’entreprise</li> </ul> <h3 id="notifications">Systèmes de Notification</h3> <p>Ajoutez des notifications par e-mail pour informer les responsables RH lorsque des certificats sont générés et enregistrés. Vous pouvez utiliser les actions <a href="https://zapier.com/apps/email/integrations" target="_blank" rel="nofollow noopener">Email de Zapier</a> ou <a href="https://zapier.com/apps/gmail/integrations" target="_blank" rel="nofollow noopener">Gmail</a> pour envoyer des notifications automatisées.</p> <h2 id="security-compliance">Considérations de Sécurité et de Conformité</h2> <p>Lors de l’automatisation des flux de documents, en particulier pour des documents RH comme les certificats de travail, prenez en compte ces aspects de sécurité :</p> <h3 id="data-privacy">Confidentialité des Données</h3> <ul> <li>Assurez-vous que vos tables Zapier ne contiennent que les informations nécessaires sur les employés</li> <li>Envisagez des politiques de conservation des données, tant pour les documents générés que pour les données source</li> <li>Vérifiez les paramètres de partage Dropbox pour éviter tout accès non autorisé</li> </ul> <h3 id="access-control">Contrôle d’Accès</h3> <ul> <li>Limitez l’accès à vos automatisations Zapier au personnel autorisé uniquement</li> <li>Utilisez les fonctionnalités d’équipe de Dropbox pour contrôler qui peut accéder aux dossiers de certificats</li> <li>Auditez régulièrement les permissions des utilisateurs et révoquez l’accès des anciens employés</li> </ul> <h3 id="audit-trails">Pistes d’Audit</h3> <ul> <li>Zapier conserve automatiquement des journaux de toutes les exécutions d’automatisation</li> <li>Envisagez d’ajouter des étapes de journalisation ou de notification supplémentaires pour répondre aux exigences de conformité</li> <li>Documentez votre processus d’automatisation à des fins d’audit interne</li> </ul> <h2 id="conclusion">Conclusion</h2> <p>Automatiser la génération de documents et le stockage cloud avec DocuGenerate, Zapier et Dropbox crée un flux puissant qui fait gagner du temps tout en garantissant des résultats cohérents et professionnels. Cette automatisation élimine la gestion manuelle des fichiers, réduit les erreurs et crée un système organisé de stockage et de récupération des documents.</p> <p>En suivant ce tutoriel, vous avez créé une base qui peut être adaptée à de nombreux autres types de documents et processus métier. Que vous gériez des documents RH, des propositions commerciales ou des documents administratifs, cette approche d’automatisation peut simplifier vos flux et améliorer votre efficacité opérationnelle.</p> <p>Envisagez d’étendre cette automatisation pour gérer d’autres types de documents ou pour l’intégrer à d’autres outils métier. La flexibilité de Zapier permet d’ajouter facilement de nouvelles étapes, de connecter différentes applications ou de créer des flux plus sophistiqués au fil de l’évolution de vos besoins.</p> <h3 id="resources">Ressources</h3> <ul> <li>Téléchargez le <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.docx">modèle Certificate of Employment</a> utilisé dans ce tutoriel</li> <li>Accédez aux <a href="https://www.docugenerate.com/assets/posts/015-zapier-save-to-dropbox/Certificate of Employment.csv">données CSV d’exemple</a> pour les importer dans Zapier Tables</li> <li>En savoir plus sur <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/">l’intégration Zapier de DocuGenerate</a> dans notre Centre d’Aide</li> <li>Explorez la <a href="https://community.zapier.com/p/zapier-tables" target="_blank" rel="nofollow noopener">documentation Zapier Tables</a> pour des fonctionnalités avancées de gestion des données</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[Découvrez comment automatiser la génération de documents et le stockage de fichiers en connectant DocuGenerate à Dropbox via Zapier. Ce guide vous accompagne dans la création de certificats de travail et leur enregistrement automatique dans des dossiers organisés sur Dropbox.]]></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">Pourquoi utiliser des Modèles Word plutôt que HTML?</title> <link href="https://www.docugenerate.com/fr/blog/pourquoi-utiliser-des-modeles-word-plutot-que-html/" rel="alternate" type="text/html" title="Pourquoi utiliser des Modèles Word plutôt que HTML?"/> <published>2024-10-14T00:00:00+00:00</published> <updated>2024-10-14T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/pourquoi-utiliser-des-modeles-word-plutot-que-html</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/pourquoi-utiliser-des-modeles-word-plutot-que-html/"><![CDATA[<h2 id="paysage-de-la-generation-de-documents">Le Paysage de la Génération de Documents</h2> <p>Lorsqu’il s’agit de solutions de génération de documents, les entreprises sont souvent confrontées à un choix crucial entre les plateformes qui utilisent des modèles Word et celles basées sur des modèles HTML. Cette décision peut sembler triviale à première vue, mais elle peut avoir un impact significatif sur l’efficacité de votre flux de travail, la qualité de vos documents et votre flexibilité à long terme.</p> <p>DocuGenerate est construit autour des modèles Microsoft Word, mais il existe d’autres solutions sur le marché qui utilisent des approches basées sur HTML. Bien que les deux aient leurs mérites, il existe des raisons convaincantes pour lesquelles les modèles Word offrent souvent des résultats supérieurs pour les entreprises de toutes tailles.</p> <p>Dans cet article, nous allons explorer les principales différences entre les modèles Word et HTML, examiner les avantages de chaque approche, et expliquer pourquoi la propriété de vos modèles compte pour la continuité et la flexibilité de votre entreprise.</p> <h2 id="differences-fondamentales">Comprendre les Différences Fondamentales</h2> <p>Avant d’aborder les avantages et les inconvénients, clarifions les principales différences entre les systèmes de génération de documents basés sur Word et ceux basés sur HTML :</p> <p><strong>Les Modèles Basés sur Word</strong> utilisent des formats de document standards (DOCX, ODT) comme modèles, compatibles avec <a href="https://www.microsoft.com/fr-fr/microsoft-365/word" target="_blank">Microsoft Word</a> et <a href="https://www.libreoffice.org/" target="_blank">LibreOffice</a>. Ils exploitent toutes les capacités de mise en forme de ces puissants traitements de texte et permettent une édition directe avec des outils familiers que la plupart des utilisateurs professionnels connaissent déjà. Ils prennent en charge des structures de documents complexes et peuvent générer une sortie dans plusieurs formats (DOCX, PDF, etc.).</p> <p><strong>Les Modèles Basés sur HTML</strong> utilisent HTML et CSS pour la conception des modèles et nécessitent souvent une connaissance des technologies de développement web. Ils incluent généralement un éditeur WYSIWYG (qui signifie <em>« What You See Is What You Get »</em>), se concentrent principalement sur la sortie PDF, et peuvent utiliser des langages de modèles comme <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>, ou <a href="https://jinja.palletsprojects.com/en/stable/" target="_blank" rel="nofollow noopener">Jinja</a>.</p> <p>Avec ces différences en tête, explorons pourquoi les modèles Word offrent souvent une solution supérieure pour les entreprises.</p> <h2 id="propriete-des-modeles">Propriété et Portabilité des Modèles</h2> <p>Un des avantages les plus significatifs des modèles basés sur Word est la véritable propriété de vos conceptions de documents. Avec DocuGenerate et d’autres solutions basées sur Word, vos modèles sont des fichiers DOCX standards que vous pouvez télécharger, modifier hors ligne, et même utiliser avec différents systèmes si nécessaire.</p> <p>Cela apporte des avantages importants comme éviter la dépendance à un fournisseur, pérenniser votre investissement dans les modèles, un accès hors ligne pour l’édition, et un partage facile avec des collègues ou des clients sous forme de documents Word standards.</p> <p>Les solutions basées sur HTML stockent souvent vos modèles dans des formats propriétaires qui ne peuvent être édités et utilisés que sur leur plateforme spécifique. Cela crée des difficultés, notamment des problèmes de migration (recréer tous les modèles lors d’un changement de fournisseur), un contrôle limité (ne pouvoir effectuer que les modifications permises par leur éditeur), des risques de dépendance (si le fournisseur change son système), et des coûts cachés lors de la recréation des modèles.</p> <h2 id="capacites-de-mise-en-forme">Des Capacités de Mise en Forme Supérieures</h2> <p>Microsoft Word a été perfectionné pendant des décennies pour offrir un contrôle précis de la mise en forme des documents. Les solutions basées sur HTML, bien qu’elles s’améliorent, ne peuvent toujours pas rivaliser avec les capacités de mise en forme complètes de Word.</p> <h3 id="mises-en-page-complexes">Mises en Page de Documents Complexes</h3> <p>Word excelle dans la gestion des formats de documents complexes courants dans les contextes professionnels. Il offre un contrôle sophistiqué des en-têtes et pieds de page sur plusieurs sections, des systèmes de numérotation de pages complexes, des mises en page multi-colonnes, une mise en forme avancée des tableaux, un habillage précis du texte autour des images, et des sauts de section permettant différentes orientations de page au sein d’un même document.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/word-layout-tab.png" alt="Menu de mise en page Word"/></p> <h3 id="typographie">Typographie et Image de Marque</h3> <p>Word offre des contrôles typographiques supérieurs, essentiels pour maintenir la cohérence de votre image de marque. Cela inclut une gestion complète des polices avec accès à toutes les <a href="https://www.docugenerate.com/fr/aide/articles/comment-utiliser-des-polices-personnalisees/">polices installées</a>, des fonctionnalités typographiques avancées comme les ligatures et les petites majuscules, un contrôle précis de l’espacement des caractères, et des systèmes de styles garantissant une mise en forme cohérente tout au long des documents.</p> <h3 id="precision-au-pixel-pres">Une Précision au Pixel Près</h3> <p>En matière de génération de documents, la précision compte particulièrement pour les documents juridiques, les contrats et la correspondance professionnelle formelle. Les modèles Word offrent un contrôle au pixel près que les modèles HTML ont souvent du mal à reproduire de manière cohérente selon les différents formats de sortie.</p> <h2 id="facilite-d-utilisation">Facilité d’Utilisation et d’Adoption</h2> <p>L’un des avantages les plus convaincants des modèles basés sur Word est sans doute leur familiarité et leur facilité d’utilisation. La plupart des professionnels sont déjà habitués à Microsoft Word. Cette compétence existante signifie qu’une formation minimale est nécessaire, que davantage de membres du personnel peuvent contribuer à la création et à la maintenance des modèles, et que les entreprises peuvent mettre en place des solutions de génération de documents plus rapidement.</p> <p>Les solutions basées sur HTML nécessitent souvent des connaissances en technologies web que de nombreux utilisateurs professionnels ne possèdent pas. Bien que les éditeurs WYSIWYG tentent de combler cet écart, ils offrent généralement un contrôle de mise en forme limité par rapport à ce qui est disponible dans le HTML et le CSS sous-jacents.</p> <p>Prenons l’exemple de <a href="https://ckeditor.com/" target="_blank" rel="nofollow noopener">CKEditor</a>, l’un des éditeurs WYSIWYG les plus populaires utilisés par les applications web. Bien qu’il offre une interface riche et conviviale, il reste en deçà des fonctionnalités complètes de Word. Les utilisateurs rencontrent souvent des limitations avec la mise en forme complexe, la gestion des tableaux et le contrôle de la mise en page.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/ck-editor.png" alt="Interface CKEditor"/></p> <p>Même avec des éditeurs WYSIWYG avancés comme celui-ci, les utilisateurs n’ont généralement accès qu’à une partie des capacités de mise en forme disponibles dans Word. L’expérience d’édition semble limitée par rapport à un traitement de texte dédié, et le résultat final ne correspond pas toujours à ce que les utilisateurs voient dans l’éditeur.</p> <h2 id="exemples-pratiques">Quelques Exemples Pratiques</h2> <p>Différents types de documents professionnels ont des exigences variées en matière de mise en forme et de structure. Examinons comment les modèles Word et HTML se comparent pour les types de documents courants.</p> <p><strong>Les Documents Juridiques</strong> ont souvent des exigences de mise en forme strictes, notamment des systèmes de numérotation complexes, un retrait de paragraphe précis, un interligne spécifique, des conventions de numérotation des sections et des pages, et un placement soigné des blocs de signature. Les modèles Word excellent à maintenir ces exigences de mise en forme précises de manière cohérente, tandis que les systèmes basés sur HTML peinent souvent à respecter l’espacement et la mise en forme exacts requis pour les documents juridiques.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/legal-document.png" alt="Modèles de plaidoiries de cour supérieure"/></p> <p><strong>Les Factures et Relevés</strong> peuvent être gérés par les deux approches, mais les modèles Word offrent des avantages pour les mises en page complexes avec un positionnement précis des éléments, des structures de tableaux complexes pour les lignes de détail, des sections conditionnelles basées sur des règles métier, et une pagination cohérente pour les factures multi-pages.</p> <p><strong>Les Documents Longs</strong> comme les rapports bénéficient considérablement des fonctionnalités essentielles de Word, comme les tables des matières générées et mises à jour automatiquement, les références croisées dynamiques vers d’autres sections, un meilleur contrôle des sauts de page et de la mise en forme des sections, et la possibilité d’avoir des en-têtes et pieds de page différents selon les sections.</p> <h2 id="considerations-techniques">Considérations Techniques</h2> <p>Au-delà de l’expérience utilisateur, plusieurs facteurs techniques différencient les modèles Word et HTML. Bien que les deux approches puissent produire des documents professionnels, les technologies sous-jacentes affectent tout, des options de sortie à la façon dont le contenu s’écoule sur les pages. Comprendre ces différences vous aide à choisir la solution qui correspond le mieux aux besoins spécifiques de votre organisation.</p> <h3 id="formats-de-sortie">Flexibilité des Formats de Sortie</h3> <p>L’un des avantages significatifs des modèles basés sur Word est la possibilité de générer des documents dans <a href="https://www.docugenerate.com/fr/aide/articles/selectionner-le-format-d-export-de-fusion/">plusieurs formats</a>, notamment des documents Word modifiables (DOCX), des PDF pour la distribution finale, et d’autres formats. Cette polyvalence permet aux entreprises de distribuer du contenu dans le format qui convient le mieux à leurs besoins tout en conservant la possibilité de modifier les documents après leur génération.</p> <p>Les systèmes basés sur HTML se concentrent généralement avant tout sur la sortie PDF, ce qui limite la flexibilité lorsque les destinataires doivent modifier ou réutiliser le contenu. Lorsque des modifications sont nécessaires, tout le processus de génération de documents doit être répété plutôt que de simplement modifier le fichier de sortie. Cela peut créer des inefficacités dans les flux de travail où les documents doivent fréquemment être modifiés ou lorsque le contenu doit être extrait à d’autres fins.</p> <h3 id="sauts-de-page">Sauts de Page et Structure du Document</h3> <p>Contrôler la façon dont le contenu s’écoule sur les pages est essentiel pour des documents professionnels. Word gère naturellement les sauts de page, les sauts de section et l’écoulement du contenu, tandis que les systèmes basés sur HTML peinent souvent avec ces concepts, le HTML ayant été conçu pour un contenu fluide plutôt que pour des documents paginés.</p> <p>Cela devient particulièrement important lorsque les documents nécessitent des systèmes de numérotation de pages spécifiques, lorsque différentes sections nécessitent des mises en page ou orientations différentes, lorsque les en-têtes et pieds de page doivent varier tout au long du document, ou lorsque le contenu doit éviter de se couper entre les pages.</p> <h3 id="personnaliser-la-syntaxe">Personnaliser les Délimiteurs et la Syntaxe des Modèles</h3> <p>Avec les systèmes de modèles basés sur HTML, vous êtes généralement enfermé dans leur langage et leur syntaxe de modèle spécifiques. La plupart utilisent des délimiteurs fixes comme <code class="language-plaintext highlighter-rouge">{{ }}</code> ou <code class="language-plaintext highlighter-rouge">{% %}</code> pour les variables et la logique.</p> <p>DocuGenerate vous permet de <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">personnaliser les délimiteurs de vos modèles</a>, ce qui vous aide à éviter les conflits avec d’autres syntaxes dans vos documents, à créer des modèles adaptés aux préférences de votre équipe, à simplifier le processus de création de modèles, et à faciliter la migration depuis d’autres systèmes en faisant correspondre leur syntaxe.</p> <p><img src="https://www.docugenerate.com/assets/posts/014-word-html-templates/tag-delimiters.png" alt="Délimiteurs personnalisables" class="desktop-width-75"/></p> <h2 id="faire-le-bon-choix">Faire le Bon Choix pour Votre Entreprise</h2> <p>Lors de l’évaluation des solutions de génération de documents, prenez en compte ces facteurs clés :</p> <ol> <li><strong>Propriété des Modèles</strong> : Voulez-vous posséder vos modèles dans un format standard?</li> <li><strong>Exigences de Mise en Forme</strong> : Quelle est la complexité de vos besoins en mise en forme de documents?</li> <li><strong>Compétences des Utilisateurs</strong> : Quelle est l’expertise technique de votre équipe?</li> <li><strong>Flexibilité de Sortie</strong> : Avez-vous besoin de documents modifiables ou simplement de PDF?</li> <li><strong>Intégration</strong> : Comment la solution s’intègre-t-elle à vos flux de travail documentaires existants?</li> </ol> <p>Pour de nombreuses entreprises, la génération de documents basée sur Word offre l’équilibre optimal entre puissance, flexibilité et facilité d’utilisation. Elle s’intègre parfaitement aux processus métier existants, en offrant des fonctionnalités comme le suivi des modifications pour l’édition collaborative, les commentaires pour les retours, les outils de comparaison de documents, et la compatibilité avec de nombreuses plateformes de signature électronique qui fonctionnent directement avec les fichiers Word.</p> <h2 id="conclusion">Conclusion</h2> <p>Bien que les solutions de génération de documents basées sur Word et sur HTML aient toutes deux leur utilité, les modèles Word offrent des avantages significatifs pour la plupart des scénarios professionnels, notamment une véritable propriété de vos modèles, des capacités de mise en forme supérieures, une expérience d’édition familière, une flexibilité des formats de sortie, et des options de modification après génération.</p> <p>DocuGenerate s’appuie sur ces avantages avec des fonctionnalités supplémentaires comme les délimiteurs personnalisables, et une approche intuitive de la création de modèles. En évaluant les solutions de génération de documents pour votre entreprise, prenez en compte non seulement les fonctionnalités immédiates mais aussi les implications à long terme pour la propriété des modèles, l’adoption par les utilisateurs et l’intégration au flux de travail. Le bon choix peut faire gagner à votre équipe un temps précieux et garantir que vos documents répondent toujours exactement à vos standards.</p> <h3 id="ressources">Ressources</h3> <ul> <li><a href="https://www.docugenerate.com/fr/modeles/">Bibliothèque de Modèles</a> - Parcourez des modèles professionnels prêts à l’emploi</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/selectionner-le-format-d-export-de-fusion/">Guide des Formats d’Export</a> - Découvrez les différents formats de sortie disponibles</li> <li><a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">Personnaliser les Délimiteurs de Balises</a> - Apprenez à définir vos propres délimiteurs personnalisés</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[Découvrez pourquoi les modèles Word offrent des avantages significatifs par rapport aux alternatives basées sur HTML pour la génération de documents. Découvrez comment la propriété des modèles, le contrôle de la mise en forme et la flexibilité d'édition des documents peuvent bénéficier à votre flux de travail professionnel.]]></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">Présentation du Traitement et du Stockage Multi-Régions</title> <link href="https://www.docugenerate.com/fr/blog/presentation-du-traitement-et-du-stockage-multi-regions/" rel="alternate" type="text/html" title="Présentation du Traitement et du Stockage Multi-Régions"/> <published>2024-09-30T00:00:00+00:00</published> <updated>2024-09-30T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/presentation-du-traitement-et-du-stockage-multi-regions</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/presentation-du-traitement-et-du-stockage-multi-regions/"><![CDATA[<h2 id="qu-est-ce-que-le-multi-regions">Qu’est-ce que le Traitement et le Stockage Multi-Régions?</h2> <p>À la base, le traitement et le stockage multi-régions est la possibilité de choisir où vos données sont traitées. Que ce soit pour respecter des réglementations comme le RGPD, améliorer les performances pour les utilisateurs de différentes régions, ou simplement offrir un meilleur contrôle sur la localisation des données, cette nouvelle fonctionnalité change la donne.</p> <p>Avant cette mise à jour, tous les modèles et documents étaient stockés et traités dans une seule région (les États-Unis), qui servait de région par défaut pour tous les utilisateurs. Désormais, vous pouvez choisir l’emplacement physique où vos modèles et leurs documents associés sont traités et stockés, renforçant ainsi la sécurité et la rapidité. Les régions suivantes sont disponibles :</p> <ul> <li><strong>États-Unis</strong></li> <li><strong>Union Européenne</strong></li> <li><strong>Royaume-Uni</strong></li> <li><strong>Australie</strong></li> </ul> <p>Vous pouvez <a href="#region-par-defaut-compte">choisir une région par défaut</a> pour votre compte, et également <a href="#region-au-niveau-du-modele">configurer les régions au niveau du modèle</a>. Pour les utilisateurs avancés exploitant notre API, il est possible de spécifier la région de traitement via des appels API et d’utiliser des <a href="#points-de-terminaison-api-region">points de terminaison régionaux</a> pour la génération de documents. Nous allons vous expliquer tout ce que vous devez savoir sur cette mise à jour et comment vous pouvez <a href="#guide-de-migration">migrer vos modèles existants</a> pour profiter de cette fonctionnalité.</p> <h2 id="changements-application-web">Changements dans l’Application Web</h2> <p>Notre objectif avec cette mise à jour est de rendre la sélection de région aussi simple que possible pour les utilisateurs de l’application web. Nous avons introduit plusieurs changements clés pour simplifier le processus de sélection des régions, à la fois au niveau du compte et au niveau du modèle.</p> <h3 id="region-par-defaut-compte">Régions par Défaut au Niveau du Compte</h3> <p>Pour simplifier la gestion de plusieurs modèles, vous pouvez désormais <a href="https://www.docugenerate.com/fr/aide/articles/comment-selectionner-la-region-du-compte/">définir une région par défaut</a> dans les paramètres du compte. Ce réglage par défaut s’applique à tous les modèles nouvellement créés, garantissant qu’ils sont traités et stockés dans la région de votre choix sans avoir à sélectionner la région à chaque création de modèle.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/account-region-v2.png" alt="Mise à jour de la région par défaut du compte"/></p> <p>Par défaut, la région est définie sur les <strong>États-Unis</strong>, mais vous pouvez la modifier selon la région de votre choix, en fonction de vos besoins. Cette fonctionnalité est idéale pour les utilisateurs opérant dans une région spécifique et souhaitant garantir que tous leurs modèles et documents soient traités en conséquence.</p> <p>Par exemple, si vous opérez principalement en Europe et sélectionnez l’<strong>Union Européenne</strong> comme région par défaut, tous les nouveaux modèles seront automatiquement traités et stockés dans l’UE. Bien sûr, vous pouvez toujours remplacer ce réglage modèle par modèle, mais disposer d’une valeur par défaut peut vous faire gagner du temps et simplifier votre flux de travail.</p> <h3 id="region-au-niveau-du-modele">Sélection de Région pour les Modèles</h3> <p>Lorsque vous créez ou modifiez un modèle dans l’application web, vous verrez désormais une liste déroulante de régions vous permettant de <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-la-region-d-un-modele/">choisir l’emplacement physique</a> où votre modèle et ses documents sont traités et stockés. Cette sélection garantit que tous les documents générés à partir de ce modèle seront traités dans la région sélectionnée.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/template-region.png" alt="Mise à jour de la région de stockage et de traitement du modèle"/></p> <p>Par exemple, si vous sélectionnez l’<strong>Union Européenne</strong>, non seulement le modèle lui-même sera stocké dans notre centre de données européen, mais tous les documents générés à partir de ce modèle y seront également traités et stockés. Cela est particulièrement important pour les utilisateurs devant se conformer à des réglementations régionales, comme le RGPD, qui impose que les données appartenant à des résidents européens restent dans l’UE.</p> <p>Si vous décidez de changer la région d’un modèle existant, sachez que seuls les nouveaux documents générés après le changement seront affectés. Vos documents existants resteront dans la région où ils ont été initialement stockés.</p> <h2 id="changements-api">Changements au Niveau de l’API</h2> <p>Pour nos utilisateurs avancés qui interagissent avec DocuGenerate via l’API, nous avons introduit plusieurs mises à jour clés qui vous donneront un meilleur contrôle sur où et comment vos données sont traitées. Que vous créiez, mettiez à jour ou génériez des documents, l’API a été mise à jour pour prendre en charge la fonctionnalité multi-régions.</p> <h3 id="points-de-terminaison-api-region">Points de Terminaison API Multi-Régions</h3> <p>En plus du point de terminaison API principal que vous utilisiez jusqu’à présent, nous avons déployé plusieurs <a href="https://www.docugenerate.com/fr/aide/articles/puis-je-utiliser-des-points-de-terminaison-api-regionaux/">points de terminaison API régionaux</a> pour vous permettre de traiter et de stocker vos données dans des emplacements géographiques spécifiques. Ces nouveaux points de terminaison incluent :</p> <ul> <li><strong>États-Unis</strong> (hébergé à San Francisco) : <a href="https://api.docugenerate.com/" target="_blank">https://api.docugenerate.com/</a></li> <li><strong>Union Européenne</strong> (hébergé à Francfort) : <a href="https://api.eu.docugenerate.com/" target="_blank">https://api.eu.docugenerate.com/</a></li> <li><strong>Royaume-Uni</strong> (hébergé à Londres) : <a href="https://api.uk.docugenerate.com/" target="_blank">https://api.uk.docugenerate.com/</a></li> <li><strong>Australie</strong> (hébergé à Sydney) : <a href="https://api.au.docugenerate.com/" target="_blank">https://api.au.docugenerate.com/</a></li> </ul> <p>En utilisant ces points de terminaison régionaux, vous pouvez garantir que toute la génération de documents et le stockage des modèles se déroulent dans la région de votre choix. Cela est particulièrement utile pour des raisons de conformité, garantissant que vos données sont traitées entièrement dans une juridiction spécifique.</p> <p>Passer à un point de terminaison régional est simple : il suffit de modifier l’URL de base dans vos appels API vers le point de terminaison régional approprié. Par exemple, si vous avez besoin que vos documents soient traités dans l’UE, vous utiliseriez <a href="https://api.eu.docugenerate.com/" target="_blank">https://api.eu.docugenerate.com/</a> au lieu du point de terminaison par défaut.</p> <h3 id="region-modele-api">Spécification de la Région pour les Modèles</h3> <p>Une autre mise à jour clé de l’API vous permet de spécifier la région lors de la création ou de la mise à jour d’un modèle. Lorsque vous <a href="https://api.docugenerate.com/#/Template/createTemplate" target="_blank">créez un nouveau modèle</a> via l’API, vous pouvez inclure le champ <code class="language-plaintext highlighter-rouge">region</code> dans le corps de votre requête pour déterminer où ce modèle et ses documents seront stockés.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/api-create-template.png" alt="Spécifier la région lors de la création d'un modèle via l'API"/></p> <p>De même, vous pouvez <a href="https://api.docugenerate.com/#/Template/updateTemplate" target="_blank">mettre à jour la région d’un modèle</a> via l’API. Comme dans l’application web, changer la région du modèle n’affectera que les documents générés après le changement, laissant les documents générés précédemment dans leur région d’origine.</p> <p><img src="https://www.docugenerate.com/assets/posts/013-multi-region-processing/api-update-template.png" alt="Spécifier la région lors de la mise à jour d'un modèle via l'API"/></p> <h2 id="guide-de-migration">Guide de Migration</h2> <p>Pour rendre la transition vers le traitement multi-régions aussi fluide que possible, nous avons préparé un guide de migration pour les utilisateurs de l’application web et de l’API. Voici comment vous assurer que vos modèles et documents tirent pleinement parti de cette nouvelle fonctionnalité.</p> <h3 id="migration-application-web">Pour les Utilisateurs de l’Application Web</h3> <p>Si vous utilisez principalement l’application web, voici ce que vous devez faire :</p> <ol> <li> <p><strong>Définir la Région au Niveau du Compte :</strong> Accédez aux paramètres de votre compte et <a href="#region-par-defaut-compte">sélectionnez la région par défaut</a> où les nouveaux modèles seront stockés et traités. Ce réglage s’appliquera automatiquement à tous les modèles créés après le changement.</p> </li> <li> <p><strong>Mettre à Jour les Modèles Existants (Facultatif) :</strong> Si vous souhaitez déplacer des modèles existants vers une nouvelle région, accédez aux paramètres du modèle et <a href="#region-au-niveau-du-modele">sélectionnez une nouvelle région pour le modèle</a>. N’oubliez pas que cela n’affectera que les documents générés après le changement. Les documents existants resteront dans leur région d’origine.</p> </li> </ol> <h3 id="migration-api">Pour les Utilisateurs de l’API</h3> <p>Si vous utilisez l’API, suivez ces étapes pour migrer en toute simplicité :</p> <ol> <li> <p><strong>Passer à un Point de Terminaison API Régional :</strong> Mettez à jour l’URL de base de votre API vers le point de terminaison régional approprié (par exemple, <a href="https://api.eu.docugenerate.com/" target="_blank">https://api.eu.docugenerate.com/</a> pour le traitement dans l’UE). Cela garantit que vos modèles et documents sont traités dans la région qui répond le mieux à vos besoins.</p> </li> <li> <p><strong>Mettre à Jour les Modèles Existants (Facultatif) :</strong> Utilisez l’API pour mettre à jour la région de votre modèle en incluant le champ <code class="language-plaintext highlighter-rouge">region</code> dans vos requêtes API. Tout nouveau document généré après cette mise à jour sera stocké dans la nouvelle région du modèle.</p> </li> </ol> <h2 id="pourquoi-c-est-important">Pourquoi C’est Important</h2> <p>L’introduction du traitement et du stockage multi-régions apporte des avantages significatifs à nos utilisateurs. Voici quelques raisons pour lesquelles cette fonctionnalité est importante :</p> <p><strong>1. Conformité aux Réglementations Locales</strong> Si vous opérez dans des régions avec des lois strictes sur la résidence des données (par exemple, le RGPD de l’Union Européenne), cette fonctionnalité vous permet de garantir que vos données restent dans la juridiction requise. Vous avez désormais le contrôle sur l’endroit où vos modèles et documents sont traités, vous aidant à rester conforme aux lois locales.</p> <p><strong>2. Performances Améliorées</strong> En traitant et en stockant les données plus près de l’endroit où se trouvent vos utilisateurs, vous pouvez réduire la latence et améliorer les performances globales de la génération de documents. Par exemple, si la majorité de vos utilisateurs se trouvent en Europe, stocker les modèles et traiter les documents dans l’UE entraînera des temps de réponse plus rapides.</p> <p><strong>3. Plus de Flexibilité et de Contrôle</strong> Que vous soyez une petite entreprise opérant dans une région spécifique ou une grande entreprise mondiale avec des utilisateurs partout dans le monde, cette fonctionnalité vous offre la flexibilité d’adapter vos besoins de stockage et de traitement des données à votre situation unique.</p> <h2 id="scenarios-d-usage">Scénarios d’Usage</h2> <p><strong>1. Petite Entreprise avec des Clients Locaux</strong> Si vous êtes une petite entreprise opérant uniquement au Royaume-Uni, vous pouvez désormais sélectionner le <strong>Royaume-Uni</strong> comme région par défaut. Cela garantit que vos modèles et documents sont traités et stockés au Royaume-Uni, offrant à vos clients une garantie quant à la résidence des données et vous aidant à respecter les lois locales de protection des données.</p> <p><strong>2. Entreprise Basée dans l’Union Européenne avec des Clients Internationaux</strong> Une entreprise basée dans l’<strong>Union Européenne</strong> avec des clients à travers le monde peut configurer différents modèles pour différentes régions. Par exemple, vous pouvez stocker les modèles et traiter les documents pour les clients européens dans l’UE, tout en choisissant la région <strong>États-Unis</strong> pour les clients nord-américains. Cette flexibilité optimise non seulement les performances, mais garantit également la conformité au RGPD pour vos clients européens.</p> <p><strong>3. Grande Entreprise avec des Utilisateurs sur Plusieurs Continents</strong> Pour une entreprise mondiale servant des clients sur plusieurs continents, le traitement multi-régions permet une génération de documents efficace. Vous pouvez définir votre région de compte par défaut sur l’<strong>Australie</strong> pour les opérations en Asie-Pacifique, tout en utilisant les régions <strong>Union Européenne</strong> et <strong>États-Unis</strong> pour des besoins clients spécifiques dans ces zones. Cela réduit la latence et garantit que le traitement des documents est localisé pour de meilleures performances.</p> <h2 id="conclusion">Conclusion</h2> <p>Le traitement et le stockage multi-régions sont une nouvelle fonctionnalité puissante qui offre flexibilité, conformité et amélioration des performances pour tous les utilisateurs de DocuGenerate. Que vous utilisiez notre application web ou notre API, nous avons simplifié la sélection de la région qui correspond le mieux à vos besoins et garanti que vos modèles et documents soient traités en conséquence. Nous vous encourageons à explorer cette nouvelle fonctionnalité et à commencer à profiter des avantages qu’elle apporte.</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[Il est désormais possible de choisir l'emplacement physique où vos modèles et documents sont traités et stockés par DocuGenerate. Découvrez comment cette nouvelle fonctionnalité puissante peut vous aider à respecter les réglementations locales de conformité et à améliorer les performances.]]></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">Simplifier les Signatures Électroniques de NDA avec DocuGenerate et SignRequest</title> <link href="https://www.docugenerate.com/fr/blog/simplifier-les-signatures-electroniques-de-nda-avec-docugenerate-et-signrequest/" rel="alternate" type="text/html" title="Simplifier les Signatures Électroniques de NDA avec DocuGenerate et SignRequest"/> <published>2024-08-11T00:00:00+00:00</published> <updated>2024-08-11T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/simplifier-les-signatures-electroniques-de-nda-avec-docugenerate-et-signrequest</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/simplifier-les-signatures-electroniques-de-nda-avec-docugenerate-et-signrequest/"><![CDATA[<h2 id="qu-est-ce-qu-un-nda">Qu’est-ce qu’un NDA?</h2> <p>Un <strong>accord de confidentialité (NDA, Non-Disclosure Agreement)</strong> est un contrat juridiquement contraignant qui établit une relation de confidentialité entre des parties. Les NDA sont essentiels pour protéger les informations sensibles, garantissant que les parties impliquées dans des négociations commerciales, des partenariats ou des relations de travail ne divulguent pas d’informations exclusives à des tiers non autorisés.</p> <p>La gestion des NDA a longtemps été un processus manuel et chronophage, impliquant l’impression, la signature, la numérisation et l’envoi de documents par e-mail. Cependant, avec l’arrivée de technologies avancées de génération de documents et de signature électronique, ce processus peut désormais être automatisé et simplifié. Dans cet article de blog, nous allons explorer comment automatiser les signatures électroniques de NDA en utilisant <a href="https://www.docugenerate.com/">DocuGenerate</a> et <a href="https://signrequest.com/" target="_blank" rel="nofollow noopener">SignRequest</a>, une solution de signature électronique conçue pour rendre la signature de documents simple, rapide, sécurisée et juridiquement valide.</p> <h2 id="elements-cles">Éléments Clés d’un NDA</h2> <ul> <li> <p><strong>Définition des Informations Confidentielles</strong> : Précise clairement ce qui constitue une information confidentielle. Cela inclut les secrets commerciaux, les plans d’affaires, les documents financiers, les listes de clients, les technologies propriétaires et autres données sensibles non publiquement connues. Cela doit couvrir toutes les formes d’information, comme les documents écrits, les fichiers électroniques et les communications verbales.</p> </li> <li> <p><strong>Obligations de la Partie Réceptrice</strong> : Décrit les responsabilités de la partie recevant les informations confidentielles. Cela inclut l’utilisation des informations uniquement dans les buts spécifiés par le NDA, la limitation de l’accès aux personnes autorisées, et la mise en place de mesures raisonnables pour protéger les informations contre tout accès ou divulgation non autorisés. Des mesures de sécurité telles que le chiffrement et le stockage sécurisé peuvent être précisées.</p> </li> <li> <p><strong>Exclusions des Informations Confidentielles</strong> : Définit quelles informations ne sont pas considérées comme confidentielles. Les exclusions courantes incluent les informations publiquement connues, déjà connues de la partie réceptrice, développées de manière indépendante par celle-ci, ou divulguées par un tiers sans obligation de confidentialité.</p> </li> <li> <p><strong>Durée de l’Accord</strong> : Indique la durée pendant laquelle les obligations de confidentialité s’appliquent. Cela peut varier mais est souvent spécifié comme une période fixe, par exemple un à cinq ans, ou peut se poursuivre indéfiniment jusqu’à ce que l’information confidentielle ne soit plus considérée comme telle.</p> </li> <li> <p><strong>Conséquences d’une Violation</strong> : Précise les sanctions en cas de non-respect des termes du NDA. Cela peut inclure des actions en justice, des dommages-intérêts et des injonctions visant à empêcher toute divulgation supplémentaire. Décrire clairement les conséquences permet de dissuader les violations et fournit une marche à suivre claire en cas de manquement.</p> </li> </ul> <h2 id="avantages-automatisation">Les Avantages de l’Automatisation des Signatures Électroniques de NDA</h2> <p>Gérer les NDA manuellement peut être fastidieux et source d’erreurs. Le processus traditionnel comprend plusieurs étapes : rédiger le NDA, l’imprimer et le signer, le numériser et l’envoyer, puis le stocker. Ce processus manuel est non seulement chronophage, mais augmente également le risque d’erreurs, comme des signatures manquantes ou des documents perdus.</p> <p>Automatiser le processus de NDA grâce à la technologie de signature électronique offre de nombreux avantages. Tout d’abord, cela permet de gagner du temps en réduisant les étapes nécessaires pour générer, signer et stocker les NDA. L’automatisation minimise également les erreurs, garantissant que tous les champs nécessaires sont remplis et que les signatures sont obtenues. Cette efficacité accrue permet à votre équipe de se concentrer sur des tâches plus stratégiques. De plus, les signatures électroniques offrent un moyen sécurisé et inviolable de signer des documents, renforçant la sécurité globale. Enfin, réduire le besoin de documents papier favorise des pratiques commerciales plus respectueuses de l’environnement.</p> <h2 id="modele-nda">Créer le Modèle de NDA dans DocuGenerate</h2> <p>Pour ce tutoriel, nous utiliserons le <a href="https://www.docugenerate.com/assets/posts/012-nda-e-signature/Non Disclosure Agreement.docx">modèle de NDA</a> de la <a href="https://www.docugenerate.com/fr/modeles/#contrats">Bibliothèque de Modèles</a>. Ce modèle inclut toutes les sections et tous les espaces réservés nécessaires aux informations dynamiques, garantissant que chaque NDA généré est complet et précis.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/nda-template.png" alt="Modèle de NDA sur DocuGenerate"/></p> <h2 id="integration-zapier">Intégrer DocuGenerate avec SignRequest via Zapier</h2> <p>Pour automatiser le processus de signature du NDA, nous allons utiliser Zapier, un outil d’automatisation sans code qui nous permettra d’intégrer <a href="https://zapier.com/apps/docugenerate/integrations" target="_blank" rel="noopener">DocuGenerate</a> avec <a href="https://zapier.com/apps/signrequest/integrations" target="_blank" rel="noopener">SignRequest</a> de manière fluide. Son application Zapier offre une grande flexibilité pour l’envoi de documents en signature électronique, ce qui en fait un excellent choix pour notre cas d’usage. Alors que d’autres applications de signature électronique nécessitent de créer un modèle et de générer un document à partir de celui-ci, SignRequest permet de spécifier le document à signer via une URL, ce qui est très pratique.</p> <p>Cette intégration automatise l’ensemble du processus de signature du NDA sans avoir à écrire de code. Nous allons configurer un Zap avec les étapes suivantes :</p> <h3 id="new-document-trigger">1. New Document (Trigger)</h3> <p>Le flux de travail commence avec le déclencheur <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/#new-document-trigger">New Document</a> dans DocuGenerate, qui s’active chaque fois qu’un nouveau document est généré à partir du modèle de NDA. Cela garantit que le processus démarre dès que le NDA est prêt.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/new-document-trigger.png" alt="Déclencheur New Document sur DocuGenerate"/></p> <p>Bien que ce tutoriel se concentre sur un flux de travail simple, vous pouvez l’améliorer davantage en ajoutant des étapes pour récupérer les réponses à un formulaire, générer le document et envoyer la demande de signature au sein du même flux. Au lieu d’utiliser le déclencheur <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/#new-document-trigger">New Document</a> dans DocuGenerate, vous pourriez utiliser l’action <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/#generate-document-action">Generate Document</a> pour une automatisation plus intégrée.</p> <h3 id="text-formatter-action">2. Text Formatter (Action)</h3> <p>Puisque nous simplifions le flux de travail en omettant les étapes initiales de soumission de formulaire et de génération de document, nous avons besoin d’un moyen d’obtenir l’adresse e-mail du destinataire du NDA. Une méthode consiste à inclure l’adresse e-mail dans le nom du document, par exemple <em>“NDA - john.smith@gmail.com”</em>. L’action <a href="https://zapier.com/apps/formatter/integrations" target="_blank" rel="nofollow noopener">Text Formatter</a> de Zapier peut alors extraire l’adresse e-mail du nom du document en supprimant la partie <em>“NDA - “</em>. Nous pouvons nommer cette action <strong>Extract email address</strong> par exemple :</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/text-formatter-action.png" alt="Action Text Formatter pour extraire l'adresse e-mail"/></p> <h3 id="send-signrequest-action">3. Send SignRequest (Action)</h3> <p>Utilisez l’action <strong>Send SignRequest</strong> dans SignRequest pour envoyer le NDA en signature électronique. Configurez les paramètres comme suit :</p> <ul> <li><code class="language-plaintext highlighter-rouge">File From URL</code> reçoit le <code class="language-plaintext highlighter-rouge">Document URL</code> de DocuGenerate.</li> <li><code class="language-plaintext highlighter-rouge">SignRequest Name</code> reçoit le <code class="language-plaintext highlighter-rouge">File Name</code> de DocuGenerate.</li> <li><code class="language-plaintext highlighter-rouge">Signer Email</code> reçoit l’<code class="language-plaintext highlighter-rouge">Output</code> du Text Formatter.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-action.gif" alt="Configuration de l'action Send SignRequest"/></p> <p>Cette configuration garantit que dès qu’un NDA est généré, il est automatiquement envoyé en signature électronique, simplifiant le processus et réduisant l’intervention manuelle.</p> <h2 id="processus-email-signature">Processus d’E-mail et de Signature</h2> <p>Une fois le flux de travail activé, le destinataire recevra un e-mail avec le NDA prêt à être signé électroniquement. Voyons comment le document apparaît sur le tableau de bord de SignRequest, l’e-mail reçu par le destinataire, et le processus de signature lui-même.</p> <h3 id="tableau-de-bord-signrequest">1. Vue du Tableau de Bord SignRequest</h3> <p>Une fois le document généré et envoyé en signature, il apparaîtra sur votre <a href="https://signrequest.com/#/documents" target="_blank" rel="nofollow noopener">tableau de bord SignRequest</a>. Vous pouvez ici suivre facilement le statut de tous vos documents, voir qui a signé et qui doit encore signer. Ce tableau de bord offre une vue centralisée, facilitant la gestion de tous vos documents signés.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-dashboard.png" alt="Capture d'écran du tableau de bord SignRequest montrant le document NDA"/></p> <h3 id="notification-email">2. Notification par E-mail au Destinataire</h3> <p>Le destinataire recevra une notification par e-mail de SignRequest, l’informant qu’un document attend sa signature. Cet e-mail inclut un lien sécurisé vers le document, garantissant que seul le destinataire prévu peut y accéder et le signer.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-email.png" alt="Capture d'écran de l'e-mail reçu par le destinataire"/></p> <h3 id="processus-de-signature">3. Processus de Signature</h3> <p>En cliquant sur le lien dans l’e-mail, le destinataire accédera à la plateforme SignRequest, où il pourra consulter et signer le NDA. Le processus de signature est intuitif et simple, ne nécessitant que quelques clics. Le destinataire peut signer le document électroniquement, et une fois signé, les deux parties recevront une copie du NDA signé.</p> <p><img src="https://www.docugenerate.com/assets/posts/012-nda-e-signature/signrequest-signature.gif" alt="Animation du processus de signature"/></p> <p>Cette expérience fluide garantit que le NDA est signé rapidement et en toute sécurité, sans avoir besoin d’imprimer, de numériser ou d’envoyer des documents physiques.</p> <h2 id="exemples-cas-d-usage">Exemples de Cas d’Usage</h2> <p>Automatiser la génération de NDA et les signatures électroniques peut être très bénéfique dans divers scénarios. Voici quelques exemples :</p> <ul> <li> <p><strong>Processus de Vente</strong> Dans un processus de vente, avant de réserver un appel avec un client potentiel, vous pourriez avoir besoin qu’il signe un NDA pour protéger des informations commerciales sensibles. Vous pouvez créer un formulaire que le client remplira avec les informations de base nécessaires pour générer le NDA. La soumission de ce formulaire déclenche la génération du NDA via DocuGenerate, qui est ensuite envoyé en signature électronique via SignRequest. Pour des instructions plus détaillées sur la création d’un tel formulaire, consultez notre article de blog sur la <a href="https://www.docugenerate.com/fr/blog/utiliser-tally-et-make-pour-generer-des-rapports-a-partir-de-formulaires/">Génération de Rapports basés sur la Soumission de Formulaires</a> (bien que ce tutoriel utilise Make au lieu de Zapier, le principe reste le même).</p> </li> <li> <p><strong>Intégration des Nouveaux Employés</strong> Lors de l’intégration de nouveaux employés, les entreprises exigent souvent la signature d’un NDA pour protéger les informations propriétaires. Automatiser ce processus garantit que chaque nouvelle recrue reçoit et signe le NDA rapidement. Les nouveaux employés peuvent renseigner leurs informations via un formulaire en ligne, déclenchant la génération et l’envoi du NDA, simplifiant le flux de travail RH et garantissant la conformité.</p> </li> <li> <p><strong>Accords de Partenariat</strong> Lors de la conclusion de partenariats avec d’autres entreprises ou freelances, il est essentiel d’avoir un NDA en place pour protéger les informations partagées. Automatiser la génération et la signature du NDA garantit que ces accords sont traités efficacement et en toute sécurité. Les partenaires peuvent facilement signer le NDA électroniquement, ce qui accélère le processus et réduit la charge administrative.</p> </li> <li> <p><strong>Missions de Consultants</strong> Les entreprises font souvent appel à des consultants pour travailler sur des projets sensibles. Un NDA est essentiel pour protéger la propriété intellectuelle et les données confidentielles. Automatiser le processus de NDA permet aux entreprises de générer et d’envoyer rapidement des NDA aux consultants, garantissant que toutes les protections juridiques nécessaires sont en place avant le début des travaux.</p> </li> <li> <p><strong>Fusions et Acquisitions</strong> Dans les fusions et acquisitions, les NDA sont essentiels pour protéger les informations financières et stratégiques sensibles pendant les négociations. Automatiser le processus de génération et de signature électronique des NDA garantit que toutes les parties impliquées peuvent rapidement signer et accéder aux accords nécessaires, facilitant des transactions plus fluides et plus rapides.</p> </li> </ul> <h2 id="conclusion">Conclusion</h2> <p>Automatiser les signatures électroniques de NDA avec DocuGenerate et SignRequest offre des avantages significatifs, notamment un gain de temps, une réduction des erreurs, une efficacité améliorée, une sécurité renforcée et des bénéfices environnementaux. En suivant les étapes décrites dans ce guide, vous pouvez simplifier votre flux de travail de NDA, vous permettant de vous concentrer sur des tâches plus stratégiques et d’améliorer la productivité globale.</p> <p>Intégrer DocuGenerate et SignRequest dans votre processus de gestion documentaire est une décision judicieuse pour toute entreprise souhaitant moderniser ses opérations et rester compétitive dans le paysage actuel. Commencez dès aujourd’hui à automatiser vos signatures électroniques de NDA et découvrez l’impact transformateur de ces outils puissants.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://www.docugenerate.com/assets/posts/012-nda-e-signature/Non Disclosure Agreement.docx">modèle de NDA</a> utilisé dans ce tutoriel.</li> <li>L’<a href="https://zapier.com/apps/signrequest/integrations" target="_blank" rel="noopener">application SignRequest</a> sur 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[Découvrez comment automatiser les signatures électroniques et gérer efficacement les accords de confidentialité dans divers scénarios professionnels. Découvrez les avantages de l'intégration de technologies avancées de génération de documents et de signature électronique pour renforcer la sécurité, gagner du temps et améliorer la productivité.]]></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">Générer un Script avec des Instructions SQL à partir de Données Excel</title> <link href="https://www.docugenerate.com/fr/blog/generer-un-script-avec-des-instructions-sql-a-partir-de-donnees-excel/" rel="alternate" type="text/html" title="Générer un Script avec des Instructions SQL à partir de Données Excel"/> <published>2024-07-05T00:00:00+00:00</published> <updated>2024-07-05T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/generer-un-script-avec-des-instructions-sql-a-partir-de-donnees-excel</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/generer-un-script-avec-des-instructions-sql-a-partir-de-donnees-excel/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Générer des scripts SQL nécessite souvent soit des connaissances approfondies en programmation, soit une saisie manuelle minutieuse des données. Cependant, avec les bons outils, ce processus peut être simplifié et rendu accessible à tous. DocuGenerate offre une solution puissante qui automatise la création de scripts SQL à partir de fichiers Excel ou CSV, éliminant ainsi le besoin de coder manuellement.</p> <p>Cet article de blog vous guidera dans le processus de création d’un script SQL paramétré, de préparation de votre source de données, et d’utilisation de DocuGenerate pour automatiser la génération de scripts. Nous explorerons également des cas d’usage pratiques pour illustrer la polyvalence et l’efficacité de cette approche.</p> <h2 id="resume">Ce que Vous Allez Apprendre</h2> <ol> <li><a href="#script-sql">Créer un Script SQL Paramétré</a> Apprenez à écrire un script SQL avec des espaces réservés au lieu de valeurs codées en dur.</li> <li><a href="#source-de-donnees">Préparer Votre Source de Données</a> Comprenez comment structurer vos données dans un fichier Excel ou CSV.</li> <li><a href="#automatisation-docugenerate">Utiliser DocuGenerate pour l’Automatisation</a> Découvrez comment DocuGenerate peut automatiser le processus, le rendant accessible aux utilisateurs non techniques.</li> <li><a href="#cas-d-usage">Cas d’Usage Pratiques</a> Découvrez comment cette technique peut être appliquée dans divers scénarios, de la migration de données à la génération de rapports.</li> </ol> <h2 id="script-sql">Créer un Script SQL Paramétré</h2> <p>Avant de nous lancer dans la création de scripts SQL paramétrés, commençons par comprendre ce qu’ils sont et comment ils sont utilisés.</p> <p><strong>SQL (Structured Query Language)</strong> est un langage standardisé utilisé pour gérer et manipuler des bases de données relationnelles. Les commandes SQL permettent aux utilisateurs d’effectuer des tâches comme interroger des données, mettre à jour des enregistrements, insérer de nouveaux enregistrements et supprimer des enregistrements d’une base de données. SQL est essentiel pour interagir avec la base de données afin de récupérer et gérer les données efficacement.</p> <p>Un <strong>script SQL</strong> est un fichier contenant une séquence de commandes SQL. Ces scripts sont utilisés pour exécuter plusieurs commandes SQL en lot, permettant l’automatisation des opérations sur la base de données. Les scripts SQL peuvent être utilisés pour diverses tâches, notamment la manipulation de données, la création de schémas de base de données et la migration de données.</p> <p>Créer un script SQL implique souvent d’écrire des instructions répétitives avec des valeurs différentes. Pour illustrer cela, considérons le script SQL non paramétré suivant pour insérer des données dans une table <code class="language-plaintext highlighter-rouge">customer</code> :</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>Ce script insère un nouvel enregistrement dans la table customer avec des valeurs spécifiques pour chaque colonne. Lorsqu’il s’agit de plusieurs enregistrements, les scripts SQL peuvent contenir plusieurs instructions <code class="language-plaintext highlighter-rouge">INSERT</code> pour ajouter plusieurs enregistrements à la base de données.</p> <p>Comme vous pouvez le voir, chaque ligne est similaire mais avec des valeurs différentes. Ce processus peut devenir fastidieux et source d’erreurs lorsqu’il s’agit de grands jeux de données. Pour résoudre ce problème, nous utilisons des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">espaces réservés</a> pour les valeurs, rendant le script paramétré :</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>Dans ce script, les espaces réservés <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> et <code class="language-plaintext highlighter-rouge">{created_at}</code> seront remplacés par les valeurs réelles provenant de notre source de données.</p> <h2 id="source-de-donnees">Préparer Votre Source de Données</h2> <p>Ensuite, nous devons préparer un fichier Excel ou CSV avec les données qui seront utilisées pour remplir notre script SQL. Voici un exemple de structure de <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.csv">fichier CSV</a> correspondant à nos espaces réservés :</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>Vous pouvez également préparer vos données dans un <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.xlsx">fichier Excel</a> avec la même structure :</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/excel-data.png" alt="Exemple de données Excel"/></p> <p>Chaque ligne du fichier CSV ou Excel correspond à un nouvel enregistrement qui sera inséré dans la table customer. Cette structure garantit que nos données sont organisées et prêtes à être fusionnées avec le modèle de script SQL.</p> <h2 id="automatisation-docugenerate">Utiliser DocuGenerate pour l’Automatisation</h2> <p>DocuGenerate vous permet d’automatiser le processus de génération de scripts SQL en utilisant un modèle et une source de données. Voici un guide étape par étape pour y parvenir :</p> <h3 id="1-créer-un-modèle">1. Créer un Modèle</h3> <p>Tout d’abord, enregistrez votre script SQL paramétré en tant que fichier modèle. Par exemple, le fichier <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Template.sql">SQL Template.sql</a> contient le script utilisé dans cet article.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/sql-template-v3.png" alt="Modèle SQL"/></p> <h3 id="2-téléverser-le-modèle">2. Téléverser le Modèle</h3> <p>Ensuite, connectez-vous à votre compte DocuGenerate et téléversez votre fichier SQL pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créer un nouveau modèle</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/docugenerate-template.png" alt="Modèle SQL sur DocuGenerate"/></p> <h3 id="3-téléverser-la-source-de-données">3. Téléverser la Source de Données</h3> <p>Ensuite, <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-d-un-fichier-excel-ou-csv/">téléversez votre fichier CSV ou Excel</a> contenant les données client. Utilisez l’interface intuitive de DocuGenerate pour générer le script SQL.</p> <p>Assurez-vous de sélectionner l’option permettant de <a href="https://www.docugenerate.com/fr/aide/articles/combiner-les-documents-generes-en-un-seul-fichier/">combiner les documents générés</a> en un seul fichier et de ne pas insérer de saut de page après chaque document. Ainsi, les documents générés, dans ce cas les instructions SQL, seront combinés consécutivement, sans saut de page entre eux.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/generate-script.gif" alt="Générer le script SQL"/></p> <h3 id="4-générer-le-script-sql">4. Générer le Script SQL</h3> <p>Lors de la génération du document, les espaces réservés du modèle seront remplacés par les valeurs réelles provenant du fichier CSV ou Excel.</p> <p>Exportez le document généré en tant que fichier <strong>texte brut (.txt)</strong>, puis renommez le fichier exporté avec une extension <code class="language-plaintext highlighter-rouge">.sql</code> au lieu de <code class="language-plaintext highlighter-rouge">.txt</code>. Ainsi, le script SQL sera reconnu par les systèmes de gestion de base de données capables d’exécuter les instructions SQL en lot.</p> <p><img src="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/sql-script-v3.png" alt="Script SQL"/></p> <p>En suivant ces étapes, vous pouvez rapidement générer plusieurs instructions SQL sans intervention manuelle. Vous pouvez télécharger le fichier obtenu <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Script.sql">ici</a>. Cela permet non seulement de gagner du temps, mais réduit également le risque d’erreurs pouvant survenir lors d’une saisie manuelle des données.</p> <h2 id="cas-d-usage">Cas d’Usage Pratiques</h2> <p>Cette technique peut être extrêmement utile dans divers scénarios :</p> <ul> <li> <p><strong>Migration de Données</strong> : Lors de la migration de données d’un système à un autre, vous pouvez générer des scripts SQL pour insérer de grands volumes de données avec précision et efficacité. Par exemple, si vous transférez des données client d’un ancien système CRM vers un nouveau CRM avec logiciel de marketing par e-mail, générer les scripts SQL nécessaires peut garantir un transfert de données fluide et précis.</p> </li> <li> <p><strong>Génération de Rapports</strong> : Automatisez la création de requêtes SQL pour la génération de rapports basés sur des données dynamiques. Cela peut être particulièrement utile pour générer des rapports mensuels ou trimestriels dont les données changent régulièrement. En mettant à jour le fichier source de données, vous pouvez générer des scripts SQL à jour sans réécrire les requêtes manuellement.</p> </li> <li> <p><strong>Initialisation de Base de Données</strong> : Pour les environnements de développement et de test, générez des scripts SQL pour initialiser des bases de données avec des données d’exemple. Cela permet aux développeurs de tester leurs applications avec des jeux de données réalistes, garantissant que l’application se comporte comme prévu dans un environnement de production.</p> </li> <li> <p><strong>Mises à Jour en Masse</strong> : Effectuez des mises à jour en masse sur les enregistrements de la base de données en générant des scripts SQL de mise à jour à partir d’un fichier CSV ou Excel. Cela peut être particulièrement utile pour appliquer des changements en masse, comme la mise à jour des informations tarifaires pour un large inventaire de produits.</p> </li> <li> <p><strong>Scripts SQL Personnalisés</strong> : Créez des scripts SQL personnalisés pour différents clients ou cas d’usage en changeant simplement le fichier source de données. Cette flexibilité permet aux entreprises d’adapter leurs opérations de base de données aux besoins spécifiques de chaque client sans codage manuel important.</p> </li> </ul> <h2 id="conclusion">Conclusion</h2> <p>Avec DocuGenerate, générer des scripts SQL à partir d’un fichier Excel ou CSV devient un processus simple et accessible. Cet outil puissant va au-delà des tâches traditionnelles de génération de documents, offrant des solutions polyvalentes pour la gestion des données et l’automatisation.</p> <p>Que vous soyez un développeur souhaitant simplifier votre flux de travail ou un utilisateur non technique cherchant à automatiser des tâches répétitives, DocuGenerate offre une plateforme facile à utiliser pour répondre à vos besoins. Commencez dès aujourd’hui à exploiter la puissance de DocuGenerate et transformez votre façon de gérer la génération de scripts SQL et d’autres tâches d’automatisation de documents.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Template.sql">modèle SQL</a> utilisé dans ce tutoriel.</li> <li>Les fichiers d’exemple <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.xlsx">Excel</a> et <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Data.csv">CSV</a> utilisés dans ce tutoriel.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/011-sql-script-from-excel-data/SQL Script.sql">script SQL</a> généré contenant les instructions SQL.</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[Découvrez un guide étape par étape pour créer des scripts SQL paramétrés, préparer vos sources de données, et exploiter les puissantes capacités d'automatisation de DocuGenerate. Idéal aussi bien pour les développeurs que pour les utilisateurs non techniques souhaitant gérer leurs données facilement.]]></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">Comment Créer des Billets d’Événement avec Codes-Barres via Make</title> <link href="https://www.docugenerate.com/fr/blog/comment-creer-des-billets-d-evenement-avec-codes-barres-via-make/" rel="alternate" type="text/html" title="Comment Créer des Billets d’Événement avec Codes-Barres via Make"/> <published>2024-06-14T00:00:00+00:00</published> <updated>2024-06-14T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/comment-creer-des-billets-d-evenement-avec-codes-barres-via-make</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/comment-creer-des-billets-d-evenement-avec-codes-barres-via-make/"><![CDATA[<h2 id="vue-d-ensemble-du-scenario">Vue d’Ensemble du Scénario</h2> <p>Créer des billets d’événement avec des codes-barres peut transformer la gestion des entrées et améliorer l’expérience client. L’automatisation permet non seulement de gagner du temps, mais réduit également les erreurs et apporte une touche professionnelle. Dans ce guide, nous allons utiliser <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> (anciennement Integromat) pour automatiser tout le processus. Nous allons intégrer <a href="https://stripe.com/en-fr" target="_blank" rel="nofollow noopener">Stripe</a> pour gérer les paiements, générer les billets avec <a href="https://www.docugenerate.com/">DocuGenerate</a>, et les envoyer à vos clients par e-mail. Voici ce que vous allez apprendre :</p> <ul> <li><a href="#configurer-stripe">Configurer Stripe</a> : Comment configurer Stripe pour le traitement des paiements.</li> <li><a href="#configurer-docugenerate">Configurer DocuGenerate</a> : Concevoir et téléverser un modèle de billet.</li> <li><a href="#scenario-make">Créer le Scénario Make</a> : Automatiser la génération des billets et leur envoi par e-mail.</li> </ul> <p>Passons maintenant au processus étape par étape.</p> <h2 id="configurer-stripe">Configurer Stripe</h2> <p>Stripe est une plateforme de traitement des paiements puissante qui permet d’accepter facilement des paiements en ligne. Pour notre système de billetterie d’événement, Stripe gérera les paiements pour le produit <a href="#produit-stripe">Event Admission</a> que nous allons créer ci-dessous. Voici comment le configurer :</p> <h3 id="connexion-stripe">1. Créer une Connexion Stripe dans Make</h3> <p>Tout d’abord, vous devez ajouter l’ <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">application Stripe</a> à votre scénario et utiliser le déclencheur <strong>Watch Events</strong>, qui s’active lorsqu’un événement donné se produit. Pour créer une connexion Stripe dans Make, vous devez également générer une clé API restreinte. Allez sur la page <a href="https://dashboard.stripe.com/apikeys" target="_blank" rel="nofollow noopener">Developers</a> de Stripe, cliquez sur <strong>Create restricted key</strong> et configurez les permissions suivantes :</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>Cette clé API permettra à Make d’interagir avec votre compte Stripe en toute sécurité, en récupérant les informations nécessaires sur les transactions et en garantissant que les bonnes données sont utilisées pour la génération des billets.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-restricted-api-key.png" alt="Créer une connexion Stripe dans Make"/></p> <p>Pour des instructions détaillées sur la configuration de la connexion Stripe, consultez la <a href="https://www.make.com/en/help/app/stripe" target="_blank" rel="nofollow noopener">documentation</a> de l’intégration Stripe. Ce guide fournit un parcours étape par étape pour connecter Stripe à Make.</p> <h3 id="webhook-stripe">2. Créer un Webhook pour Checkout Session Completed</h3> <p>Ensuite, vous devez créer un webhook dans Stripe. Les webhooks sont essentiels car ils informent votre système lorsque certains événements se produisent dans votre compte Stripe. Pour cette configuration, nous nous intéressons à l’événement <strong>Checkout Session completed</strong>, qui se déclenche lorsqu’un client effectue avec succès un achat.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-create-webhook.png" alt="Créer un webhook Stripe pour checkout session completed"/></p> <p>Une fois configuré, ce webhook sera visible sur la page <a href="https://dashboard.stripe.com/webhooks" target="_blank" rel="nofollow noopener">Developers</a> de Stripe. Cette visibilité vous permet de surveiller et de gérer efficacement vos webhooks, vous aidant à résoudre tout problème éventuel.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-make-webhook.png" alt="Webhook Make visible sur la page Developers de Stripe"/></p> <h3 id="produit-stripe">3. Créer le Produit “Event Admission”</h3> <p>Créez maintenant un produit dans Stripe appelé <strong>Event Admission</strong>. Ce produit représente le billet pour votre événement. Lorsque les clients achètent ce produit, cela déclenche l’ensemble du processus de billetterie.</p> <p>Créer un produit dans Stripe est simple. Assurez-vous que tous les détails pertinents, comme le prix et la description, sont correctement renseignés afin de fournir des informations claires à vos clients.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-event-product.png" alt="Le produit &quot;Event Admission&quot; sur Stripe"/></p> <h3 id="lien-de-paiement-stripe">4. Créer un Lien de Paiement pour Votre Produit</h3> <p>Une fois votre produit configuré, l’étape suivante consiste à <a href="https://docs.stripe.com/payment-links/create" target="_blank" rel="nofollow noopener">créer un lien de paiement</a>. Ce lien est celui que vos clients utiliseront pour acheter leurs billets d’événement. Stripe facilite la génération de ces liens, que vous pouvez ensuite partager par e-mail, sur les réseaux sociaux ou sur votre site web. Le lien de paiement dirigera les clients vers une page de paiement sécurisée où ils pourront finaliser leur achat.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/stripe-create-payment-link.png" alt="Création du lien de paiement pour le produit &quot;Event Admission&quot;"/></p> <p>Vous pouvez tester le processus de paiement en utilisant le <a href="https://buy.stripe.com/test_8wM3eEcTF0Jxb2oeUV" target="_blank" rel="nofollow noopener">lien de paiement</a> pour le produit <strong>Event Admission</strong>. Saisissez votre adresse e-mail et pour les informations de carte, utilisez <code class="language-plaintext highlighter-rouge">4242 4242 4242 4242</code>, un numéro de carte de test sur Stripe. Pour la date d’expiration et le CVC, vous pouvez utiliser des valeurs fictives, à condition que la date d’expiration soit dans le futur. Ensuite, en cliquant sur <strong>Pay</strong>, vous recevrez un e-mail avec votre billet PDF de test, comme <a href="#scenario-make-complet">détaillé plus loin</a>.</p> <h2 id="configurer-docugenerate">Configurer DocuGenerate</h2> <p>DocuGenerate est un outil puissant pour <a href="/fr/produit/">automatiser la création de documents</a>. Dans cette étape, nous allons configurer DocuGenerate pour créer un modèle de billet. Ce modèle sera utilisé pour générer des billets personnalisés pour chaque client.</p> <h3 id="conception-du-billet">1. Concevoir Votre Modèle de Billet</h3> <p>Commencez par concevoir un modèle de billet dans Microsoft Word. Le modèle doit inclure des espaces réservés (également appelés <a href="/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a>) pour les champs suivants : <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> et <code class="language-plaintext highlighter-rouge">event_address</code>. Ces espaces réservés seront remplacés par les données réelles lors de la génération des billets.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/ticket-word-template.png" alt="Le modèle &quot;Event Ticket Template&quot; dans Word"/></p> <h3 id="televerser-le-modele">2. Téléverser le Modèle sur DocuGenerate</h3> <p>Une fois votre modèle prêt, <a href="/fr/aide/articles/comment-creer-un-nouveau-modele/">téléversez-le sur DocuGenerate</a>. Cette étape est essentielle car elle prépare le modèle pour la génération automatisée de documents. DocuGenerate utilisera ce modèle pour créer des billets uniques pour chaque client à partir des données reçues de Stripe.</p> <p>Assurez-vous d’activer la <a href="/fr/aide/articles/comment-activer-la-syntaxe-avancee/">syntaxe avancée</a>, nécessaire pour utiliser le filtre <code class="language-plaintext highlighter-rouge">barcode</code> afin d’ <a href="/fr/aide/articles/comment-ajouter-des-qr-codes-et-codes-a-barres/#adding-barcodes">ajouter un code-barres</a> au billet. Notez également que les balises de fusion ne contiennent aucun espace, car les espaces sont incompatibles avec la syntaxe avancée. Nous utilisons plutôt le caractère underscore (<code class="language-plaintext highlighter-rouge">_</code>) pour séparer les mots dans les balises de fusion.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/docugenerate-ticket-template.png" alt="Le modèle &quot;Event Ticket Template&quot; sur DocuGenerate"/></p> <p>N’hésitez pas à <a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Event Ticket Template.docx">télécharger le modèle</a> et à le personnaliser pour qu’il corresponde à l’image de marque et aux détails de votre événement.</p> <h2 id="scenario-make">Créer le Scénario Make</h2> <p>Avec Stripe et DocuGenerate configurés, nous allons maintenant créer un scénario dans Make pour automatiser la génération des billets et leur envoi par e-mail. Ce scénario reliera tous les composants entre eux, garantissant un flux de travail fluide, du paiement à la livraison du billet.</p> <h3 id="action-generate-document">1. Configurer l’Action “Generate a Document”</h3> <p>Dans Make, configurez l’action <a href="/fr/aide/articles/automatiser-la-generation-de-documents-avec-make/#generate-document-action">Generate a Document</a> en connectant l’ <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">application DocuGenerate</a>. Cette action récupérera les données de la session de paiement Stripe et les utilisera pour générer un billet. Assurez-vous que tous les espaces réservés de votre modèle de billet sont correctement associés aux champs de données provenant de Stripe.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/docugenerate-new-document.png" alt="Configurer l'action &quot;Generate a Document&quot; dans Make"/></p> <p>Pour ce tutoriel, nous avons utilisé l’ID de l’événement comme numéro de billet, mais vous pouvez utiliser n’importe quelle valeur adaptée à vos besoins. Nous avons également utilisé la propriété <code class="language-plaintext highlighter-rouge">customer_details: name</code> de la charge utile de l’événement Stripe pour renseigner le nom du document et la balise <code class="language-plaintext highlighter-rouge">full_name</code> du document.</p> <h3 id="recuperer-le-contenu-du-fichier">2. Utiliser le Module HTTP pour Récupérer le Contenu du Fichier</h3> <p>Après avoir généré le document, utilisez le <a href="https://www.make.com/en/help/tools/http" target="_blank" rel="noopener">module HTTP</a> dans Make pour récupérer le contenu du fichier PDF généré. Ce module récupérera le billet depuis DocuGenerate, prêt à être envoyé par e-mail.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/http-get-document.png" alt="Utiliser le module HTTP pour récupérer le contenu du fichier généré"/></p> <h3 id="action-send-email">3. Configurer l’Action “Send an Email” dans Make</h3> <p>Configurez ensuite l’action “Send an Email” depuis l’ <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">application Email officielle</a>. Cette action enverra le billet PDF généré à l’adresse e-mail du client. Assurez-vous de personnaliser le contenu de l’e-mail pour inclure les détails de l’événement et toute autre information pertinente.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/send-email.png" alt="Configurer l'action &quot;Send an Email&quot; sur Make"/></p> <p>La valeur <strong>To Email Address</strong> est renseignée avec la propriété <code class="language-plaintext highlighter-rouge">customer_details: email</code> de la charge utile de l’événement Stripe reçue par le <a href="#webhook-stripe">webhook</a> après un paiement réussi.</p> <p>Quant à l’<strong>Attachment</strong>, sa valeur sera fournie par l’action <strong>HTTP - Get a file</strong> <a href="#recuperer-le-contenu-du-fichier">configurée précédemment</a>.</p> <p>Pour une solution de marketing par e-mail plus avancée, envisagez d’utiliser Mailmodo comme alternative à l’application Email générique de Make. Avec l’ <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">application Make</a> de Mailmodo, vous pouvez facilement créer et envoyer des e-mails dynamiques et interactifs directement depuis votre flux de travail. Cette option est particulièrement utile si vous souhaitez intégrer des fonctionnalités comme les e-mails AMP, le suivi ou l’analyse.</p> <h3 id="scenario-make-complet">4. Le Scénario Make Complet</h3> <p>La représentation visuelle du scénario complet montre comment chaque étape est interconnectée, garantissant un flux fluide des données et des actions. Chaque module du scénario joue un rôle essentiel :</p> <ul> <li>Le déclencheur <strong>Watch Events</strong> surveille les paiements complétés sur Stripe.</li> <li>L’action <strong>Generate a Document</strong> crée le billet à partir du modèle DocuGenerate.</li> <li>L’action <strong>Get a File</strong> récupère le billet PDF généré.</li> <li>L’action <strong>Send an Email</strong> délivre le billet au client.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/make-scenario.gif" alt="Le scénario Make complet"/></p> <p>Une fois le scénario déclenché et le billet généré, le client recevra un e-mail avec le billet en pièce jointe. Ce processus automatisé garantit que les clients reçoivent leurs billets rapidement et sans aucune intervention manuelle.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/email-ticket.png" alt="E-mail avec le billet PDF généré en pièce jointe"/></p> <p>Voici un exemple de billet généré, que vous pouvez <a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Ticket for Charlie Bucket.pdf">télécharger ici</a> si cela vous intéresse.</p> <p><img src="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Ticket for Charlie Bucket.png" alt="Exemple de billet PDF généré"/></p> <h2 id="conclusion">Conclusion</h2> <p>En suivant ce guide, vous pouvez automatiser l’ensemble du processus de création et d’envoi de billets d’événement avec codes-barres en utilisant Make. Cela permet non seulement de gagner du temps, mais garantit également une expérience fluide et professionnelle pour les participants à votre événement. Intégrer Stripe, DocuGenerate et Make offre une solution puissante pour simplifier la gestion des billets pour tout événement.</p> <p>Automatiser la génération et la livraison des billets améliore l’efficacité et réduit les erreurs, vous facilitant la gestion de vos événements. De plus, cela améliore l’expérience client en offrant un accès instantané aux billets et en garantissant qu’ils disposent de toutes les informations nécessaires.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://buy.stripe.com/test_8wM3eEcTF0Jxb2oeUV" target="_blank" rel="nofollow noopener">lien de paiement</a> pour tester l’achat du produit.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Event Ticket Template.docx">modèle Event Ticket Template</a> utilisé dans ce tutoriel.</li> <li>Un exemple de <a href="https://www.docugenerate.com/assets/posts/009-tickets-barcode-make/Ticket for Charlie Bucket.pdf" target="_blank">billet PDF</a> généré avec ce scénario.</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[Automatisez la création de billets d'événement avec des codes-barres en utilisant Make. En intégrant Stripe pour le traitement des paiements et DocuGenerate pour la génération de PDF, vous pouvez concevoir un scénario qui crée et envoie des billets personnalisés à vos clients par e-mail.]]></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">Automatiser les Contrats avec Zapier et Google Sheets</title> <link href="https://www.docugenerate.com/fr/blog/automatiser-les-contrats-avec-zapier-et-google-sheets/" rel="alternate" type="text/html" title="Automatiser les Contrats avec Zapier et Google Sheets"/> <published>2024-05-24T00:00:00+00:00</published> <updated>2024-05-24T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/automatiser-les-contrats-avec-zapier-et-google-sheets</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/automatiser-les-contrats-avec-zapier-et-google-sheets/"><![CDATA[<h2 id="introduction">Introduction</h2> <p>Dans le monde numérique actuel en perpétuelle accélération, automatiser les tâches répétitives permet de gagner du temps et de réduire les risques d’erreur. C’est particulièrement vrai pour la génération de documents. Imaginez disposer d’une feuille de calcul remplie de données et pouvoir générer automatiquement des documents professionnels avec un minimum d’effort. Dans ce tutoriel, nous allons vous montrer comment y parvenir avec trois outils puissants : Google Sheets, Zapier et DocuGenerate.</p> <p><a href="https://www.google.com/sheets/about/" target="_blank" rel="nofollow noopener">Google Sheets</a> est un outil polyvalent pour gérer et organiser des données. <a href="https://zapier.com/" target="_blank" rel="nofollow noopener">Zapier</a> est une plateforme d’automatisation qui connecte vos applications préférées, leur permettant de fonctionner ensemble de manière fluide. <a href="https://www.docugenerate.com/">DocuGenerate</a> est spécialisé dans la génération automatisée de documents, vous permettant de créer des factures, des contrats et bien plus encore.</p> <p>Cette configuration d’automatisation peut être particulièrement utile dans plusieurs scénarios :</p> <ul> <li><strong>Ventes et Facturation</strong> : Générez automatiquement des factures à partir de données de vente stockées dans Google Sheets.</li> <li><strong>RH et Recrutement</strong> : Créez des contrats de travail ou des lettres d’offre à partir des données des candidats.</li> <li><strong>Documentation Juridique</strong> : Produisez des accords ou contrats juridiques à partir de données structurées.</li> </ul> <p>Entrons donc directement dans le sujet !</p> <h2 id="google-sheets-data">Importer les Données dans Google Sheets</h2> <p>Nous allons construire un scénario où nous générons des contrats à partir de données stockées dans Google Sheets. Nous utiliserons la ressource <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.zip">Accounting Contract</a> de la Bibliothèque de Modèles DocuGenerate, qui inclut un modèle Word pour le contrat et un jeu de données d’exemple au format Excel.</p> <p>Tout d’abord, nous devons importer notre fichier Excel contenant les données d’exemple dans Google Sheets. Ouvrez Google Sheets, créez une nouvelle feuille de calcul, et cliquez sur <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>Choisissez l’onglet <strong>Upload</strong>, puis sélectionnez et téléversez le fichier Excel <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.xlsx">Accounting Contract.xlsx</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/import-excel-to-google-sheet.gif" alt="Importer un fichier Excel dans Google Sheets"/></p> <p>Une fois le téléversement terminé, vous devriez voir vos données dans Google Sheets. Donnez un nom à la feuille de calcul, comme <strong>Accounting Contract</strong> par exemple, et c’est terminé !</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/accounting-spreadsheet-v2.png" alt="Nouvelle feuille Google Sheets"/></p> <h2 id="google-sheets-trigger">Configurer le Déclencheur Google Sheets</h2> <p>Commencez par créer un nouveau Zap et en sélectionnant l’application Google Sheets comme point de départ. Ajoutez ensuite le déclencheur <strong>New or Updated Spreadsheet Row in Google Sheets</strong> dans Zapier.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/google-sheets-event.png" alt="Événement New or Updated Spreadsheet Row in Google Sheets"/></p> <p>Ensuite, connectez le compte Google qui a été utilisé pour importer les données dans Google Sheets. Dans l’onglet <strong>Trigger</strong>, sélectionnez la feuille de calcul et l’onglet correspondant à votre document Google Sheets :</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/google-sheets-trigger.png" alt="Configurer le déclencheur sur l'application Google Sheets"/></p> <p>Enfin, à l’étape <strong>Test</strong>, vous pouvez vérifier que la connexion fonctionne correctement. La liste affiche les trois enregistrements les plus récents de vos données. Sélectionnez-en un et cliquez sur <strong>Continue with selected record</strong> pour terminer cette étape. L’enregistrement sélectionné sera utilisé lors de la configuration des autres applications du Zap pour prévisualiser les données provenant de l’application Google Sheets.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/google-sheets-test.png" alt="Tester l'application Google Sheets dans le Zap"/></p> <h2 id="create-template">Créer le Modèle dans DocuGenerate</h2> <p>Connectez-vous à DocuGenerate et créez un nouveau modèle à partir du fichier d’exemple <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.docx">Accounting Contract.docx</a>. Suivez le guide de notre <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">Centre d’Aide</a> si vous avez besoin d’aide. Votre écran devrait ressembler à ceci :</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/accounting-contract-template.png" alt="Nouveau modèle dans DocuGenerate"/></p> <h2 id="generate-document-action">Configurer l’Action “Generate Document”</h2> <p>Recherchez l’<a href="https://zapier.com/apps/docugenerate/integrations" target="_blank" rel="noopener">application DocuGenerate</a> et ajoutez-la au Zap. Sélectionnez ensuite l’action <strong>Generate Document</strong>. Pour plus d’informations sur la connexion entre Zapier et DocuGenerate, consultez le guide de notre <a href="https://www.docugenerate.com/fr/aide/articles/automatiser-la-generation-de-documents-avec-zapier/">Centre d’Aide</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-action-v3.png" alt="Ajouter l'action Generate Document au Zap"/></p> <p>Après avoir connecté votre compte DocuGenerate à Zapier, vous devez configurer les paramètres d’appel dans l’onglet <strong>Action</strong>. Dans la liste déroulante, sélectionnez le modèle <strong>Accounting Contract</strong> créé à l’ <a href="#create-template">étape précédente</a>. Indiquez un <strong>Name</strong>, comme <code class="language-plaintext highlighter-rouge">Contract for [Client Name]</code>, où <code class="language-plaintext highlighter-rouge">[Client Name]</code> est un champ dynamique qui sera inséré par Zapier lors de l’appel API à DocuGenerate. Pour le format, vous pouvez choisir <strong>PDF</strong>.</p> <p>Lors de la sélection du modèle, le paramètre <strong>Data</strong> sera pré-rempli avec un objet JSON vide correspondant aux balises de fusion contenues dans le modèle. Pour chaque clé, vous devrez associer les valeurs provenant de l’application Google Sheet. Veillez à conserver les guillemets autour de chaque valeur, sinon le JSON sera invalide et l’appel API échouera.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-params-v2.png" alt="Configurer les paramètres de l'action Generate Document"/></p> <p>Prenons par exemple la première clé, voici la bonne façon de faire : <code class="language-plaintext highlighter-rouge">"Effective Date": "1. Effective Date 12/13/2023"</code> Voici en revanche un exemple incorrect, car les guillemets sont manquants : <code class="language-plaintext highlighter-rouge">"Effective Date": 1. Effective Date 12/13/2023</code></p> <p>Enfin, une fois le mappage terminé, vous pouvez tester cette étape. Si tout est configuré correctement, l’appel API réussira et vous verrez la réponse JSON provenant de l’API de DocuGenerate :</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-test-v2.png" alt="Tester l'action Generate Document"/></p> <p>C’est terminé ! Cliquez sur le bouton <strong>Publish</strong> pour enregistrer et publier votre Zap.</p> <h2 id="multi-line">Pour Aller Plus Loin : Gérer les Valeurs de Données Multi-Lignes</h2> <p>Il arrive parfois que les valeurs provenant de la source de données, dans ce cas Google Sheet, soient des chaînes multi-lignes. Bien que ce ne soit généralement pas le cas, la plupart des valeurs textuelles étant sur une seule ligne. Mais il est préférable de gérer ce cas particulier afin d’éviter des problèmes lors de l’exécution du Zap.</p> <p>Par exemple, prenons le même jeu de données, mais avec le champ <code class="language-plaintext highlighter-rouge">Client Address</code> de la dernière ligne modifié en une valeur multi-lignes :</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="Jeu de données avec des valeurs multi-lignes"/></p> <p>Si nous testions à nouveau le Zap avec cet enregistrement mis à jour, l’étape Generate Document échouerait avec l’erreur suivante :</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>Et voici comment cela apparaîtrait dans l’interface de Zapier :</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/invalid-json-error-v2.png" alt="Erreur Generate Document : data must be a valid JSON object or array"/></p> <p>Pour corriger ce problème, nous devons ajouter une nouvelle étape à notre Zap afin de formater la valeur <code class="language-plaintext highlighter-rouge">Client Address</code>. Ajoutez l’application <a href="https://zapier.com/apps/formatter/help" target="_blank" rel="nofollow noopener">Formatter by Zapier</a> avant l’étape <strong>Generate Document</strong> et choisissez l’événement <strong>Text</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/text-formatter-action.png" alt="Configurer le Text Formatter by Zapier"/></p> <p>Sélectionnez ensuite l’action <strong>Replace</strong> et pour l’entrée, choisissez le champ <code class="language-plaintext highlighter-rouge">Client Address</code>. Pour la valeur <strong>Find</strong>, saisissez <code class="language-plaintext highlighter-rouge">[:newline:]</code> qui correspond aux caractères de retour à la ligne. Et pour la valeur <strong>Replace</strong>, saisissez <code class="language-plaintext highlighter-rouge">\n</code>. Cela remplacera tous les retours chariot du texte par le caractère <code class="language-plaintext highlighter-rouge">\n</code>.</p> <p>Pour plus d’informations sur la recherche, le remplacement ou la division de caractères spéciaux, consultez cet <a href="https://help.zapier.com/hc/en-us/articles/8496278339725-Find-and-replace-values-in-your-Zaps" target="_blank" rel="nofollow noopener">article détaillé</a> sur Zapier. Ce guide fournit des instructions et des exemples complets sur la façon de gérer diverses tâches de formatage de texte dans Zapier, garantissant que vos flux d’automatisation fonctionnent correctement même avec des données textuelles complexes.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/text-formatter-params.png" alt="Rechercher et remplacer les retours à la ligne par le caractère \n"/></p> <p>Passons à l’étape <strong>Test</strong>. Comme vous pouvez le constater, la valeur est correctement remplacée par :</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="Tester avec succès l'action Text Formatter"/></p> <p>Enfin, nous devons mettre à jour l’action <strong>Generate Document</strong> pour utiliser la valeur formatée pour le champ <code class="language-plaintext highlighter-rouge">Client Address</code>. Ainsi, nous n’utilisons plus directement la valeur provenant de Google Sheet, mais le résultat de l’étape <strong>Formatter</strong>, qui corrige le problème des retours à la ligne.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-update.png" alt="Utiliser la valeur formatée dans l'action Generate Document"/></p> <p>Nous n’avons effectué le formatage que pour un seul champ, mais vous pouvez ajouter d’autres étapes de formatage si d’autres valeurs du jeu de données sont susceptibles d’être des chaînes multi-lignes.</p> <p>Avec ce changement, lorsque nous testons l’étape finale, la génération du document n’échoue plus, et le document est généré avec succès.</p> <p><img src="https://www.docugenerate.com/assets/posts/008-zapier-google-sheets/generate-document-success.gif" alt="Générer le document sans erreur"/></p> <h2 id="conclusion">Conclusion</h2> <p>Automatiser la génération de documents avec Google Sheets, Zapier et DocuGenerate peut considérablement simplifier votre flux de travail. Cette configuration permet non seulement de gagner du temps, mais réduit également les erreurs et garantit la cohérence de vos documents. Que vous génériez des factures, des contrats ou des certificats, cette automatisation puissante peut tout gérer.</p> <p>En intégrant ces outils, vous pouvez vous concentrer sur des tâches plus importantes tandis que vos documents sont créés de manière fluide en arrière-plan. Nous vous encourageons à essayer cette configuration et à explorer les possibilités de ce que vous pouvez automatiser avec DocuGenerate et Zapier.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle Word <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.docx">Accounting Contract</a> et le <a href="https://www.docugenerate.com/assets/templates/contracts/accounting/Accounting Contract.xlsx">fichier Excel</a> contenant les données utilisées dans ce tutoriel.</li> <li>L’article <a href="https://help.zapier.com/hc/en-us/articles/8496278339725-Find-and-replace-values-in-your-Zaps" target="_blank" rel="nofollow noopener">Modify text formats in Zaps</a> de Zapier référencé dans la section <a href="#multi-line">Gérer les Valeurs de Données Multi-Lignes</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[Découvrez comment automatiser la génération de contrats avec Zapier, Google Sheets et DocuGenerate. Ce guide vous accompagne dans la mise en place d'un flux de travail pour convertir des lignes de feuille de calcul en documents formatés, avec une attention particulière sur la gestion des valeurs multi-lignes.]]></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">Générer des Documents depuis Airtable avec une Extension de Script</title> <link href="https://www.docugenerate.com/fr/blog/generer-des-documents-depuis-airtable-avec-une-extension-de-script/" rel="alternate" type="text/html" title="Générer des Documents depuis Airtable avec une Extension de Script"/> <published>2024-04-19T00:00:00+00:00</published> <updated>2024-04-19T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/generer-des-documents-depuis-airtable-avec-une-extension-de-script</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/generer-des-documents-depuis-airtable-avec-une-extension-de-script/"><![CDATA[<h2 id="demarrer-avec-airtable">Démarrer avec Airtable</h2> <p>Dans les processus de travail actuels, les managers doivent parfois gérer une multitude d’outils, ce qui réduit la productivité et augmente le risque d’erreurs lors du transfert de données d’un outil à un autre. Il est donc dans leur intérêt de trouver la bonne combinaison d’outils, pour un processus simple et efficace.</p> <p>C’est pourquoi, dans cet article, nous allons créer un flux de travail pratique vous permettant de générer automatiquement des documents depuis votre interface Airtable, sans avoir à transférer vos données d’une application à une autre. De plus, vous utiliserez un modèle Word, facilement modifiable avec le logiciel de traitement de texte que vous connaissez déjà.</p> <p>Voici les services nécessaires pour créer ce flux de travail :</p> <ol> <li> <p><a href="https://airtable.com/" target="_blank" rel="nofollow noopener">Airtable</a> : une plateforme de collaboration sans code permettant aux utilisateurs d’interagir simplement avec une base de données, à l’aide notamment d’une interface similaire à une feuille de calcul, de formulaires web pour la saisie, et d’interfaces de rapports et de visualisation de données conviviales en sortie.</p> </li> <li> <p><a href="https://www.docugenerate.com">DocuGenerate</a> : une application web et une API conçues pour générer des documents à partir de modèles Word et de données JSON, en remplaçant les balises de fusion des modèles par des données dynamiques.</p> </li> </ol> <p>Cet article s’adresse principalement aux personnes ayant déjà une connaissance minimale des fonctionnalités de base d’Airtable. Nous n’entrerons pas dans le détail de ses fonctionnalités, et nous nous concentrerons uniquement sur les aspects nécessaires à la mise en place de notre processus.</p> <h2 id="page-designer-d-airtable">Utiliser le Page Designer d’Airtable</h2> <p>Vous pourriez utiliser l’<a href="https://support.airtable.com/docs/page-designer-extension-overview" target="_blank" rel="nofollow noopener">extension Page Designer</a> d’Airtable pour créer votre propre modèle personnalisé pour des factures, cartes de visite, catalogues, et plus encore — en utilisant directement les données de vos enregistrements. Une fois la mise en page terminée, vous pouvez imprimer vos enregistrements ou les convertir en PDF.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/page-designer-v2.png" alt="Extension Page Designer"/></p> <p>Il existe quelques autres limitations à prendre en compte pour notre cas d’usage :</p> <ul> <li>Les fichiers sont générés un par un.</li> <li>Elle ne peut générer que des fichiers PDF.</li> <li>Elle ne peut pas stocker les fichiers générés dans votre base de données Airtable.</li> </ul> <p>L’éditeur de mise en page de Page Designer n’est pas mauvais, mais vous ne serez jamais aussi productif qu’avec votre logiciel de traitement de texte habituel. De plus, vous devrez repartir de zéro si vous voulez créer une nouvelle mise en page dans une autre base.</p> <h2 id="creer-le-modele-word">Créer le Modèle Word</h2> <p>Étant donné les limitations de Page Designer, nous allons plutôt utiliser un modèle Word. Un modèle est un document contenant des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a>, qui sont des espaces réservés destinés à être remplacés par des données dynamiques. Elles vous permettent de créer facilement des documents visuellement très similaires, mais différents selon le jeu de données utilisé pour remplir les espaces réservés.</p> <p>Notre modèle est une <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.docx">version légèrement modifiée</a> du modèle Certificate of Completion de la <a href="https://www.docugenerate.com/fr/modeles/#certificats">Bibliothèque de Modèles</a>. Les principaux changements sont l’<strong>ajout d’une photo de profil</strong> pour mettre en avant notre fonctionnalité de <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-images-a-un-modele/">redimensionnement d’image</a>, et l’<strong>intégration d’une liste de compétences</strong>, pour illustrer l’utilisation des <a href="https://support.airtable.com/docs/linked-record-field" target="_blank" rel="nofollow noopener">champs d’enregistrement liés</a> d’Airtable combinés à la <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-listes-a-un-modele/">syntaxe de liste</a> de DocuGenerate.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.png" alt="Modèle Certificate of Completion"/></p> <p>Ce modèle inclut les balises suivantes : <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> et <code class="language-plaintext highlighter-rouge">{Skills}</code> (en utilisant la syntaxe suivante pour créer une liste de compétences) :</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{#Skills}
- {.}
{/Skills}
</code></pre></div></div> <p><strong>💡 Pour aller plus loin</strong> La <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/">syntaxe avancée</a> est activée pour ce modèle afin de permettre le redimensionnement d’image. Vous devez éviter les <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/#whitespace-limitation">espaces</a> dans les noms de vos balises pour pouvoir l’utiliser. C’est pourquoi les noms de balises composés de deux mots utilisent un trait de soulignement entre eux.</p> <h2 id="concevoir-la-base-de-donnees">Concevoir la Base de Données</h2> <p>Pour notre exemple, nous avons commencé par le modèle puis créé une structure de base de données adaptée. Bien sûr, un processus réel se déroulera dans l’autre sens : comme vos données seront probablement déjà cohérentes, vous créerez un modèle correspondant à vos données et à la structure de votre base afin de générer les documents dont vous avez besoin, et non une structure de base de données en fonction de votre modèle.</p> <p>Ici, notre base inclut trois tables :</p> <ul> <li> <p>La table <strong>Skills</strong> contient les compétences acquises dans les différents programmes, classées par catégorie.</p> </li> <li> <p>La table <strong>Programs</strong> contient des données sur chaque programme : nom, date de début, date de fin, et les compétences acquises (champ lié à la table <strong>Skills</strong>).</p> </li> <li> <p>La table <strong>Attendees</strong> contient des données sur chaque participant des différents programmes, comme le prénom, le nom et la photo, ainsi qu’un champ lié au programme suivi, à partir duquel plusieurs champs de référence sont créés pour accéder directement aux données du programme dans la table <strong>Attendees</strong>. Cela est nécessaire car le script utilisé pour générer les documents ne permet actuellement de <strong>sélectionner qu’une seule table</strong>, donc toutes les données doivent être présentes dans cette table.</p> </li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/base-structure.png" alt="Structure complète de la base"/></p> <p>Veuillez noter que la <strong>date du certificat</strong> requise dans le modèle n’est pas stockée dans les données. Ne vous inquiétez pas, elle sera remplie avec la <a href="#generer-et-stocker-les-documents">date du jour</a> lors de la génération du document.</p> <p>Si vous voulez voir à quoi ressemble notre base ou commencer à l’explorer, vous pouvez simplement consulter les <a href="https://airtable.com/appLSLnJfZrkdAqz8/shruEBCW3StTQjxIk/tblej46yoReMAFar1/viw3bonO9CVF4TPj0" target="_blank" rel="noopener">données de test du script DocuGenerate</a>.</p> <h2 id="remplir-la-base-de-donnees">Remplir la Base de Données</h2> <p>Notre base est déjà remplie de données permettant de tester notre flux de travail, mais dans un processus réel, vous aurez besoin d’un mécanisme pour collecter ces données. Pour atteindre cet objectif, l’un des moyens les plus simples est de créer des formulaires que les utilisateurs peuvent remplir directement eux-mêmes.</p> <p>Un formulaire est essentiellement une page web que vous rendrez accessible à tous, avec plusieurs champs de saisie liés aux champs de votre table, de sorte que remplir le formulaire créera un nouvel enregistrement dans votre table. Par exemple, le processus de création d’un formulaire pour la table <strong>Attendees</strong> est assez simple :</p> <ul> <li><strong>Créez un nouveau formulaire</strong> dans la barre latérale des vues.</li> <li><strong>Téléversez un logo</strong> et/ou une image de couverture pour votre formulaire.</li> <li><strong>Choisissez les champs</strong> que vous voulez que l’utilisateur remplisse.</li> <li><strong>Pour chaque champ</strong>, indiquez s’il est obligatoire, puis ajoutez un titre et une description.</li> <li><strong>Publiez votre formulaire</strong> afin d’obtenir une URL publique à partager.</li> </ul> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/create-form.gif" alt="Créer un formulaire"/></p> <p><strong>💡 Pour aller plus loin</strong> Pour en savoir plus sur la création et le partage de formulaires dans Airtable, consultez leur <a href="https://support.airtable.com/docs/building-and-sharing-forms-in-airtable" target="_blank" rel="nofollow noopener">documentation officielle</a>.</p> <h2 id="configurer-l-extension-de-script">Configurer l’Extension de Script</h2> <p>Maintenant que notre modèle et notre base sont prêts, nous allons configurer le script utilisé pour générer les documents. Pour cela, vous devrez ajouter une <a href="https://support.airtable.com/docs/en/scripting-extension-overview" target="_blank" rel="nofollow noopener">Scripting Extension</a> à l’un de vos tableaux de bord. Veuillez noter que <strong>les extensions ne sont disponibles que sur les forfaits payants</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/add-scripting-extension.png" alt="Ajouter l'extension de script"/></p> <p>Ensuite, vous devrez copier ce <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/docugenerate-script.txt" target="_blank">code JavaScript</a> et le coller dans l’extension de script :</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>Si tout fonctionne correctement, vous devriez maintenant pouvoir accéder à la page des paramètres du script en cliquant sur l’icône en forme de roue dentée qui apparaît en survolant le coin supérieur droit de votre extension. N’hésitez pas à utiliser l’icône plein écran à côté de l’icône des paramètres, pour une meilleure visibilité.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/extension-settings.png" alt="Paramètres de l'extension"/></p> <p>Voici les paramètres disponibles :</p> <ul> <li> <p><strong>API Key</strong> : votre clé API DocuGenerate, que vous pouvez obtenir depuis votre <a href="https://app.docugenerate.com/settings" target="_blank">page des paramètres</a> une fois votre compte créé. <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">Copiez simplement la clé API</a> dans le presse-papiers en cliquant sur celle-ci.</p> </li> <li> <p><strong>Template ID</strong> : l’ID de votre modèle, que <a href="https://www.docugenerate.com/fr/aide/articles/comment-obtenir-l-id-du-modele/">vous pouvez copier</a> depuis la page de votre modèle. Veuillez noter qu’il apparaît également directement dans l’URL de la page de votre modèle, l’URL étant de la forme <code class="language-plaintext highlighter-rouge">https://app.docugenerate.com/templates/:template_id</code></p> </li> <li> <p><strong>Table</strong> : la table contenant les enregistrements que vous utiliserez pour remplacer les balises de votre modèle.</p> </li> <li> <p><strong>Storage</strong> : le champ utilisé pour stocker le document généré. Il peut s’agir soit d’un champ URL (qui stockera un lien vers le document), soit d’un champ de type Fichier (qui stockera le fichier lui-même).</p> </li> <li> <p><strong>Format</strong> : le format de sortie du document généré. Les options sont <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>, ou <code class="language-plaintext highlighter-rouge">.png</code>.</p> </li> </ul> <p>Avec tous ces paramètres configurés, nous sommes maintenant prêts à automatiser le processus de création de documents !</p> <h2 id="ajouter-le-bouton-generer">Ajouter le Bouton Générer</h2> <p>L’<a href="#configurer-l-extension-de-script">extension de script</a> attend que l’utilisateur sélectionne un enregistrement spécifique à traiter. Mais pour simplifier les choses pour l’utilisateur final, nous voulons générer le document simplement en cliquant sur un bouton. Pour cela, nous devrons ajouter un nouveau <a href="https://support.airtable.com/docs/button-field" target="_blank" rel="nofollow noopener">champ Bouton</a>, qui sera configuré pour exécuter notre script lorsqu’il est cliqué. Ainsi, l’enregistrement à partir duquel le bouton a été cliqué est automatiquement sélectionné pour l’exécution du script.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/edit-generate-button.png" alt="Ajouter le bouton Generate"/></p> <h2 id="generer-et-stocker-les-documents">Générer et Stocker les Documents</h2> <p>Une fois tout configuré, voyons comment fonctionne le processus de génération de documents. Lorsque vous cliquez sur le bouton <strong>Generate</strong> sur n’importe quel enregistrement, le script s’exécute et effectue plusieurs actions :</p> <ol> <li>Il collecte toutes les données nécessaires de l’enregistrement actuel.</li> <li>Il envoie ces données à l’API de DocuGenerate avec l’ID de votre modèle.</li> <li>DocuGenerate traite la requête, en remplaçant toutes les balises de fusion par vos données.</li> <li>Le document généré est renvoyé et automatiquement stocké dans votre base de données.</li> </ol> <p>Le résultat est un certificat à l’apparence professionnelle, prêt à être partagé avec les participants.</p> <p><img src="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/docugenerate-demo.gif" alt="Génération de certificat"/></p> <h2 id="aller-plus-loin-avec-les-automatisations">Aller Plus Loin avec les Automatisations Airtable</h2> <p>Bien que notre script déclenché par bouton soit déjà très efficace, vous pouvez aller encore plus loin dans la génération de documents en l’intégrant avec les <a href="https://support.airtable.com/docs/getting-started-with-airtable-automations" target="_blank" rel="nofollow noopener">Automatisations Airtable</a>. Cela permet des flux de travail de documents entièrement automatisés, déclenchés selon des conditions spécifiques dans votre base de données.</p> <p>Voici quelques scénarios d’automatisation puissants que vous pourriez mettre en place :</p> <ul> <li> <p><strong>Génération Automatique de Certificats</strong> : générez automatiquement des certificats lorsque le statut d’un participant passe à « Completed » ou lorsqu’une date de fin de programme est atteinte, éliminant le besoin de cliquer manuellement sur un bouton.</p> </li> <li> <p><strong>Envoi par E-mail</strong> : envoyez les certificats directement aux participants par e-mail dès qu’ils sont générés, créant une expérience fluide pour les participants au programme.</p> </li> <li> <p><strong>Traitement par Lots</strong> : mettez en place des automatisations hebdomadaires ou mensuelles qui génèrent des certificats pour tous les participants ayant terminé des programmes durant cette période.</p> </li> <li> <p><strong>Génération Conditionnelle de Documents</strong> : créez différents types de documents selon des critères comme le type de programme, le niveau de réussite, ou la localisation géographique.</p> </li> <li> <p><strong>Système de Notification</strong> : notifiez les administrateurs de programme lorsque des certificats ont été générés et livrés, pour aider à suivre le processus.</p> </li> </ul> <p>Pour mettre en place ces automatisations, vous devrez adapter le code de script fourni précédemment dans une étape d’automatisation « Run script ». L’intégration de base avec l’API restera la même, mais vous devrez modifier la façon dont les enregistrements sont sélectionnés et traités selon vos conditions de déclenchement.</p> <h2 id="conclusion">Conclusion</h2> <p>Dans ce tutoriel, nous avons montré comment transformer votre base de données Airtable en un puissant système de génération de documents grâce à l’API de DocuGenerate et à l’extension de script d’Airtable. En combinant ces outils, vous pouvez générer des documents professionnels directement à partir de vos données Airtable en un seul clic et stocker les documents générés dans votre base de données pour un accès et une organisation facilités.</p> <p>Bien que des outils d’automatisation comme celui-ci puissent considérablement améliorer votre productivité, il est important de se rappeler qu’ils doivent servir à faciliter les processus. Ne vous perdez pas dans le développement d’une automatisation complexe lorsqu’une approche plus simple pourrait être plus efficace ! Reconnaître cet équilibre est essentiel pour créer des flux de travail réellement efficaces. Commencez par l’implémentation de base que nous avons fournie, puis développez progressivement votre automatisation à mesure que vos besoins grandissent et évoluent.</p> <h3 id="ressources">Ressources</h3> <ul> <li>La <a href="https://airtable.com/appLSLnJfZrkdAqz8/shruEBCW3StTQjxIk/tblej46yoReMAFar1/viw3bonO9CVF4TPj0" target="_blank" rel="noopener">base de test DocuGenerate</a> dans Airtable, contenant les tables Skills, Programs et Attendees.</li> <li>Le dépôt GitHub <a href="https://github.com/basteks/airtable-docugenerate" target="_blank" rel="noopener">Airtable DocuGenerate</a> créé par Benjamin Hatton, contenant la version initiale des scripts Airtable pour générer des documents avec l’API de DocuGenerate.</li> <li>Toutes les photos de profil sont libres de droits et proviennent de <a href="https://pixabay.com/" target="_blank" rel="nofollow noopener">Pixabay</a>, le site d’images et de photos libres de droits.</li> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.docx">Certificat d’Achèvement</a> utilisé dans ce tutoriel.</li> <li>Un exemple de <a href="https://www.docugenerate.com/assets/posts/007-airtable-scripting-extension/Certificate of Completion.pdf" target="_blank">certificat PDF</a> généré à partir des données Airtable.</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[Découvrez comment DocuGenerate peut automatiser la génération de documents à partir des données stockées dans vos tables, vous permettant de vous concentrer sur les étapes les plus importantes de votre processus. Suivez notre tutoriel et créez un flux de travail de génération de documents sans code dans 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">Logiciel de Gestion de Contrats Abordable Noté par GetApp</title> <link href="https://www.docugenerate.com/fr/blog/logiciel-de-gestion-de-contrats-abordable-note-par-getapp/" rel="alternate" type="text/html" title="Logiciel de Gestion de Contrats Abordable Noté par GetApp"/> <published>2024-04-16T00:00:00+00:00</published> <updated>2024-04-16T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/logiciel-de-gestion-de-contrats-abordable-note-par-getapp</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/logiciel-de-gestion-de-contrats-abordable-note-par-getapp/"><![CDATA[<h2 id="logiciel-de-gestion-de-contrats">Logiciel de Gestion de Contrats</h2> <p><a href="https://www.getapp.com/" target="_blank" rel="nofollow noopener">GetApp</a>, une entreprise qui aide les sociétés à naviguer dans le processus d’achat de logiciels, a mis en avant DocuGenerate dans sa 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>, qui évalue sept solutions logicielles de gestion de contrats abordables et les mieux notées, sur la base d’avis d’utilisateurs vérifiés et des tarifs disponibles sur les sites des éditeurs.</p> <p>Cette reconnaissance témoigne de la qualité exceptionnelle de notre produit et de notre engagement constant à fournir une solution fiable et facile à utiliser, répondant aux besoins variés de nos clients. Notre équipe est engagée dans une démarche d’amélioration continue et d’innovation, garantissant à nos utilisateurs de toujours disposer des meilleurs outils.</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="avis-des-utilisateurs">Avis des Utilisateurs</h2> <p><a href="https://www.getapp.com/resources/top-affordable-contract-management-software/#4-docugenerate" target="_blank" rel="nofollow noopener">DocuGenerate</a> s’est classé parmi les meilleurs produits avec une note exceptionnelle de <a href="https://www.getapp.com/collaboration-software/a/docugenerate/reviews/" target="_blank" rel="nofollow noopener">4,8 sur 5</a>. Comme ce rapport se base sur de véritables avis d’utilisateurs, nous tenons à remercier nos précieux utilisateurs qui apprécient notre produit !</p> <p><img src="https://www.docugenerate.com/assets/posts/010-getapp-top-rated-software/docugenerate-getapp-snippet-v2.png" alt="Notes de DocuGenerate sur GetApp"/></p> <p>Voici ce que nos utilisateurs disent de notre produit :</p> <div class="ud-blog-quote"> <i class="lni lni-quotation"></i> <p> Le service client était formidable. On m'a parlé comme à un vrai être humain, sans réponses toutes faites qui n'auraient fait qu'embrouiller davantage la conversation. Une fois mon problème résolu avec le service client, travailler avec le document généré était extrêmement simple. </p> <h6> Source: <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> J'avais besoin d'un moyen simple de générer des fichiers PDF à partir de données JSON, et DocuGenerate l'a rendu facile. Le support était également formidable. Je ne suis pas développeur, mais j'ai pu mettre cela en place en quelques heures grâce à leur API. </p> <h6> Source: <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> Les modèles de documents sont très faciles à utiliser, nous n'avons trouvé aucun cas d'usage qu'ils ne supportent pas. La simplicité de l'API a rendu l'intégration de notre produit très fluide. </p> <h6> Source: <a href="https://www.getapp.com/collaboration-software/a/docugenerate/reviews/b6e61422f5/" target="_blank"> GetApp </a> </h6> </div> <p>Rejoignez-nous pour façonner l’avenir de la gestion de contrats en laissant un avis sur DocuGenerate sur GetApp <a href="https://reviews.getapp.com/products/new/f02a2815-804f-4a33-8e75-dae92de9d9a1" target="_blank" rel="nofollow noopener">ici</a>.</p> <h2 id="a-propos-de-nous">À Propos de Nous</h2> <p>DocuGenerate est un fournisseur leader de solutions de génération de documents automatisée. Notre plateforme permet aux entreprises de créer facilement des documents PDF tels que des factures, des lettres, des contrats, des accords et des certificats, à l’aide de notre application web intuitive ou de notre <a href="/fr/developpeurs/demarrage-rapide/">API REST</a>.</p> <p>En simplifiant le processus de création de documents, nous aidons les entreprises à gagner du temps et des ressources tout en garantissant précision et cohérence. Avec des <a href="/fr/tarifs/">tarifs</a> flexibles et un accès complet à l’API, DocuGenerate répond aux besoins des entreprises de toutes tailles, des startups aux grandes entreprises.</p> <h2 id="a-propos-de-getapp">À Propos de GetApp</h2> <p>GetApp est le moteur de recommandation dont les petites entreprises ont besoin pour faire le bon choix logiciel. Avec plus de 2 millions d’avis d’utilisateurs vérifiés, GetApp permet aux PME d’atteindre leurs objectifs en fournissant des recommandations et des analyses personnalisées et basées sur les données, nécessaires pour prendre des décisions d’achat de logiciels éclairées. Pour plus d’informations, visitez <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 a été reconnu par GetApp comme l'un des logiciels de gestion de contrats abordables les mieux notés. Notre note de 4,8 sur 5 reflète la qualité de notre produit, faisant de DocuGenerate un leader des solutions de génération de documents automatisée.]]></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">Utiliser Tally et Make pour Générer des Rapports à partir de Formulaires</title> <link href="https://www.docugenerate.com/fr/blog/utiliser-tally-et-make-pour-generer-des-rapports-a-partir-de-formulaires/" rel="alternate" type="text/html" title="Utiliser Tally et Make pour Générer des Rapports à partir de Formulaires"/> <published>2024-03-16T00:00:00+00:00</published> <updated>2024-03-16T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/utiliser-tally-et-make-pour-generer-des-rapports-a-partir-de-formulaires</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/utiliser-tally-et-make-pour-generer-des-rapports-a-partir-de-formulaires/"><![CDATA[<h2 id="le-flux-de-travail-que-nous-allons-creer">Le Flux de Travail que Nous Allons Créer</h2> <p>Dans le monde des affaires actuel, où tout va très vite, <strong>l’automatisation est essentielle</strong> pour maximiser l’efficacité et la précision. Imaginez un scénario où votre équipe commerciale doit créer des rapports après chaque appel de vente – ce processus peut être long et source d’erreurs s’il est effectué manuellement. Dans cet article, nous allons voir comment exploiter la puissance de Tally, Make et DocuGenerate pour <strong>automatiser la génération de rapports</strong> à partir de soumissions de formulaires. En combinant ces outils, vous pouvez améliorer votre flux de travail et garantir que vos rapports sont toujours précis et livrés à temps.</p> <p>À la base, le flux de travail que nous allons créer consiste à faire remplir par un représentant commercial un formulaire contenant des informations sur un appel de vente. Ces informations incluent des détails sur l’entreprise, la personne de contact et le résultat de l’appel. Après la soumission du formulaire, le système génère automatiquement un rapport PDF à l’aide d’un modèle configuré dans DocuGenerate. Voyons en détail les composants clés de ce flux de travail :</p> <ol> <li> <p><a href="https://tally.so/" target="_blank" rel="nofollow noopener">Tally</a> : Tally sert de plateforme pour créer le formulaire convivial. Il fournit une interface utilisateur permettant de concevoir des formulaires riches avec divers champs. De plus, Tally offre des fonctionnalités allant au-delà de la simple création de formulaires, ce qui en fait un outil polyvalent pour collecter des données en toute simplicité.</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 (anciennement connu sous le nom d’Integromat) sert de lien entre Tally et DocuGenerate. Make vous permet de créer des scénarios d’automatisation qui déclenchent des actions en fonction d’événements spécifiques. Dans notre cas, Make surveille les nouvelles soumissions de formulaire sur Tally et appelle automatiquement l’API DocuGenerate pour générer les rapports.</p> </li> <li> <p><a href="https://www.docugenerate.com">DocuGenerate</a> : DocuGenerate est une application web et une API conçues pour générer des documents à partir de modèles et de données. Elle permet de remplacer les balises de fusion dans les modèles par des données fournies via des requêtes API. C’est essentiel pour remplir dynamiquement les modèles de rapport avec des informations précises.</p> </li> </ol> <h2 id="creer-le-modele-de-rapport">Créer le Modèle de Rapport</h2> <p>Pour démarrer le processus, vous aurez besoin d’un modèle <a href="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.docx">Sales Call Report</a> dans DocuGenerate. Ce modèle servira de plan pour les rapports générés. Le modèle contient des espaces réservés appelés <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a>, qui seront remplacées par des données réelles lors de la génération du document.</p> <p>Par exemple, votre modèle pourrait inclure des balises de fusion pour différents champs, tels que <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> et <code class="language-plaintext highlighter-rouge">[action]</code>.</p> <p>Ces balises servent d’espaces réservés qui seront remplies avec les données soumises via le formulaire. Comme vous pouvez le constater, elles ne <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/#whitespace-limitation">contiennent pas d’espaces</a>, ce qui est un prérequis si nous voulons ajouter par la suite des conditions et des expressions au modèle en utilisant la <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/">syntaxe avancée</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.png" alt="Sales Call Report" class="desktop-width-75"/></p> <h2 id="concevoir-le-formulaire-dans-tally">Concevoir le Formulaire dans Tally</h2> <p>Une fois le modèle en place, vous allez créer un <strong>formulaire correspondant dans Tally</strong>. Le formulaire collectera les informations nécessaires à la génération du rapport. Il est divisé en deux pages : une pour recueillir les informations sur l’entreprise et l’autre pour enregistrer les détails de l’appel (qui était la personne de contact, quel est le résumé de l’appel et quelles sont les actions à entreprendre).</p> <p>L’<strong>interface intuitive de Tally facilite</strong> la conception du formulaire selon vos besoins. Vous allez associer chaque champ du formulaire à une balise de fusion spécifique dans le modèle. Cette correspondance garantit que les données collectées via le formulaire s’alignent parfaitement avec les espaces réservés du modèle de rapport.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-form-submission-v2.gif" alt="Soumission de formulaire Tally"/></p> <p>Une fois le formulaire conçu, vous pouvez trouver le <strong>lien de partage</strong> du formulaire, qui permet aux utilisateurs d’y accéder et de le soumettre. Pour le Sales Call Report, vous pouvez accéder au formulaire à cette URL : <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="Lien de partage Tally" class="desktop-width-75"/></p> <h2 id="connecter-tally-a-make">Connecter Tally à Make</h2> <p>Intégrer Tally et Make est une étape cruciale pour automatiser le flux de travail. Cette intégration permet à Make de surveiller les nouvelles soumissions de formulaire et de déclencher les actions suivantes. Vous trouverez des guides pratiques utiles sur la connexion des deux applications sur le <a href="https://tally.so/help/integromat-integration" target="_blank" rel="nofollow noopener">centre d’aide de Tally</a> ou sur le <a href="https://www.make.com/en/help/app/tally" target="_blank" rel="nofollow noopener">centre d’aide de Make</a>.</p> <p>Pour commencer, cliquez sur le bouton <strong>Plus</strong> et recherchez l’application <strong>Tally</strong>, puis cliquez sur celle-ci :</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-new-scenario-tally.png" alt="Ajouter Tally à un scénario Make"/></p> <p>Sélectionnez ensuite le déclencheur <strong>Watch New Responses</strong>, qui s’exécute chaque fois qu’une nouvelle réponse au formulaire est soumise.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-watch-new-responses.png" alt="Surveiller les nouvelles réponses de Tally"/></p> <p>La vidéo suivante montre comment connecter Make à Tally : 1. Cliquez sur <strong>Create a webhook</strong> 2. Puis cliquez sur <strong>Create a connection</strong> 3. Une fenêtre contextuelle apparaîtra - vous devez cliquer sur <strong>Accept</strong> pour autoriser Make à accéder à votre compte Tally 4. Et enfin, vous devrez sélectionner le formulaire <strong>Sales Call Report</strong> dans la liste des formulaires Tally disponibles</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/create-tally-connection.gif" alt="Connecter Tally à Make"/></p> <p>Vous pouvez voir l’<strong>URL du webhook</strong> assignée dans Make. Un webhook est un mécanisme qui permet à une application (Tally) d’envoyer des données à une autre application (Make) en temps réel. Dans notre cas, Tally envoie un webhook à Make chaque fois qu’une nouvelle réponse au formulaire est reçue.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-webhook-in-make.png" alt="Nouveau webhook de réponse dans Make"/></p> <p>Une fois la connexion établie, vous verrez dans l’onglet <strong>Integration</strong> du formulaire sur Tally la même URL de webhook que dans Make, ce qui vous permet de confirmer que tout est correctement configuré.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-webhook-to-make.png" alt="Intégration du webhook Tally vers Make"/></p> <h2 id="connecter-docugenerate-a-make">Connecter DocuGenerate à Make</h2> <p>Une fois la connexion Tally-Make en place, il est temps d’intégrer <strong>DocuGenerate au flux de travail</strong>. La flexibilité de Make vous permet d’ajouter des modules au scénario, et dans ce cas, vous allez ajouter un module HTTP pour appeler l’API DocuGenerate et créer le rapport.</p> <p>Configurer le <strong>module HTTP</strong> implique de spécifier le point de terminaison de l’API pour DocuGenerate. Vous devrez également fournir une autorisation à l’aide d’une clé API, que vous pouvez obtenir sur la page des paramètres de DocuGenerate. La clé API est essentielle pour une communication sécurisée entre Make et DocuGenerate.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-add-http.png" alt="Ajouter le module HTTP sur Make"/></p> <p>Tout d’abord, sélectionnez l’option <strong>Make an API Key Auth request</strong>. Cela enverra une requête HTTPS vers une URL spécifiée qui nécessite une autorisation par clé API et traite la réponse.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-api-key-auth-request.png" alt="Faire une requête avec authentification par clé API"/></p> <p>Cliquez ensuite sur <strong>Create a keychain</strong> dans la section <strong>Credentials</strong>. Cela ouvrira une boîte de dialogue pour ajouter un nouveau trousseau de clés.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-create-keychain.png" alt="Créer un trousseau de clés"/></p> <p>Vous devez donner un <strong>Name</strong> au nouveau trousseau de clés, par exemple <code class="language-plaintext highlighter-rouge">DocuGenerate API Key</code>. Pour la valeur <strong>Key</strong>, vous devrez saisir votre clé API que vous pouvez trouver sur la <a href="https://www.docugenerate.com/fr/aide/articles/ou-puis-je-trouver-ma-cle-api/">page des paramètres</a> de DocuGenerate. Pour le <strong>API Key placement</strong>, vous pouvez laisser la valeur par défaut <code class="language-plaintext highlighter-rouge">In the header</code>. Et enfin, pour le <strong>API Key parameter name</strong>, vous devrez saisir <code class="language-plaintext highlighter-rouge">Authorization</code>, comme indiqué sur la page <a href="https://api.docugenerate.com/" target="_blank">API Reference</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-api-key.png" alt="Boîte de dialogue d'ajout de nouveau trousseau de clés"/></p> <p>Après avoir configuré la section <strong>Credentials</strong>, vous devrez spécifier le point de terminaison de l’API qui sera appelé sur DocuGenerate. Saisissez les valeurs suivantes pour les champs concernés : 1. <strong>URL</strong> = <code class="language-plaintext highlighter-rouge">https://api.docugenerate.com/v1/document</code> 2. <strong>Method</strong> = <code class="language-plaintext highlighter-rouge">POST</code> 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="Configuration du point de terminaison HTTP"/></p> <p>La partie suivante consiste à configurer les champs de la requête HTTP. La liste complète des paramètres possibles pour le point de terminaison <strong>Create Document</strong> se trouve sur la page <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">API Reference</a>. Pour ce tutoriel, nous n’utiliserons que les paramètres <strong>template_id</strong>, <strong>output_format</strong> et <strong>data</strong>.</p> <p>Tout d’abord, pour le champ <strong>template_id</strong>, nous devrons saisir l’ID du modèle créé précédemment dans la section <a href="#creer-le-modele-de-rapport">Créer le modèle de rapport</a>. Ensuite, pour <strong>output_format</strong>, nous utiliserons <code class="language-plaintext highlighter-rouge">.pdf</code>, mais les valeurs suivantes peuvent également être utilisées : <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> ou <code class="language-plaintext highlighter-rouge">.txt</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-template-id.png" alt="Configurer les champs template_id et output_format"/></p> <p>Configurons ensuite le champ <strong>data</strong> de la requête HTTP. Ce sont les données qui seront utilisées pour effectuer la fusion et générer les documents à partir du modèle. Le format attendu est un tableau d’objets JSON, et un document sera généré pour chaque objet du tableau en remplaçant les balises du modèle par les valeurs de l’objet.</p> <p>Pour obtenir le format attendu de l’objet JSON, vous pouvez essayer de <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-de-donnees-json/">générer des documents à partir de données JSON</a> dans l’application web et copier le JSON pré-rempli qui contient des valeurs vides. Vous pouvez ensuite le coller dans Make comme valeur pour le champ data.</p> <p>Une fois cela fait, vous pouvez associer les champs de la réponse Tally aux clés correspondantes dans l’objet JSON. Placez votre curseur dans la valeur <strong>”“</strong> que vous souhaitez remplir avec un champ de formulaire, puis cliquez sur l’un des champs roses du panneau de gauche pour l’utiliser comme valeur. Assurez-vous que les champs de Tally sont bien entre guillemets, comme dans <strong>”{{1.fields.City}}“</strong>, sinon les données ne seront pas correctement formatées et l’appel pour générer un document renverra un code d’erreur <code class="language-plaintext highlighter-rouge">400</code>.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-field-mapping.gif" alt="Configurer le champ data"/></p> <p>Voici à quoi devrait ressembler la valeur de data après avoir associé tous les champs aux valeurs JSON correspondantes. Make vous permet d’<strong>associer les champs du formulaire</strong> aux valeurs de balises de fusion correspondantes dans les données envoyées, garantissant que le document généré reflète fidèlement les informations du formulaire.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-docugenerate-data.png" alt="Valeurs de données associées au JSON"/></p> <h2 id="executer-le-scenario-de-bout-en-bout">Exécuter le Scénario de Bout en Bout</h2> <p>Une fois que Tally et le module HTTP sont configurés dans le scénario Make, vous pouvez <strong>activer la planification du scénario</strong>. Cette planification garantit que le flux de travail s’exécute automatiquement dès que de nouvelles données de formulaire arrivent. Le scénario peut être étendu avec des étapes supplémentaires, comme l’envoi d’un e-mail avec le document généré en pièce jointe, mais pour ce tutoriel, nous limiterons le scénario à ces 2 actions.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/make-scheduling.png" alt="make-scheduling"/></p> <p>Pour tester le flux de travail, remplissez le <a href="https://tally.so/r/n99oAQ" target="_blank" rel="nofollow noopener">formulaire Tally</a> avec des informations pertinentes. Le formulaire comporte 2 pages qui s’affichent l’une après l’autre, mais l’image ci-dessous regroupe les deux pages pour voir plus facilement les valeurs du formulaire.</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/tally-form-submission-example.png" alt="Exemple de soumission de formulaire Tally"/></p> <p>Dans la vidéo suivante, vous pouvez voir comment un nouveau document <strong>apparaît automatiquement</strong> dans DocuGenerate après la soumission du formulaire. Vous pouvez cliquer sur le bouton <strong>View</strong> pour afficher le document et constater qu’il contient les valeurs saisies dans le formulaire :</p> <p><img src="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/docugenerate-new-document.gif" alt="Nouveau document DocuGenerate"/></p> <p>Après la soumission, l’intégration entre Tally, Make et DocuGenerate génère sans accroc le <strong>Sales Call Report</strong>. Ce rapport contient les données que vous avez saisies dans le formulaire, remplaçant les balises de fusion du modèle, comme vous pouvez le voir dans le PDF généré.</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="conclusion">Conclusion</h2> <p>Dans cet article, nous avons exploré un flux de travail puissant qui exploite les capacités de Tally, Make et DocuGenerate. En créant un <strong>processus simplifié de génération de rapports</strong> à partir de soumissions de formulaire, vous pouvez gagner du temps, réduire les erreurs et garantir une qualité constante des rapports.</p> <p>L’intégration de ces outils ouvre de nouvelles possibilités pour automatiser diverses tâches et améliorer l’efficacité de votre organisation. Que vous soyez une équipe commerciale souhaitant simplifier ses rapports ou une entreprise cherchant à automatiser des processus répétitifs, ce flux de travail démontre le potentiel des <strong>solutions no-code</strong> dans le paysage technologique actuel.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le <a href="https://tally.so/r/n99oAQ" target="_blank" rel="nofollow noopener">formulaire Tally</a> pour tester ce flux de travail.</li> <li>Le modèle <a href="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.docx">Sales Call Report</a> utilisé dans ce tutoriel.</li> <li>Un exemple de <a href="https://www.docugenerate.com/assets/posts/006-make-tally-sales-call-report/Sales Call Report.pdf" target="_blank">rapport PDF</a> généré.</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[Découvrez comment Tally, Make et DocuGenerate peuvent automatiser la génération de rapports à partir de soumissions de formulaires, améliorant l'efficacité et la précision de votre flux de travail. Explorez l'intégration fluide de ces outils pour simplifier votre processus de génération de PDF.]]></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">Personnalisez vos Certificats de Participation avec des Photos de Profil</title> <link href="https://www.docugenerate.com/fr/blog/personnalisez-vos-certificats-de-participation-avec-des-photos-de-profil/" rel="alternate" type="text/html" title="Personnalisez vos Certificats de Participation avec des Photos de Profil"/> <published>2024-02-02T00:00:00+00:00</published> <updated>2024-02-02T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/personnalisez-vos-certificats-de-participation-avec-des-photos-de-profil</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/personnalisez-vos-certificats-de-participation-avec-des-photos-de-profil/"><![CDATA[<h2 id="qu-est-ce-qu-un-certificat-de-participation">Qu’est-ce qu’un certificat de participation?</h2> <p>Les certificats de participation occupent une place importante dans le domaine de la reconnaissance et de l’appréciation. Ils servent de témoignages tangibles de reconnaissance, célébrant l’implication active d’une personne dans divers événements et activités. La <strong>journée annuelle de team building</strong> est l’un de ces événements qui justifie souvent la distribution de ces certificats. Cette occasion spéciale réunit les employés dans une ambiance de camaraderie et de renforcement des compétences, favorisant un sentiment d’unité et d’objectif commun au sein de l’organisation.</p> <p>À l’ère du numérique, où la personnalisation est devenue une caractéristique des expériences engageantes, l’idée d’intégrer les <strong>photos de profil</strong> des employés dans les certificats de participation ajoute une touche innovante et significative. Contrairement aux certificats génériques, les certificats personnalisés agrémentés de photos de profil individuelles résonnent à un niveau plus profond. Ils célèbrent non seulement la présence, mais aussi les contributions uniques que chaque personne apporte. Cela transforme ce qui pourrait être perçu comme une tâche administrative routinière en un geste de reconnaissance réfléchi, soulignant l’importance de l’implication de chaque membre de l’équipe.</p> <h2 id="creer-le-modele-parfait">Créer le Modèle Parfait</h2> <p>Pour mettre en œuvre cette personnalisation, un modèle de certificat bien conçu est essentiel. Ce modèle sert de toile sur laquelle les photos de profil seront intégrées de manière fluide. À l’aide de <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> dynamiques, telles que <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> et <code class="language-plaintext highlighter-rouge">{%Photo}</code>, le modèle peut être personnalisé pour afficher le nom et la photo de profil de chaque employé. Le résultat est un certificat visuellement attrayant qui capture à la fois l’essence de l’événement et le rôle de la personne au sein de celui-ci.</p> <p>Remarquez que pour insérer la photo de profil, la balise <code class="language-plaintext highlighter-rouge">{%Photo}</code> est utilisée, comme expliqué dans l’article <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-images-a-un-modele/">Comment ajouter des images à un modèle</a>. L’image doit être encodée au format Base64, et les formats d’image acceptés sont PNG, JPG et SVG.</p> <p>Voici à quoi ressemble le modèle de <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation.docx">Certificate of Participation</a>. Vous pouvez le télécharger et l’essayer vous-même :</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation.png" alt="Certificat de participation"/></p> <h2 id="encoder-les-images-en-base64">Encoder les Images en Base64</h2> <p>Pour aller encore plus loin dans la personnalisation, l’intégration d’images encodées en Base64 offre une approche plus dynamique et efficace. L’encodage Base64 convertit les images en chaînes de texte, éliminant le besoin de fichiers image externes tout en conservant la qualité visuelle.</p> <p>Des outils en ligne, comme <a href="https://www.base64-image.de/" target="_blank" rel="nofollow noopener">Base64 Image Encoder</a>, simplifient ce processus de conversion. Voici comment utiliser cet outil gratuit pour encoder une image en Base64, puis copier la valeur encodée dans le presse-papiers :</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/base64-image.gif" alt="Démo de conversion Base64"/></p> <p>De plus, les développeurs peuvent utiliser des langages de programmation comme Python pour effectuer cette opération de manière programmatique. L’extrait de code Python suivant illustre la conversion :</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>Cette approche simplifie le processus de génération de certificats et garantit que chaque certificat est autonome et facile à partager.</p> <h2 id="tester-le-certificat-pour-une-personne">Tester le Certificat pour une Personne</h2> <p>Avant de générer des certificats pour tous les participants, il est prudent de créer un certificat de test pour visualiser le résultat final. L’application web intuitive de DocuGenerate simplifie ce processus, vous permettant de saisir les données en <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-en-remplissant-un-formulaire/">remplissant un formulaire</a>, où chaque champ correspond à une balise de votre modèle. Pour le champ <code class="language-plaintext highlighter-rouge">Photo</code>, vous pouvez simplement coller la valeur encodée en Base64 copiée à l’<a href="#encoder-les-images-en-base64">étape précédente</a>.</p> <p>Faire un essai permet non seulement de confirmer l’exactitude du certificat, mais offre également un aperçu de la touche personnalisée que chaque participant recevra.</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/one-certificate.gif" alt="Certificat de participation avec photo de profil pour une personne"/></p> <h2 id="generer-les-certificats-pour-tous-les-participants">Générer les Certificats pour Tous les Participants</h2> <p>Pour les événements avec de nombreux participants, générer manuellement les certificats peut être une tâche chronophage. C’est là que la véritable <strong>puissance de l’automatisation</strong> entre en jeu. En exploitant des données JSON, les certificats de tous les participants peuvent être <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-de-donnees-json/">générés en une seule fois</a>. Cette approche garantit cohérence, précision et efficacité dans la création d’un certificat personnalisé pour chaque participant.</p> <p>Vous pouvez explorer les <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/certificate-data.json" target="_blank">données JSON</a> utilisées pour générer tous les certificats. Veuillez noter que la clé JSON pour la balise <code class="language-plaintext highlighter-rouge">{%Photo}</code> est <code class="language-plaintext highlighter-rouge">"Photo"</code> et non <code class="language-plaintext highlighter-rouge">"%Photo"</code>, le caractère <code class="language-plaintext highlighter-rouge">%</code> ne devant pas être inclus.</p> <p>Voici une démonstration de la façon d’utiliser l’application web de DocuGenerate pour générer tous les certificats en une seule fois. Dans cet exemple, un <a href="https://www.docugenerate.com/fr/aide/articles/combiner-les-documents-generes-en-un-seul-fichier/">fichier PDF unique</a> contenant tous les certificats est généré, mais vous pouvez également choisir, dans les options de fusion, de générer un <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-separes-pour-chaque-element/">fichier PDF séparé</a> pour chaque participant.</p> <p><img src="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/many-certificates.gif" alt="Certificat de participation avec photo de profil pour plusieurs personnes"/></p> <p>Ce parcours de personnalisation et d’automatisation aboutit à la création d’un <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation Generated.pdf" target="_blank">document PDF</a> qui incarne l’esprit de l’événement et les contributions de chaque participant. Ces certificats PDF générés offrent une présentation soignée et professionnelle, prête à être distribuée et affichée.</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="conclusion">Conclusion</h2> <p>En conclusion, l’intégration de photos de profil dans les certificats de participation à l’aide d’outils comme DocuGenerate marque un changement de paradigme dans la façon dont la reconnaissance et l’appréciation sont exprimées. Au-delà de la notion traditionnelle de certificat se trouve un espace de personnalisation, où l’identité de chaque personne est intimement tissée dans le tissu même du certificat.</p> <p>Ce mélange de technologie, de reconnaissance et de touche personnelle agit comme un catalyseur de motivation, favorisant un sentiment plus fort d’appartenance et de camaraderie au sein du lieu de travail. Alors que les organisations continuent de faire évoluer leurs approches de l’engagement des employés, les certificats de participation personnalisés témoignent de l’importance de reconnaître la contribution de chaque personne vers des objectifs communs.</p> <h3 id="ressources">Ressources</h3> <ul> <li>L’outil <a href="https://www.base64-image.de/" target="_blank" rel="nofollow noopener">Base64 Image Encoder</a> utilisé pour convertir les images en Base64.</li> <li>Le modèle <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation.docx">Certificate of Participation</a> utilisé dans cet article.</li> <li>Les <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/certificate-data.json" target="_blank">données JSON</a> d’exemple utilisées pour générer tous les certificats.</li> <li>Les <a href="https://www.docugenerate.com/assets/posts/005-participation-certificates-with-pictures/Certificate of Participation Generated.pdf" target="_blank">certificats PDF</a> générés à partir des données d’exemple.</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[Les certificats de participation célébrant un engagement, comme la journée annuelle de team building, peuvent être rendus plus personnels avec des photos de profil. Utilisez la puissance de l'automatisation pour générer efficacement des certificats à partir d'un modèle dynamique et de photos encodées en Base64.]]></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">Créer des Contrats de Travail avec des Clauses Variables</title> <link href="https://www.docugenerate.com/fr/blog/creer-des-contrats-de-travail-avec-des-clauses-variables/" rel="alternate" type="text/html" title="Créer des Contrats de Travail avec des Clauses Variables"/> <published>2024-01-30T00:00:00+00:00</published> <updated>2024-01-30T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/creer-des-contrats-de-travail-avec-des-clauses-variables</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/creer-des-contrats-de-travail-avec-des-clauses-variables/"><![CDATA[<h2 id="qu-est-ce-qu-un-contrat-de-travail">Qu’est-ce qu’un Contrat de Travail?</h2> <p>Un <strong>contrat de travail</strong> est un document juridiquement contraignant qui établit les conditions d’emploi entre un employeur et un employé. Il décrit les droits, responsabilités et obligations des deux parties, fournissant un cadre pour la relation de travail. Les contrats de travail couvrent généralement des <strong>aspects essentiels</strong> tels que l’intitulé du poste, les missions et responsabilités, la rémunération, les horaires de travail, les avantages, les conditions de résiliation et les exigences de confidentialité.</p> <p>Ces contrats constituent une base pour la relation de travail, offrant clarté et protection à l’employeur comme à l’employé. Ils aident à établir des attentes, des droits et des obligations, garantissant que les deux parties comprennent leurs rôles et responsabilités. Les contrats de travail jouent également un rôle essentiel dans la <strong>protection des intérêts des employeurs</strong>, car ils peuvent inclure des clauses relatives à la non-divulgation d’informations confidentielles, des clauses de non-concurrence, et des droits de propriété intellectuelle.</p> <p>En plus de traiter des <strong>considérations juridiques et pratiques</strong>, les contrats de travail peuvent favoriser un environnement de travail positif en encourageant une communication claire, en fixant des attentes et en évitant les malentendus. Ils fournissent un enregistrement écrit complet des conditions convenues, ce qui peut aider à résoudre les litiges et désaccords pouvant survenir au cours de l’emploi.</p> <h2 id="rediger-un-contrat-de-travail">Rédiger un Contrat de Travail</h2> <p>Lorsqu’il s’agit de rédiger des <strong>contrats de travail</strong>, l’un des aspects les plus difficiles est de créer un modèle pouvant intégrer des <strong>clauses variables</strong>. Les modèles traditionnels nécessitent souvent une modification manuelle pour chaque contrat, ce qui peut être chronophage et source d’erreurs.</p> <p>Cependant, grâce à l’utilisation de conditions dynamiques, il est possible de créer des modèles flexibles capables de générer efficacement des contrats de travail personnalisés. Dans cet article, nous allons explorer le processus de création de contrats de travail avec des clauses variables et comment cette approche peut simplifier le processus de génération de documents.</p> <h2 id="creer-un-modele-avec-des-balises-de-fusion">Créer un Modèle avec des Balises de Fusion</h2> <p>La création d’un modèle de contrat de travail implique l’ajout de <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> qui seront remplacées par les données réelles lors de la génération du document final. La première itération du modèle inclut des balises de fusion telles que <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>, et d’autres.</p> <p>Pour rendre ces balises de fusion facilement reconnaissables pendant les tests, elles sont surlignées en jaune dans le modèle et dans les documents générés. Cependant, il est généralement recommandé de retirer le surlignage une fois le modèle validé et prêt à être utilisé.</p> <p>La gestion des clauses variables dans le modèle se fait à l’aide de <strong>cases à cocher</strong>. Lors du remplissage du modèle, la personne responsable de la saisie des données peut cocher la case correspondante pour sélectionner l’option souhaitée. Lorsqu’une seule option doit être choisie, la mention <code class="language-plaintext highlighter-rouge">(Check one)</code> est incluse dans le modèle pour indiquer cette exigence.</p> <p>Cependant, il est important de noter que cette approche entraîne un document final <strong>plus long que nécessaire</strong>, puisqu’il inclut toutes les options possibles pour chaque clause. De plus, du point de vue de la confidentialité, cela peut divulguer plus d’informations que nécessaire, les employés n’ayant pas forcément besoin de connaître certaines clauses qui pourraient exister.</p> <p>Vous pouvez consulter ci-dessous la version initiale du modèle, qui ne contient que les espaces réservés et les cases à cocher, ou vous pouvez <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Checkboxes.docx">télécharger le modèle</a> pour l’examiner en détail.</p> <object data="/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Checkboxes.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="ajouter-des-conditions-et-des-expressions-logiques">Ajouter des Conditions et des Expressions Logiques</h2> <p>Bien que la création d’un modèle avec plusieurs options pour chaque clause soit une bonne solution, une meilleure solution consiste à utiliser des <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-conditions-a-un-modele/">conditions dynamiques</a> et la <a href="https://www.docugenerate.com/fr/aide/articles/aller-plus-loin-avec-la-syntaxe-avancee/">syntaxe avancée</a> dans le modèle. Ces techniques permettent d’inclure des conditions, des négations et des expressions logiques pouvant contrôler quelles clauses sont incluses dans le document final, au lieu d’utiliser des cases à cocher.</p> <p>Comme vous pouvez le voir dans le <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.docx">modèle mis à jour</a> ci-dessous, les conditions sont surlignées en vert pour les distinguer dans le modèle. Lorsqu’un document est généré, les conditions sont évaluées et les sections correspondantes sont affichées ou non dans le résultat final. Et bien sûr, les balises de condition n’apparaissent pas dans le document généré, garantissant un contrat final propre et professionnel.</p> <p>Des conditions et négations simples comme <code class="language-plaintext highlighter-rouge">[#full_time]</code><strong>temps plein</strong><code class="language-plaintext highlighter-rouge">[/][^full_time]</code><strong>temps partiel</strong><code class="language-plaintext highlighter-rouge">[/]</code> peuvent être utilisées par défaut sur n’importe quel modèle. Cependant, pour utiliser des expressions comme <code class="language-plaintext highlighter-rouge">[#payments_per_month == 1]</code>, la <strong>syntaxe avancée</strong> doit être <a href="https://www.docugenerate.com/fr/aide/articles/comment-activer-la-syntaxe-avancee/">activée</a>. Cela permet également d’utiliser la « notation par points » dans le modèle pour référencer les propriétés d’un objet, comme <code class="language-plaintext highlighter-rouge">[#non_compete.option1]</code> et <code class="language-plaintext highlighter-rouge">[#non_compete.option2]</code>.</p> <p>Enfin, veuillez noter que puisque la syntaxe avancée est activée pour ce modèle, vous remarquerez peut-être que les balises de fusion ne contiennent aucun espace. Il est important de s’assurer qu’il n’y a aucun espace dans les balises de fusion, car cela pourrait affecter le bon fonctionnement du processus de génération de documents.</p> <object data="/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.pdf" type="application/pdf" class="inline-pdf-blog"></object> <h2 id="adapter-le-jeu-de-donnees-au-modele">Adapter le Jeu de Données au Modèle</h2> <p>La création de contrats de travail dynamiques nécessite de travailler avec des données prenant en charge la notation par objets. Une option adaptée pour cela est l’utilisation de <strong>JSON</strong> (JavaScript Object Notation), un format d’échange de données léger qui permet une représentation organisée des données structurées.</p> <p>Contrairement aux données Excel, qui reposent sur un format tabulaire, JSON offre une structure hiérarchique qui s’aligne bien avec les clauses variables présentes dans les contrats de travail. Cette structure hiérarchique permet une meilleure organisation et représentation des données, facilitant la gestion et la manipulation des variables au sein du contrat.</p> <p>Pour améliorer encore l’organisation et la clarté des données JSON, les variables peuvent être <strong>regroupées à l’aide d’objets</strong>. Regrouper des variables similaires sous des noms d’objets pertinents améliore la lisibilité et la maintenabilité. Par exemple, les variables liées aux dépenses peuvent être regroupées sous un objet <code class="language-plaintext highlighter-rouge">expenses</code>, tandis que les variables liées à la résolution des litiges peuvent être regroupées sous un objet <code class="language-plaintext highlighter-rouge">dispute</code>. Cette approche facilite l’identification et la gestion des clauses spécifiques au sein du modèle.</p> <p>Vous pouvez explorer l’<a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/agreement-data.json" target="_blank">exemple de données JSON</a> fourni, qui contient des valeurs correspondant aux variables du modèle. Cela vous donnera un aperçu de la façon dont les clauses et les balises de fusion seront remplies.</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="exemple-de-contrat-de-travail-genere">Exemple de Contrat de Travail Généré</h2> <p>Pour illustrer les concepts abordés, vous pouvez consulter un <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement Generated.pdf" target="_blank">exemple de contrat de travail</a> généré à partir du modèle avec conditions plutôt qu’avec cases à cocher, ainsi que des données JSON fournies.</p> <object data="/assets/posts/004-dynamic-employment-agreements/Employment Agreement Generated.pdf" type="application/pdf" class="inline-pdf-blog"></object> <p>Vous pouvez générer diverses versions du contrat en modifiant simplement les propriétés des données. Par exemple, en utilisant <code class="language-plaintext highlighter-rouge">"expenses": null</code> au lieu de la valeur dans les données d’exemple, la <strong>section 5. Expenses</strong> contiendrait uniquement <em>Employee will NOT be reimbursed for out-of-pocket expenses</em>.</p> <p>N’hésitez pas à essayer de générer d’autres versions de contrat de travail vous-même en <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créant un nouveau modèle</a> à partir du <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.docx">contrat avec conditions</a>. Ensuite, collez les <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/agreement-data.json" target="_blank">données JSON</a> dans le champ des éléments de données et modifiez certaines valeurs comme vous le souhaitez.</p> <p><img src="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/new-document.png" alt="Créer un nouveau document"/></p> <h2 id="conclusion">Conclusion</h2> <p>Créer des contrats de travail avec des clauses variables peut être une tâche difficile, mais grâce à la syntaxe avancée, aux conditions dynamiques et aux données JSON, cela devient beaucoup plus simple à gérer. En utilisant ces techniques, les organisations peuvent simplifier le processus de génération de documents, améliorer l’efficacité et garantir la précision et la personnalisation des contrats de travail.</p> <p>Qu’il s’agisse de gérer différents types d’emploi, structures de rémunération ou ensembles d’avantages, les modèles dynamiques offrent la flexibilité et le contrôle nécessaires pour générer des contrats complets et personnalisés. Cette approche permet aux entreprises de se concentrer sur leurs initiatives stratégiques tout en réduisant les tâches administratives.</p> <p>Pour améliorer davantage vos processus RH, envisagez d’intégrer des outils complémentaires à la génération de documents. Par exemple, des plateformes comme <a href="https://www.qandle.com/" target="_blank" rel="nofollow noopener">Qandle</a> offrent des solutions RH complètes pour les entreprises modernes, couvrant tout, de la gestion de la paie à l’engagement des employés. Combinés à une génération de documents avancée, ces outils peuvent garantir une gestion efficace des contrats au sein de vos opérations RH.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement with Conditions.docx">contrat de travail</a> avec conditions et expressions logiques.</li> <li>L’<a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/agreement-data.json" target="_blank">exemple de données JSON</a> utilisé pour générer le contrat.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/004-dynamic-employment-agreements/Employment Agreement Generated.pdf" target="_blank">contrat PDF</a> généré à partir du modèle avec conditions et des données JSON.</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[Simplifiez la génération de documents et créez facilement des contrats de travail personnalisés. Découvrez comment la syntaxe avancée, les conditions dynamiques et les données JSON peuvent simplifier le processus, améliorer l'efficacité et garantir des contrats précis.]]></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 Façons de Générer des Lettres d’Offre d’Emploi en Masse</title> <link href="https://www.docugenerate.com/fr/blog/4-facons-de-generer-des-lettres-d-offre-d-emploi-en-masse/" rel="alternate" type="text/html" title="4 Façons de Générer des Lettres d’Offre d’Emploi en Masse"/> <published>2024-01-15T00:00:00+00:00</published> <updated>2024-01-15T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/4-facons-de-generer-des-lettres-d-offre-d-emploi-en-masse</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/4-facons-de-generer-des-lettres-d-offre-d-emploi-en-masse/"><![CDATA[<h2 id="qu-est-ce-qu-une-lettre-d-offre-d-emploi">Qu’est-ce qu’une Lettre d’Offre d’Emploi</h2> <p>Une lettre d’offre d’emploi est un document formel émis par un employeur à l’attention d’un candidat sélectionné pour un poste. Elle précise les détails de l’offre, notamment l’intitulé du poste, la date de début, la rémunération et les avantages. Elle constitue un <strong>accord écrit</strong> entre l’<strong>employeur et le candidat</strong>, et fixe les attentes pour la relation de travail.</p> <p>La lettre d’offre d’emploi est une étape importante du processus de recrutement, car elle énonce les <strong>conditions d’emploi</strong>, et permet de s’assurer que l’employeur et le candidat sont sur la même longueur d’onde. Elle donne également au candidat l’occasion de revoir les détails de l’offre, et de poser des questions ou demander des clarifications avant d’accepter le poste.</p> <p>En plus des conditions de l’offre, la lettre peut également inclure des informations sur l’entreprise, comme sa mission, ses valeurs et sa culture, ainsi que les politiques et procédures pertinentes. Globalement, la lettre d’offre d’emploi est un document essentiel qui contribue à assurer une transition en douceur vers un nouvel emploi et une relation de travail positive entre l’employeur et l’employé.</p> <h2 id="trouver-le-modele-de-lettre">Trouver le Bon Modèle de Lettre</h2> <p>Il existe plusieurs ressources pour trouver des modèles de lettres d’offre d’emploi. En voici quelques-unes :</p> <ul> <li> <p>Les <strong>bibliothèques de modèles en ligne</strong> qui proposent des modèles gratuits et payants pour les lettres d’offre d’emploi. Ces modèles sont faciles à personnaliser et fournissent une structure de base pour créer une lettre d’offre d’emploi professionnelle.</p> </li> <li> <p>Les <strong>sites web de ressources humaines</strong> qui proposent des modèles et des exemples de lettres d’offre d’emploi à leurs membres. Ces modèles peuvent être une ressource utile pour les professionnels et managers RH qui doivent créer des lettres d’offre d’emploi pour leurs organisations.</p> </li> <li> <p>Les <strong>sites web juridiques</strong> qui proposent des modèles et des conseils pour créer des lettres d’offre d’emploi conformes au droit du travail. Ces modèles peuvent être particulièrement utiles pour les petites entreprises et startups qui doivent créer des lettres d’offre d’emploi juridiquement conformes.</p> </li> <li> <p>Les <strong>prestataires de services professionnels</strong>, comme les cabinets d’avocats spécialisés en droit du travail et les cabinets de conseil RH, proposent des modèles de lettres d’offre d’emploi dans le cadre de leurs services. Ces modèles sont généralement plus complets et peuvent inclure des informations sur la conformité au droit du travail, ainsi que des conseils pour personnaliser la lettre selon les besoins spécifiques de votre organisation.</p> </li> </ul> <p>Quelle que soit la source, il est important de <strong>revoir attentivement</strong> tout modèle ou exemple de lettre d’offre d’emploi avant de l’utiliser. Il est recommandé de consulter un avocat ou un professionnel RH pour s’assurer que la lettre est conforme à toutes les lois et réglementations du travail applicables.</p> <h2 id="televerser-le-modele">Commencer en Téléversant le Modèle</h2> <p>Pour ce tutoriel, nous allons utiliser un modèle standard de <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.docx">lettre d’offre d’emploi</a> avec une structure assez simple, contenant des <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balises de fusion</a> comme <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> et quelques autres. Sur votre compte DocuGenerate, allez-y et <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créez un nouveau modèle</a> en téléversant le fichier du modèle de lettre, et vous devriez voir quelque chose comme dans l’image ci-dessous.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/letter-template.png" alt="Modèle de facture contenant des balises de fusion"/></p> <p>Si vous voulez en savoir plus sur la façon de transformer une lettre existante en modèle, consultez l’article de blog précédent <a href="https://www.docugenerate.com/fr/blog/comment-transformer-une-facture-existante-en-modele/">Comment Transformer une Facture Existante en Modèle</a>, le principe étant le même.</p> <h2 id="generer-les-lettres-d-offre-d-emploi">Générer les Lettres d’Offre d’Emploi</h2> <p>Pour générer des lettres d’offre d’emploi, disposer du bon modèle est une première étape essentielle. Une fois le modèle en place, l’étape suivante consiste à générer les lettres en masse. Il existe deux approches principales pour cela. La première consiste à <strong>utiliser l’application web</strong> et à générer les lettres via l’interface web, ce qui est l’option la plus simple et la plus directe.</p> <p>La seconde approche, de nature plus technique, consiste à <strong>utiliser l’API</strong>. Cette méthode est généralement utilisée par les organisations ayant des besoins techniques plus avancés et un besoin accru de personnalisation et d’automatisation. L’API permet à l’organisation d’intégrer le processus de génération des lettres d’offre d’emploi à ses systèmes et processus existants, facilitant la génération en masse des lettres et simplifiant le processus de recrutement.</p> <p>Pour chaque approche, les <strong>données</strong> permettant de générer les lettres proviendront de 2 sources différentes (un <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">fichier Excel</a> et un <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">objet JSON</a>), ce qui porte à 4 le nombre total de façons de générer les lettres. <strong>C’est parti !</strong></p> <h3 id="avec-l-application-web-et-des-donnees-excel">1. Avec l’<strong>Application Web</strong> et des Données <strong>Excel</strong></h3> <p>Commençons par générer les lettres d’offre d’emploi depuis l’application web en utilisant le <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">fichier Excel</a> comme source de données. Cliquez sur <code class="language-plaintext highlighter-rouge">New document</code> puis sélectionnez l’option <code class="language-plaintext highlighter-rouge">Excel or CSV file</code>. Vous pouvez en savoir plus sur la génération de documents à partir de données Excel dans <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-d-un-fichier-excel-ou-csv/">cet article</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-excel-data-source.png" alt="Sélection de la source de données Excel" class="desktop-width-50"/></p> <p>Pour chaque ligne sélectionnée dans le fichier Excel, un document PDF sera généré à partir du modèle en remplaçant les balises de fusion par les données réelles. Par défaut, toutes les lignes du fichier Excel seront utilisées pour générer les lettres d’offre d’emploi. Mais vous pouvez aussi sélectionner celles à utiliser en cliquant sur les lignes, celles sélectionnées étant surlignées en jaune. Si vous voulez <strong>prévisualiser rapidement</strong> à quoi ressemble la lettre, vous pouvez simplement <strong>sélectionner une ligne</strong> comme dans la vidéo ci-dessous :</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-excel-data.gif" alt="Générer une lettre PDF à partir du modèle Job Offer et de données Excel"/></p> <p><strong>Important</strong> : pour que les documents soient générés correctement, les <strong>noms de colonnes</strong> du fichier Excel doivent correspondre exactement aux <strong>balises de fusion</strong> du modèle : <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>, etc. Vous pouvez <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter (Excel data).pdf" target="_blank">télécharger</a> les lettres générées si vous voulez voir le résultat final.</p> <h3 id="avec-l-application-web-et-des-donnees-json">2. Avec l’<strong>Application Web</strong> et des Données <strong>JSON</strong></h3> <p>Ensuite, nous allons générer les lettres d’offre d’emploi depuis l’application web en utilisant des <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">données JSON</a>. Cliquez sur <code class="language-plaintext highlighter-rouge">New document</code> puis sélectionnez l’option <code class="language-plaintext highlighter-rouge">JSON data</code>. Vous pouvez en savoir plus sur la génération de documents avec JSON dans <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-de-donnees-json/">cet article</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-json-data-source.png" alt="Sélection de la source de données JSON" class="desktop-width-50"/></p> <p>Ouvrez le fichier de <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">données JSON</a> et copiez son contenu, ou copiez-le directement depuis la zone de texte ci-dessous. Comme vous pouvez le voir, la valeur JSON contient l’équivalent du fichier Excel, mais au lieu de lignes, nous avons une liste d’objets représentant les données. Et comme c’était le cas pour les noms de colonnes du fichier Excel, les <strong>clés JSON</strong> doivent correspondre exactement aux <strong>balises de fusion</strong> du modèle : <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>, etc., pour que la fusion se déroule correctement.</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>Après avoir copié les données JSON, retournez sur l’application web DocuGenerate et collez la valeur dans le champ indiquant <code class="language-plaintext highlighter-rouge">Enter a JSON array of objects</code>. Contrairement à l’option <a href="#avec-l-application-web-et-des-donnees-excel">Excel</a>, lorsque vous utilisez du JSON, il n’est pas possible de sélectionner quels éléments du tableau JSON utiliser, et <strong>toutes les données</strong> seront utilisées pour générer les documents.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/web-app-json-data.gif" alt="Générer plusieurs lettres PDF à partir du modèle Job Offer et de données JSON"/></p> <p>Si vous voulez voir les lettres d’offre d’emploi générées à partir des données JSON, vous pouvez <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter (JSON data).pdf" target="_blank">télécharger</a> le fichier PDF.</p> <h3 id="avec-l-api-et-des-donnees-excel">3. Avec l’<strong>API</strong> et des Données <strong>Excel</strong></h3> <p>Pour les deux dernières sections, nous allons utiliser l’<a href="https://api.docugenerate.com/" target="_blank">API de DocuGenerate</a> pour générer les lettres d’offre d’emploi. Et pour faciliter l’interaction avec l’API, nous avons créé une <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/DocuGenerate.postman_collection.json" target="_blank">collection Postman</a> que vous pouvez importer dans votre espace de travail <a href="https://www.postman.com/" target="_blank" rel="noopener">Postman</a>. Après avoir importé la collection, vous devriez voir les endpoints <code class="language-plaintext highlighter-rouge">Template</code> et <code class="language-plaintext highlighter-rouge">Document</code> listés comme dans l’image suivante :</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-api-collection.png" alt="Configuration de la collection API de DocuGenerate" class="desktop-width-50"/></p> <p>Ensuite, vous devrez configurer la section <code class="language-plaintext highlighter-rouge">Authorization</code> de la collection Postman en saisissant votre clé API unique, que vous trouverez sur la <a href="https://app.docugenerate.com/settings" target="_blank">page Paramètres</a> après vous être connecté. Pour ce tutoriel, nous utiliserons la clé de démonstration <code class="language-plaintext highlighter-rouge">491c000c5fad32ed7787005b0723ad55</code>, mais vous pouvez la remplacer par votre propre clé API.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-api-key.png" alt="Configuration de la clé API de DocuGenerate dans Postman"/></p> <p>Ouvrez l’endpoint <code class="language-plaintext highlighter-rouge">Document / Generate Document</code> de la collection Postman et spécifiez le paramètre <code class="language-plaintext highlighter-rouge">template_id</code>. Si vous avez créé un modèle avec la <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.docx">lettre d’offre d’emploi</a>, utilisez l’id de ce modèle. Sinon, vous pouvez utiliser l’id de modèle de démonstration <code class="language-plaintext highlighter-rouge">ZtHBhb9jLh6TcZuaVteI</code>, associé à la clé API de démonstration.</p> <p>Et enfin, n’oubliez pas de sélectionner le fichier <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">Job Offer Letter.xlsx</a> pour le paramètre <code class="language-plaintext highlighter-rouge">file</code> de la requête. Le paramètre <code class="language-plaintext highlighter-rouge">output_format</code> est optionnel, la valeur par défaut étant <code class="language-plaintext highlighter-rouge">.docx</code>, mais vous pouvez aussi générer la lettre d’offre d’emploi au format <code class="language-plaintext highlighter-rouge">.pdf</code>, <code class="language-plaintext highlighter-rouge">.doc</code> ou <code class="language-plaintext highlighter-rouge">.odt</code>, comme vous pouvez le voir dans la <a href="https://api.docugenerate.com/#/Document/generateDocument" target="_blank">référence API</a>.</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-post-document-excel.png" alt="Générer plusieurs lettres PDF à partir du modèle Job Offer avec Postman en utilisant des données Excel"/></p> <p>Vous pouvez voir dans l’image précédente tous les paramètres de la requête, ainsi que la réponse du serveur. Le champ <code class="language-plaintext highlighter-rouge">document_uri</code> est un lien vers le <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 généré</a> contenant les lettres d’offre d’emploi.</p> <h3 id="avec-l-api-et-des-donnees-json">4. Avec l’<strong>API</strong> et des Données <strong>JSON</strong></h3> <p>Enfin, la dernière façon de générer les lettres d’offre d’emploi consiste à utiliser l’API avec des données JSON. Les paramètres de la requête sont à peu près les mêmes que <a href="#avec-l-api-et-des-donnees-excel">précédemment</a>, mais au lieu de spécifier le paramètre <code class="language-plaintext highlighter-rouge">file</code>, vous devez sélectionner le paramètre <code class="language-plaintext highlighter-rouge">data</code> et y coller les <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">données JSON</a>. Regardez la vidéo suivante pour voir à quoi ressemble ce processus :</p> <p><img src="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/postman-post-document-json.gif" alt="Générer plusieurs lettres PDF à partir du modèle Job Offer avec Postman en appelant l'API de DocuGenerate"/></p> <p>Comme pour l’objet de réponse précédent, le champ <code class="language-plaintext highlighter-rouge">document_uri</code> est un lien vers le <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">PDF généré</a> contenant les lettres d’offre d’emploi. Si vous avez besoin de plus d’informations sur les autres champs de l’objet de réponse, vous trouverez le schéma détaillé de <code class="language-plaintext highlighter-rouge">Document</code> sur la page <a href="https://api.docugenerate.com/" target="_blank">référence API</a>.</p> <h2 id="conclusion">Conclusion</h2> <p>Dans cet article, nous avons montré comment générer des lettres d’offre d’emploi en masse à partir d’un modèle prédéfini en utilisant 4 méthodes différentes. Pour les deux premières méthodes, nous avons <strong>utilisé l’application web</strong> pour générer les lettres via l’interface web, en fournissant les données sous forme de <strong>fichier Excel</strong> ou d’<strong>objet JSON</strong>. Les deux dernières méthodes consistaient à <strong>utiliser l’API</strong> avec les deux mêmes types de données que pour les premières. Il s’agit d’une option plus technique, mais offrant une plus grande flexibilité en termes de personnalisation et d’automatisation.</p> <h3 id="ressources">Ressources</h3> <ul> <li>La <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/DocuGenerate.postman_collection.json" target="_blank">collection API DocuGenerate</a> pour Postman.</li> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.docx">lettre d’offre d’emploi</a> utilisé dans ce tutoriel.</li> <li>Le <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.xlsx">fichier Excel</a> et les <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">lettres PDF</a> générées avec les données du fichier Excel.</li> <li>Les <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter.json" target="_blank">données JSON</a> et les <a href="https://www.docugenerate.com/assets/posts/003-generate-letters-in-bulk/Job Offer Letter (JSON data).pdf" target="_blank">lettres PDF</a> générées à partir des données JSON.</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[La lettre d'offre d'emploi est une étape importante du processus de recrutement, fixant les conditions d'emploi d'une nouvelle embauche. Découvrez comment générer des lettres d'offre d'emploi en masse à partir d'un modèle prédéfini, en utilisant notre application web ou notre simple API REST.]]></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">Comment Transformer une Facture Existante en Modèle</title> <link href="https://www.docugenerate.com/fr/blog/comment-transformer-une-facture-existante-en-modele/" rel="alternate" type="text/html" title="Comment Transformer une Facture Existante en Modèle"/> <published>2023-12-12T00:00:00+00:00</published> <updated>2023-12-12T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/comment-transformer-une-facture-existante-en-modele</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/comment-transformer-une-facture-existante-en-modele/"><![CDATA[<h2 id="qu-est-ce-qu-une-facture">Qu’est-ce qu’une facture?</h2> <p>Une facture est un <strong>document envoyé par un vendeur à un acheteur</strong>, détaillant les biens ou services fournis et le coût total de ces biens ou services. Elle inclut généralement la date de la transaction, le numéro de facture, les coordonnées du client, ainsi qu’une description des biens ou services fournis. Elle peut également inclure la quantité de chaque article acheté, le prix unitaire et le montant total dû.</p> <p>La facture sert de preuve de la transaction et est souvent utilisée à des fins comptables et fiscales. Elle sert également de demande de paiement auprès du client. Les factures sont couramment utilisées dans les transactions interentreprises, mais peuvent aussi être utilisées dans les transactions avec les consommateurs.</p> <h2 id="outils-pour-generer-des-factures">Outils pour Générer des Factures</h2> <p>Il existe de nombreux outils permettant de créer des factures, allant des <strong>logiciels de comptabilité</strong> aux bons vieux <strong>traitements de texte</strong>. L’effort manuel nécessaire pour créer des factures varie également selon cette échelle. Avec un logiciel de facturation dédié, c’est généralement plus simple, car ils proposent des modèles prêts à l’emploi et disposent d’un éditeur intégré permettant de remplir les différents champs de la facture. À l’autre extrémité de ce spectre se trouvent des éditeurs de documents comme <strong>Microsoft Word</strong> et des éditeurs de feuilles de calcul comme <strong>Microsoft Excel</strong>, qui permettent la création manuelle de factures, mais offrent moins d’automatisation prête à l’emploi.</p> <p>Entre les deux se trouvent des générateurs de documents comme <strong>DocuGenerate</strong>, qui peuvent ajouter de l’automatisation par-dessus des modèles existants. Certains utilisent des éditeurs web WYSIWYG pour créer et modifier les modèles, mais pour DocuGenerate, nous avons choisi d’utiliser de simples <strong>documents Word</strong> comme modèles, car ils sont largement utilisés (vous n’avez donc pas besoin d’apprendre un nouveau logiciel) et en raison de la flexibilité et des options de personnalisation qu’offrent les documents Word classiques. Ainsi, vous pouvez facilement transformer une facture existante en un modèle réutilisable, ce qui vous fait gagner du temps et des efforts pour vos futures tâches de facturation.</p> <h2 id="creer-le-modele-de-facture">Créer le Modèle de Facture</h2> <p>Pour ce tutoriel, nous allons utiliser une simple <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Original.docx">facture de vente</a> contenant quelques informations de base et un tableau avec des articles fictifs. Vous apprendrez comment transformer cette facture en modèle, afin qu’il puisse être utilisé pour générer des factures similaires pour d’autres clients, qui auront la même mise en page mais un contenu différent.</p> <h3 id="ajouter-des-balises-de-fusion">Ajouter des Balises de Fusion</h3> <p>Une <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-une-balise-de-fusion/">balise de fusion</a> est un <strong>espace réservé spécial</strong> au sein d’un modèle de document qui peut être automatiquement remplacé par des données provenant d’une base de données ou d’une feuille de calcul. L’idée est de générer des documents personnalisés en masse, plutôt que de devoir créer chacun manuellement.</p> <p>Par exemple, un modèle de facture pourrait inclure des balises de fusion pour le numéro de facture, le nom du client, son adresse et d’autres informations pertinentes, qui seraient automatiquement renseignées pour chaque client à partir des données stockées dans une feuille de calcul. Cela permet de gagner du temps et de réduire les erreurs par rapport à une saisie manuelle, et est couramment utilisé dans des secteurs comme l’immobilier, la finance et l’assurance.</p> <p>La <strong>première étape</strong> pour ajouter des balises de fusion consiste à identifier les zones de la facture qui doivent être dynamiques, et pour chaque zone, à sélectionner le texte existant et à le remplacer par la balise de fusion correspondante. Par exemple, nous allons remplacer le texte <code class="language-plaintext highlighter-rouge">#0135</code> par <code class="language-plaintext highlighter-rouge">[Invoice No]</code>, puis <code class="language-plaintext highlighter-rouge">March 1st, 2023</code> par <code class="language-plaintext highlighter-rouge">[Invoice Date]</code>, et ainsi de suite, comme vous pouvez le voir dans la vidéo suivante :</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/create-template-from-invoice.gif" alt="Remplacer le texte par des balises de fusion"/></p> <p>Après avoir effectué cette première étape, le modèle de facture devrait contenir les balises de fusion <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>, comme dans l’image ci-dessous. Comme vous pouvez le voir, il n’y a pas de règle particulière pour le format des balises de fusion : vous pouvez utiliser des majuscules, des mots avec une majuscule initiale, tant qu’elles utilisent les mêmes <a href="https://www.docugenerate.com/fr/aide/articles/qu-est-ce-qu-un-delimiteur-de-balise/">délimiteurs de balises</a>, qui dans ce cas sont <code class="language-plaintext highlighter-rouge">[</code> comme délimiteur gauche et <code class="language-plaintext highlighter-rouge">]</code> comme délimiteur droit.</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-with-merge-tags.png" alt="Facture avec balises de fusion"/></p> <p>Vous êtes libre d’utiliser les délimiteurs de votre choix lors de la création du modèle, comme par exemple <code class="language-plaintext highlighter-rouge">{Invoice No}</code>, <code class="language-plaintext highlighter-rouge">[[Invoice No]]</code>, ou même des délimiteurs plus exotiques comme <code class="language-plaintext highlighter-rouge">![[[Invoice No]]]!</code>. L’analyseur de DocuGenerate peut <a href="https://www.docugenerate.com/fr/produit/#apercu-des-balises">détecter automatiquement</a> les balises les plus couramment utilisées lors du téléversement d’un modèle, mais si vous utilisez des délimiteurs peu courants qui ne sont pas détectés, vous pouvez toujours <a href="https://www.docugenerate.com/fr/aide/articles/comment-mettre-a-jour-les-delimiteurs-de-balises/">les mettre à jour</a> dans les paramètres du modèle afin que les balises de fusion soient reconnues correctement.</p> <h3 id="rendre-le-tableau-des-articles-dynamique">Rendre le Tableau des Articles Dynamique</h3> <p>L’étape suivante dans la création du modèle de facture consiste à transformer le <strong>tableau des articles</strong> statique en un tableau dynamique. Les articles d’une facture sont les <strong>produits ou services</strong> spécifiques facturés à un client. Ils apparaissent dans la facture sous forme de tableau ou de liste, et incluent généralement le nom de l’article, sa description, la quantité, le prix unitaire et le montant total. Les articles constituent le montant total dû de la facture et fournissent une répartition détaillée de ce que le client paie.</p> <p>Comme pour la <a href="#ajouter-des-balises-de-fusion">première étape</a>, nous allons remplacer le texte existant par les balises de fusion correspondantes. Par exemple, <code class="language-plaintext highlighter-rouge">Item 1</code> est remplacé par <code class="language-plaintext highlighter-rouge">[Name]</code>, <code class="language-plaintext highlighter-rouge">500</code> est remplacé par <code class="language-plaintext highlighter-rouge">[Quantity]</code>, <code class="language-plaintext highlighter-rouge">$175</code> est remplacé par <code class="language-plaintext highlighter-rouge">[Price]</code> et <code class="language-plaintext highlighter-rouge">$87,500</code> est remplacé par <code class="language-plaintext highlighter-rouge">[Amount]</code>. Nous n’avons besoin de modifier que la première ligne du tableau et de supprimer le contenu des autres lignes, car elles seront générées dynamiquement à partir de la liste des articles.</p> <p>Nous allons utiliser une <a href="https://www.docugenerate.com/fr/aide/articles/comment-ajouter-des-tableaux-a-un-modele/">syntaxe spéciale</a> pour parcourir la liste des articles et ajouter plusieurs lignes au tableau, où <code class="language-plaintext highlighter-rouge">[#Items]</code> marque le début de la boucle de tableau et <code class="language-plaintext highlighter-rouge">[/]</code> marque sa fin. À la fin, le tableau devrait ressembler à ceci :</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>Et voici une courte vidéo de l’ensemble du processus de transformation du tableau contenant les articles :</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-table.gif" alt="Créer un tableau dynamique"/></p> <h2 id="tester-le-modele">Tester le Modèle</h2> <p>Après avoir effectué tous ces changements, le modèle de facture devrait ressembler à ceci. Vous pouvez <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Template.docx">télécharger une copie</a> de la facture modifiée si vous ne voulez pas suivre toutes ces étapes mais préférez disposer directement de la version finale du modèle de facture pour le tester.</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-template.png" alt="Modèle de facture final"/></p> <p>Vous devrez d’abord <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créer un nouveau modèle</a> en téléversant le fichier du modèle de facture. Ensuite, allez dans <strong>Generate a new document</strong> et sélectionnez le <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-de-donnees-json/">format de données JSON</a>. Vous pouvez coller la valeur JSON suivante dans la zone de texte, ou si vous préférez, vous pouvez <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-data.json" target="_blank">télécharger</a> un fichier JSON contenant ces données.</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>Voici à quoi cela devrait ressembler dans l’application web DocuGenerate :</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/generate-new-document.png" alt="Modèle de facture final"/></p> <p>Si vous générez ensuite le document PDF avec les <a href="https://www.docugenerate.com/fr/produit/#options-de-fusion">options de fusion</a> par défaut, le résultat devrait ressembler à celui ci-dessous. Si vous ne voulez pas l’essayer tout de suite, vous pouvez simplement <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Generated.pdf" target="_blank">télécharger</a> une copie de la facture PDF générée pour voir à quoi elle ressemble.</p> <p><img src="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/sales-invoice-generated.png" alt="Modèle de facture final"/></p> <h2 id="conclusion">Conclusion</h2> <p>Une facture est un document essentiel qui détaille les biens ou services fournis à un acheteur, le coût, et d’autres détails d’une transaction. Les factures servent de preuve de la transaction et sont utilisées à des fins comptables et fiscales. Il existe divers outils pour créer des factures, comme les logiciels de comptabilité, les traitements de texte et les générateurs de documents. Dans cet article, nous avons montré comment transformer une facture de vente en un modèle réutilisable en ajoutant des balises de fusion à l’aide d’un générateur de documents.</p> <h3 id="ressources">Ressources</h3> <ul> <li>Le modèle de <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Template.docx">facture de vente</a> avec un tableau d’articles dynamique.</li> <li>Les <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/invoice-data.json" target="_blank">données JSON</a> pour tester la génération de la facture.</li> <li>La <a href="https://www.docugenerate.com/assets/posts/002-transform-invoice-to-template/Sales Invoice Generated.pdf" target="_blank">facture PDF</a> générée à partir des données JSON.</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[Il existe divers outils pour créer des factures, comme les logiciels de comptabilité, les traitements de texte et les générateurs de documents. Dans cet article, nous montrons comment transformer une facture de vente en un modèle réutilisable en ajoutant des balises de fusion.]]></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">Comment Utiliser les Modèles de la Bibliothèque de Modèles</title> <link href="https://www.docugenerate.com/fr/blog/comment-utiliser-les-modeles-de-la-bibliotheque-de-modeles/" rel="alternate" type="text/html" title="Comment Utiliser les Modèles de la Bibliothèque de Modèles"/> <published>2023-12-01T00:00:00+00:00</published> <updated>2023-12-01T00:00:00+00:00</updated> <id>https://www.docugenerate.com/fr/blog/comment-utiliser-les-modeles-de-la-bibliotheque-de-modeles</id> <content type="html" xml:base="https://www.docugenerate.com/fr/blog/comment-utiliser-les-modeles-de-la-bibliotheque-de-modeles/"><![CDATA[<h2 id="intro">Découvrez la Bibliothèque de Modèles</h2> <p>La <a href="https://www.docugenerate.com/fr/modeles">Bibliothèque de Modèles</a> de DocuGenerate offre une solution rapide et efficace pour générer des documents de haute qualité. Avec un large choix de modèles personnalisables, vous pouvez facilement créer des factures, des lettres, des contrats, des certificats professionnels et plus encore, sans avoir besoin de compétences avancées en design ou en mise en forme.</p> <p>Notre Bibliothèque de Modèles est conçue pour vous permettre de démarrer rapidement, avec des modèles faciles à personnaliser et à utiliser. Que vous ayez besoin de générer un contrat pour un nouveau client, une facture pour un client ou un certificat pour une cérémonie de remise de prix, notre Bibliothèque de Modèles a ce qu’il vous faut.</p> <p>Dans cet article, nous allons examiner plus en détail la Bibliothèque de Modèles et explorer comment utiliser ses modèles pour simplifier votre processus de génération de documents. Du choix du bon modèle à sa personnalisation selon vos besoins, nous vous accompagnerons à chaque étape, afin que vous puissiez commencer à créer des documents de haute qualité en toute simplicité.</p> <h2 id="choisir-un-modele">Choisir un Modèle</h2> <p>La Bibliothèque de Modèles inclut des exemples de modèles que vous pouvez utiliser pour démarrer immédiatement, sans avoir à créer vos propres modèles. Ces modèles sont conçus pour vous offrir un point de départ pour vos besoins de génération de documents, et peuvent être facilement personnalisés selon vos besoins spécifiques.</p> <p>Les exemples de modèles sont organisés en 4 catégories, comme suit :</p> <ul> <li> <p><a href="https://www.docugenerate.com/fr/modeles#factures">Factures</a>: Facture Marketing, Facture de Réparation, Facture de Déménagement, Facture Professionnelle</p> </li> <li> <p><a href="https://www.docugenerate.com/fr/modeles#lettres">Lettres</a>: Lettre de Motivation, Lettre de Recommandation, Lettre Professionnelle, Lettre Marketing</p> </li> <li> <p><a href="https://www.docugenerate.com/fr/modeles#contrats">Contrats</a>: Contrat de Travail, Contrat Comptable, Accord de Confidentialité, Contrat de Vente</p> </li> <li> <p><a href="https://www.docugenerate.com/fr/modeles#certificats">Certificats</a>: Certificat de Réussite, Certificat de Réussite, Certificat d’Achèvement, Certificat de Travail</p> </li> </ul> <p>Vous pouvez télécharger toutes les ressources associées à chaque modèle en cliquant sur le bouton <strong>Télécharger</strong>. L’archive ZIP inclut le modèle DOCX, un jeu de données JSON, un fichier de données Excel, et un exemple de document PDF généré à partir de ce jeu de données. Cela vous permet de tester rapidement DocuGenerate, sans avoir à créer vos propres modèles.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/download-button.png" alt="Bouton de téléchargement"/></p> <p>Pour cet article, nous allons utiliser le modèle <a href="https://www.docugenerate.com/assets/templates/letters/cover/Cover Letter.zip">Cover Letter</a>. Après avoir téléchargé l’archive <strong>Cover Letter.zip</strong>, décompressez-la et vous devriez voir le dossier <strong>Cover Letter</strong>. Dans la section suivante, nous allons passer en revue le contenu de ce dossier et examiner chaque fichier en détail.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-unzip.png" alt="Décompresser le dossier du modèle" class="desktop-width-50"/></p> <h2 id="decouvrir-les-fichiers">Découvrir les Fichiers du Modèle</h2> <p>Le premier fichier inclus dans l’archive ZIP est le modèle Word <code class="language-plaintext highlighter-rouge">.docx</code> lui-même, qui constitue la base du processus de génération de documents. Chaque modèle est conçu avec des balises de fusion qui permettent de personnaliser des champs spécifiques. Dans le cas de <strong>Cover Letter</strong>, les balises sont <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> et quelques autres.</p> <p>Vous pouvez utiliser ce fichier pour créer un nouveau modèle réutilisable dans DocuGenerate, soit <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">depuis l’application</a>, soit <a href="https://www.docugenerate.com/fr/developpeurs/demarrage-rapide/#creer-modele">via l’API</a>. Que vous préfériez la simplicité de l’interface de l’application ou la puissance et le contrôle de l’API, vous avez le choix de la méthode qui convient le mieux à votre flux de travail.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-docx.png" alt="Le fichier modèle DOCX"/></p> <p>Le second fichier inclus dans l’archive ZIP est un fichier <code class="language-plaintext highlighter-rouge">.json</code>, un format de données léger et facile à utiliser. Ce fichier contient un tableau de 20 objets <code class="language-plaintext highlighter-rouge">JSON</code>, représentant les éléments de données qui peuvent être utilisés pour la fusion de documents. Pour que la fusion se déroule correctement, les <strong>clés</strong> des objets JSON correspondent exactement aux <strong>balises de fusion</strong> du modèle : <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>, etc.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-json.png" alt="Le fichier de données JSON"/></p> <p>Le fichier suivant, avec une extension <code class="language-plaintext highlighter-rouge">.xlsx</code>, est une feuille de calcul Excel qui contient 20 lignes de données d’exemple. Comme pour les <strong>clés JSON</strong> précédemment, les <strong>noms de colonnes</strong> du fichier Excel correspondent exactement aux <strong>balises de fusion</strong> du modèle : <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>, etc.</p> <p>Cette structure de données est essentielle pour générer des documents précis et cohérents, car elle garantit que les bonnes informations sont insérées dans les bons champs. En faisant correspondre les <strong>noms de colonnes</strong> du fichier Excel aux <strong>balises de fusion</strong> du modèle, DocuGenerate peut automatiser le processus de création de documents.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-xlsx.png" alt="Le fichier de données Excel"/></p> <p>Le dernier fichier de l’archive ZIP est un document <code class="language-plaintext highlighter-rouge">.pdf</code> généré, créé à partir du modèle Word et des données d’exemple de la feuille de calcul Excel. Ce document est un exemple de ce que vous pouvez obtenir en utilisant DocuGenerate pour <strong>automatiser votre création de documents</strong>.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/cover-letter-pdf.png" alt="L'exemple de PDF généré"/></p> <h2 id="utiliser-le-modele">Utiliser le Modèle pour Générer des Documents PDF</h2> <p>Après vous être familiarisé avec les différents fichiers, l’étape suivante consiste à les utiliser pour générer des documents. Vous pouvez modifier le modèle si vous le souhaitez, ou l’utiliser tel quel pour démarrer rapidement. La première étape consiste à téléverser le document Word dans l’application pour <a href="https://www.docugenerate.com/fr/aide/articles/comment-creer-un-nouveau-modele/">créer un nouveau modèle</a>. Une fois cela fait, vous devriez voir quelque chose comme ceci :</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/new-template-docx.png" alt="Créer le nouveau modèle"/></p> <p>Vous pouvez utiliser soit les données JSON, soit la feuille de calcul Excel pour fournir les données de génération des documents. Pour la première option, <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-de-donnees-json/">en utilisant le JSON</a>, ouvrez le fichier <code class="language-plaintext highlighter-rouge">.json</code> et copiez son contenu dans le presse-papiers. Collez ensuite les données JSON copiées dans la zone de texte dédiée et poursuivez les étapes du formulaire jusqu’à la confirmation de génération des documents.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/new-document-json.png" alt="Nouveau document à partir de données JSON"/></p> <p>Pour la seconde option, <a href="https://www.docugenerate.com/fr/aide/articles/generer-des-documents-a-partir-d-un-fichier-excel-ou-csv/">en utilisant Excel</a>, vous devrez téléverser le fichier <code class="language-plaintext highlighter-rouge">.xlsx</code> dans la zone indiquant <em>Sélectionnez ou déposez un fichier .xlsx, .xls, .ods, .csv ou .tsv</em>. Vous pouvez prévisualiser les données Excel et sélectionner les lignes à utiliser pour la génération des documents en cliquant sur celles-ci. Veuillez noter que par défaut, toutes les lignes seront utilisées pour la génération des documents.</p> <p><img src="https://www.docugenerate.com/assets/posts/001-use-the-template-library/new-document-excel.png" alt="Nouveau document à partir de données Excel"/></p> <p>Après avoir affiné les <a href="https://www.docugenerate.com/fr/produit/#options-de-fusion">options de fusion</a> en spécifiant le <a href="https://www.docugenerate.com/fr/aide/articles/selectionner-le-format-d-export-de-fusion/">format d’export</a> et d’autres options, tout est prêt pour générer les lettres de motivation en masse. Vous pouvez voir ci-dessous un exemple du PDF généré à partir du modèle prêt à l’emploi et des données Excel d’exemple :</p> <object data="/assets/posts/001-use-the-template-library/Cover Letter.pdf" type="application/pdf" class="inline-pdf-blog"></object> <p>Maintenant que vous avez vu comment utiliser le modèle <a href="https://www.docugenerate.com/assets/templates/letters/cover/Cover Letter.zip">Cover Letter</a>, vous pouvez essayer les autres modèles de la bibliothèque et commencer à générer des documents en toute simplicité.</p> <h2 id="conclusion">Conclusion</h2> <p>En conclusion, la Bibliothèque de Modèles de DocuGenerate offre un large choix de modèles personnalisables qui vous permettent de générer facilement et efficacement des documents de haute qualité. En utilisant les modèles disponibles dans la bibliothèque, vous pouvez économiser un temps et des ressources précieux, sans avoir besoin de compétences avancées en design ou en mise en forme.</p> <p>Que vous ayez besoin de générer des factures, des lettres, des contrats, des certificats ou d’autres documents, la Bibliothèque de Modèles a ce qu’il vous faut. Avec des exemples de modèles organisés par catégorie, vous pouvez facilement trouver le modèle adapté à vos besoins, et le personnaliser selon vos exigences spécifiques.</p> <h3 id="ressources">Ressources</h3> <ul> <li>L’archive <a href="https://www.docugenerate.com/assets/templates/letters/cover/Cover Letter.zip">Cover Letter</a> ZIP contenant les différents fichiers du modèle.</li> <li>Les <a href="https://www.docugenerate.com/assets/posts/001-use-the-template-library/Cover Letter.pdf" target="_blank">PDF de Lettres</a> générés en masse dans cet article.</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[Notre Bibliothèque de Modèles inclut des exemples de modèles que vous pouvez utiliser pour démarrer immédiatement avec DocuGenerate, sans avoir à créer les vôtres. Ces modèles sont organisés par catégorie et peuvent être facilement personnalisés selon vos besoins spécifiques.]]></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>