Automatisation Google Sheets avec n8n : envoi de certificats PDF
Ce workflow n8n a pour objectif d'automatiser l'envoi de certificats PDF à partir de données collectées via Google Sheets. Dans un contexte où les entreprises doivent souvent délivrer des certificats à leurs clients ou employés, cette automatisation permet de gagner un temps précieux et d'éviter les erreurs manuelles. Par exemple, une entreprise de formation peut utiliser ce workflow pour envoyer automatiquement des certificats de réussite à ses participants après la fin d'un cours. Le processus commence par un déclencheur Google Sheets qui détecte les nouvelles entrées dans une feuille de calcul spécifique. Ensuite, les données essentielles sont extraites et analysées. En fonction des résultats, le workflow peut inclure des conditions pour vérifier si le score atteint un certain seuil. Si les critères sont remplis, le workflow copie un modèle de certificat depuis Google Drive, remplace le texte par les informations pertinentes, et convertit le document en PDF. Enfin, le certificat est envoyé directement à l'adresse email de l'utilisateur via Gmail. Cette automatisation n8n améliore non seulement l'efficacité opérationnelle, mais elle renforce également la satisfaction client en assurant une communication rapide et précise.
Workflow n8n Google Sheets, certificats, envoi d'emails : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Google Sheets, certificats, envoi d'emails : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"id": "2qIFnWXdHJJs4oBk",
"meta": {
"instanceId": "6c586999cefcd4ec9b2ab69e3f6b7974d96831b39a984af15104588e20b2737a",
"templateCredsSetupCompleted": true
},
"name": "DSP Certificate w/ Google Forms",
"tags": [],
"nodes": [
{
"id": "1f3a1bb2-1e5b-4696-aafc-5b3267d76cbf",
"name": "Google Sheets Trigger",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-100,
-20
],
"parameters": {
"event": "rowAdded",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1715309269,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1WqhSc4sx6GMupZgFo7xKoegXVo3fJVhqrovCQPa1esM/edit#gid=1715309269",
"cachedResultName": "Form Responses 1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "1WqhSc4sx6GMupZgFo7xKoegXVo3fJVhqrovCQPa1esM"
}
},
"credentials": {
"googleSheetsTriggerOAuth2Api": {
"id": "LPj2gg4OdDdyokS7",
"name": "Google Sheets (jkp@kajonkietsuksa.ac.th)"
}
},
"typeVersion": 1
},
{
"id": "385f6b0f-2db0-4a44-816c-c6f6c8ccb493",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
620,
180
],
"parameters": {},
"typeVersion": 1
},
{
"id": "58a77733-99f1-4884-b955-0a6f6c983cfc",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-340
],
"parameters": {
"width": 300,
"height": 180,
"content": "### 1) Start here\n* Create a Google Form and then enable quiz mode.\n* Publish it, submit 1 text data.\n* In response section, you'll see \"Link to Google Sheet\" option.\n* Press, and it will create a new sheet."
},
"typeVersion": 1
},
{
"id": "aeef0ccc-3031-40d0-a627-5f21ade148b1",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-140
],
"parameters": {
"width": 180,
"content": "### 4) Passing Score\n* Adjust your passing score here"
},
"typeVersion": 1
},
{
"id": "c21dbdb5-ed87-4aac-bbc7-338aaed830ba",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-100
],
"parameters": {
"height": 180,
"content": "### 2) Trigger Node\n* Replace your Google Sheet id's in this node."
},
"typeVersion": 1
},
{
"id": "d2b15c40-d38a-4bec-97c8-d4b35e3a69fa",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
40,
-100
],
"parameters": {
"width": 260,
"height": 180,
"content": "### 3) Extract Node\n* Select the data we want to use to proceed.\n* For this case, i'll select only Name, Email, Score (Because this is only what we need)"
},
"typeVersion": 1
},
{
"id": "79957ca7-ac5f-4f5b-b921-ddec3cb9f88b",
"name": "Extract essential data",
"type": "n8n-nodes-base.set",
"position": [
120,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7cdc9108-ab77-4904-a74b-29677b06cc81",
"name": "respondentName",
"type": "string",
"value": "={{ $json['ชื่อ (เป็นภาษาอังกฤษ)'] }}"
},
{
"id": "1800b27a-6cbc-4b82-a17a-87d7d1e7a66e",
"name": "respondentEmail",
"type": "string",
"value": "={{ $json['Email Address'] }}"
},
{
"id": "36cb99ca-7c98-41b5-a2a4-a03ac8d83189",
"name": "respondentScore",
"type": "number",
"value": "={{ $json.Score }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "912838e0-6b35-47a1-8935-dc90b4c59ecb",
"name": "Score Checker",
"type": "n8n-nodes-base.if",
"position": [
360,
-20
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "286a95ee-1edc-4310-af22-d161e1f04a27",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.respondentScore }}",
"rightValue": 3
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9c9e308f-ce90-425d-aafc-08711cbf95df",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
120
],
"parameters": {
"width": 260,
"content": "### 4.1) Score < passing criteria"
},
"typeVersion": 1
},
{
"id": "f794c7a3-47af-4166-9504-8265837f61e6",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
-340
],
"parameters": {
"width": 260,
"height": 200,
"content": "### 4.2) Score > passing criteria\n* Create new Google Slide \n* Decorate it as you desired (This will be certificate's template)\n* Use [ name ] to be a placeholder for user's name\n* Replace it with your Google Slide's id"
},
"typeVersion": 1
},
{
"id": "9a2954e3-59fd-4472-931f-9eeb362e627b",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
820,
-400
],
"parameters": {
"width": 260,
"content": "### 5) Replace text\n* This node will replace [ name ] with user's input name.\n"
},
"typeVersion": 1
},
{
"id": "baa88ba8-c1c6-40d7-b4c0-1e70397d7e68",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
940,
-80
],
"parameters": {
"width": 260,
"content": "### 6) To PDF\n* Change file name as you desire."
},
"typeVersion": 1
},
{
"id": "0d4b0fad-046b-4810-9d21-2c30135df6b0",
"name": "Copy from your template",
"type": "n8n-nodes-base.googleDrive",
"position": [
620,
-160
],
"parameters": {
"name": "={{ $json.respondentName }}'s Certificate",
"fileId": {
"__rl": true,
"mode": "id",
"value": "1J8PxjjspVs7075EfIX6pnNU-TmqtzVV9ymeHoKpbwP0"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1xMJU-6eiXL53NDgjic2SXecTo6GeUJ-o",
"cachedResultUrl": "https://drive.google.com/drive/folders/1xMJU-6eiXL53NDgjic2SXecTo6GeUJ-o",
"cachedResultName": "KS Google Form -> Certificate System"
},
"operation": "copy",
"sameFolder": false
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2k4spLmVESgxckkx",
"name": "jkp@kajonkietsuksa.ac.th"
}
},
"typeVersion": 3
},
{
"id": "30407819-7998-4ba1-b2a0-bde7ba91747c",
"name": "Replace text",
"type": "n8n-nodes-base.googleSlides",
"position": [
880,
-300
],
"parameters": {
"textUi": {
"textValues": [
{
"text": "[ NAME ]",
"replaceText": "={{ $('Score Checker').item.json.respondentName }}",
"pageObjectIds": [
"p"
]
}
]
},
"options": {},
"operation": "replaceText",
"presentationId": "={{ $json.id }}"
},
"credentials": {
"googleSlidesOAuth2Api": {
"id": "1oyCPsdPLod92Wlp",
"name": "Google Slides account"
}
},
"typeVersion": 2
},
{
"id": "62f1ab2e-0471-480b-9a90-587a9ffb18d6",
"name": "Convert to PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
960,
0
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.presentationId }}"
},
"options": {
"fileName": "={{ $('Score Checker').item.json.respondentName }}'s Certificate",
"googleFileConversion": {
"conversion": {
"slidesToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "2k4spLmVESgxckkx",
"name": "jkp@kajonkietsuksa.ac.th"
}
},
"typeVersion": 3,
"alwaysOutputData": false
},
{
"id": "08516c84-5257-4875-8c2f-9b6a4428bfad",
"name": "Send to user's email",
"type": "n8n-nodes-base.gmail",
"position": [
1360,
0
],
"webhookId": "f204ef80-937c-4f7b-8eb5-0699eb13c16a",
"parameters": {
"sendTo": "={{ $('Score Checker').item.json.respondentEmail }}",
"message": "=Congratulations on passing the quiz! Attached is your certificate.",
"options": {
"attachmentsUi": {
"attachmentsBinary": [
{}
]
},
"appendAttribution": false
},
"subject": "Here's your certificate!!"
},
"credentials": {
"gmailOAuth2": {
"id": "qogKxJFIxmrd6rcB",
"name": "Gmail account (jkp@kajonkietsuksa.ac.th)"
}
},
"typeVersion": 2.1
},
{
"id": "ae4cd0de-e06d-4200-af17-f6e9953ccba7",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1260,
-100
],
"parameters": {
"width": 260,
"content": "### 7) Send email\n* Send to user's email\n* Customize your message here.\n"
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "54bf009a-3f95-446d-95a6-825496592a6f",
"connections": {
"Replace text": {
"main": [
[
{
"node": "Convert to PDF",
"type": "main",
"index": 0
}
]
]
},
"Score Checker": {
"main": [
[
{
"node": "Copy from your template",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Convert to PDF": {
"main": [
[
{
"node": "Send to user's email",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Trigger": {
"main": [
[
{
"node": "Extract essential data",
"type": "main",
"index": 0
}
]
]
},
"Extract essential data": {
"main": [
[
{
"node": "Score Checker",
"type": "main",
"index": 0
}
]
]
},
"Copy from your template": {
"main": [
[
{
"node": "Replace text",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Google Sheets, certificats, envoi d'emails : pour qui est ce workflow ?
Ce workflow s'adresse aux entreprises de formation, aux organismes de certification, et à toute organisation souhaitant automatiser l'envoi de documents personnalisés. Les utilisateurs peuvent être des responsables administratifs ou des équipes techniques ayant un niveau technique intermédiaire.
Workflow n8n Google Sheets, certificats, envoi d'emails : problème résolu
Ce workflow résout le problème de l'envoi manuel de certificats, qui peut être long et sujet à des erreurs. En automatisant ce processus, les entreprises réduisent le risque d'erreurs humaines et gagnent un temps précieux. Les utilisateurs peuvent ainsi se concentrer sur des tâches à plus forte valeur ajoutée, tout en assurant une communication rapide et fiable avec leurs clients.
Workflow n8n Google Sheets, certificats, envoi d'emails : étapes du workflow
Étape 1 : Le workflow est déclenché par une nouvelle entrée dans Google Sheets.
- Étape 1 : Les données essentielles sont extraites pour être traitées.
- Étape 2 : Un contrôle de score est effectué pour déterminer si le certificat doit être délivré.
- Étape 3 : Si les conditions sont remplies, un modèle de certificat est copié depuis Google Drive.
- Étape 4 : Le texte du certificat est remplacé par les informations pertinentes.
- Étape 5 : Le document est converti en PDF.
- Étape 6 : Le certificat PDF est envoyé à l'utilisateur par email via Gmail.
Workflow n8n Google Sheets, certificats, envoi d'emails : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'ID de la feuille Google Sheets pour pointer vers votre document spécifique. Assurez-vous également de personnaliser le modèle de certificat dans Google Drive en fonction de vos besoins. Vous pouvez ajuster les conditions dans le nœud 'Score Checker' pour définir vos propres critères de réussite. Enfin, adaptez le contenu de l'email envoyé via Gmail pour qu'il corresponde à votre ton et à votre style de communication.