Automatisation Google Sheets avec n8n : gestion des messages clients
Ce workflow n8n a pour objectif d'automatiser la gestion des messages clients à partir de Google Sheets. Dans un contexte où la communication rapide et efficace avec les clients est cruciale, ce processus permet de récupérer les messages, de les traiter et d'envoyer des réponses par email. Les entreprises, notamment celles qui gèrent un volume important de requêtes clients, peuvent tirer parti de cette automatisation n8n pour améliorer leur réactivité et leur efficacité opérationnelle. Le workflow débute par un déclencheur programmé (Schedule Trigger) qui active le processus à intervalles réguliers. Ensuite, il utilise le nœud 'Retrieve Customer Messages Data' pour extraire les messages clients d'une feuille Google Sheets spécifique. Une fois les données récupérées, le nœud 'Filter Status (Waiting for sending)' permet de filtrer les messages qui nécessitent une réponse. Après cette étape, les données sont préparées à l'aide du nœud 'Set data', puis fusionnées avec d'autres informations pertinentes via le nœud 'Merge fields'. Enfin, le workflow envoie un email de réponse grâce au nœud 'Send a message (Gmail)', ce qui permet de tenir les clients informés rapidement. Ce type d'automatisation offre des bénéfices significatifs pour les entreprises, notamment en réduisant le temps de réponse aux clients, en minimisant les erreurs humaines et en optimisant la gestion des communications. En mettant en place ce workflow n8n, les entreprises peuvent améliorer leur service client tout en libérant du temps pour d'autres tâches stratégiques. Tags clés : Google Sheets, automatisation, workflow.
Vue d'ensemble du workflow n8n
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Détail des nœuds du workflow n8n
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"meta": {
"instanceId": "257476b1ef58bf3cb6a46e65fac7ee34a53a5e1a8492d5c6e4da5f87c9b82833",
"templateId": "2088"
},
"nodes": [
{
"id": "0e4c65ce-95e9-4a32-bc5c-0461cb339764",
"name": "Filter Status (Waiting for sending)",
"type": "n8n-nodes-base.filter",
"position": [
1670,
1110
],
"parameters": {
"options": {
"looseTypeValidation": true
},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "401b79a0-a079-4ea0-805b-a963d9206031",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.Status }}",
"rightValue": "Waiting for sending"
},
{
"id": "74ec18c7-e4cc-4d82-ba05-0ec4781cbb9f",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Title }}",
"rightValue": ""
},
{
"id": "6e293a16-48cd-40bb-9882-09b456a97d58",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Subject }}",
"rightValue": ""
},
{
"id": "a02d2518-e979-4a17-ab00-dda6723d9945",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Email }}",
"rightValue": ""
},
{
"id": "bea4e49e-cf8a-4f05-bd6f-bdce0c5d8533",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Name }}",
"rightValue": ""
},
{
"id": "e33eb064-34c6-4dea-b454-10f4fb7fe630",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.Date }}",
"rightValue": ""
},
{
"id": "1abe48e3-ba4d-4318-900d-fd58097d55ec",
"operator": {
"type": "dateTime",
"operation": "equals"
},
"leftValue": "={{ DateTime.fromFormat($json[\"Date\"], 'yyyy/MM/dd').startOf('day')}}",
"rightValue": "={{ $now.startOf('day')}}"
}
]
}
},
"typeVersion": 2
},
{
"id": "27f33448-a016-4ac8-aea3-2ca267fb1628",
"name": "Set data",
"type": "n8n-nodes-base.set",
"position": [
2290,
1090
],
"parameters": {
"fields": {
"values": [
{
"name": "email",
"stringValue": "={{ $json.Email }}"
},
{
"name": "name",
"stringValue": "={{ $json.Name }}"
},
{
"name": "ID",
"stringValue": "={{ $json.ID }}"
}
]
},
"include": "selected",
"options": {}
},
"typeVersion": 3.2
},
{
"id": "badf1d45-21e0-40a5-bcc4-c434f43c04d4",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
390,
250
],
"parameters": {
"width": 922.8914139860617,
"height": 1171.2381808131183,
"content": "# Node Descriptions\n\n## Retrieve Customer Messages Data (Google Sheets Node ):\n**Purpose and Use Cases:**\nThe primary purpose of this node is to retrieve data from a Google Sheets document that contains information about messages to customers. This could be used in various scenarios, such as:\n\n- Compiling a list of customer contacts for outreach campaigns.\n- Gathering feedback or responses stored in a spreadsheet.\n- Automating the process of updating customer records or tracking communications.\n\n\n## Filter Items by Current Date Node:\n- **Purpose:** Filters input items based on comparison with the current date.\n- **Parameters:**\n - **JavaScript Code:** Compares item dates with the current date for filtering.\n- **Functionality:** Ensures only items with dates matching the current date are passed along.\n\n ### Note : The date format should be in this form (year/month/day) to be accepted.\n\n## Gmail Node:\n- **Purpose:** Likely sends emails using Gmail based on filtered items.\n- **Parameters:**\n - **Recipient:** Extracted from input data.\n - **Subject:** Extracted from input data.\n - **Email Content:** Extracted from input data.\n\n## Update Message Status(Google Sheets Node ):\n- **Purpose:** Updates specific columns in the Google Sheets document.\n- **Parameters:**\n - **Operation:** Update mode.\n - **Columns:** Defines which columns to update with values from input data.\n\n## Filter Status (Waiting for sending) Node:\n- **Purpose:** Filters items based on specific status criteria.\n- **Parameters:**\n - **Conditions:** Filters based on status, title, subject, email, name, and date.\n\n## Set data Node:\n- **Purpose:** Sets specified fields with extracted values from input data.\n\n## Merge feild Node:\n- **Purpose:** Merges fields from different sources based on position.\n\nFeel free to utilize these detailed descriptions to understand and enhance the workflow further.\n"
},
"typeVersion": 1
},
{
"id": "0f1cd01b-4cf0-4998-9c51-02c2c9c4aa2b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1330,
870
],
"parameters": {
"width": 1386.7301333853884,
"height": 539.317352764935,
"content": "# The Workflow"
},
"typeVersion": 1
},
{
"id": "421b47fd-4707-41ec-97e4-7256be22b75d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
380,
240
],
"parameters": {
"color": 7,
"width": 2358.9018586668417,
"height": 1194.0044652590357,
"content": "\n"
},
"typeVersion": 1
},
{
"id": "dfb3d998-14fc-4d2a-af9e-19c7da8060f9",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1330,
255
],
"parameters": {
"width": 342.9710297084147,
"height": 601.2740375761717,
"content": "## Copy this template to get started :\n- [Google Sheets](https://docs.google.com/spreadsheets/d/1efCCzfeUX0AETz2wsULQN90OBCOKK-gBoDaptzcBHdE/edit?usp=sharing)\n\n## Workflow Nodes Documentation:\n\n1. [Schedule Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/)\n2. [Filter Items by Current Date](https://docs.n8n.io/nodes/n8n-nodes-base.code.html)\n3. [Gmail](https://docs.n8n.io/nodes/n8n-nodes-base.gmail.html)\n4. [Google Sheets](https://docs.n8n.io/nodes/n8n-nodes-base.googleSheets.html)\n5. [Filter Status (Waiting for sending)](https://docs.n8n.io/nodes/n8n-nodes-base.filter.html)\n6. [Set data](https://docs.n8n.io/nodes/n8n-nodes-base.set.html)\n7. [Merge feild](https://docs.n8n.io/nodes/n8n-nodes-base.merge.html)\n"
},
"typeVersion": 1
},
{
"id": "4ed5a195-fd49-465e-9a14-fa64cd96056b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1690,
250
],
"parameters": {
"width": 1024.157503378047,
"height": 602.8437691253422,
"content": "## Workflow Overview:\n\nThe workflow begins with the \"Google Sheets Trigger\" node, which monitors a specified Google Sheet for new row additions. Upon detection of a new row, the workflow progresses to the \"Filter Status (Waiting for sending)\" node, where items are filtered based on specific conditions.\n\nSubsequently, the workflow moves to the \"Filter Items by Current Date\" node, which filters items based on the current date. Items matching the current date are then processed further.\n\nThe filtered items are then forwarded to the \"Gmail\" node, where personalized emails are composed and sent to recipients based on the Google Sheet data. Finally, the workflow updates the Google Sheet using the \"Google Sheets\" node with the status of the sent emails and other relevant information."
},
"typeVersion": 1
},
{
"id": "d156f0da-53e7-499b-b652-5ca0c3c9e237",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1350,
1110
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 1
}
]
}
},
"typeVersion": 1.1
},
{
"id": "e398e809-b00f-4edb-af94-d236cfb80703",
"name": "Retrieve Customer Messages Data",
"type": "n8n-nodes-base.googleSheets",
"position": [
1510,
1110
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/126qQdkEWt_4Vkxvu6G80rBeFdIp_a8ISMz-898fa2D4/edit#gid=0",
"cachedResultName": "Page"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "126qQdkEWt_4Vkxvu6G80rBeFdIp_a8ISMz-898fa2D4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/126qQdkEWt_4Vkxvu6G80rBeFdIp_a8ISMz-898fa2D4/edit?usp=drivesdk",
"cachedResultName": "Copy of Sending Messages to Customers"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "9",
"name": "Nik's Google"
}
},
"typeVersion": 4.2
},
{
"id": "6de55876-3924-4fdc-aae7-b901a2ce72be",
"name": "Update Message Status",
"type": "n8n-nodes-base.googleSheets",
"position": [
2490,
1090
],
"parameters": {
"columns": {
"value": {
"ID": "={{ $json.ID }}",
"Status": "Sent successfully"
},
"schema": [
{
"id": "ID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Name",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Subject",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Subject",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"ID"
]
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/126qQdkEWt_4Vkxvu6G80rBeFdIp_a8ISMz-898fa2D4/edit#gid=0",
"cachedResultName": "Page"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "126qQdkEWt_4Vkxvu6G80rBeFdIp_a8ISMz-898fa2D4",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/126qQdkEWt_4Vkxvu6G80rBeFdIp_a8ISMz-898fa2D4/edit?usp=drivesdk",
"cachedResultName": "Copy of Sending Messages to Customers"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "9",
"name": "Nik's Google"
}
},
"typeVersion": 4.2
},
{
"id": "0401bfe7-de72-407a-a7f7-70b7da52e9c9",
"name": "Send a message (Gmail)",
"type": "n8n-nodes-base.gmail",
"position": [
1900,
980
],
"parameters": {
"sendTo": "={{ $json.Email }}",
"message": "={{ $json.Subject }}",
"options": {},
"subject": "={{ $json.Title }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "3",
"name": "Gmail account"
}
},
"notesInFlow": false,
"typeVersion": 2.1,
"alwaysOutputData": false
},
{
"id": "94ff4e81-41c6-479e-bcb5-c9786935a954",
"name": "Merge fields",
"type": "n8n-nodes-base.merge",
"position": [
2110,
1090
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "mergeByPosition"
},
"typeVersion": 2.1
}
],
"pinData": {},
"connections": {
"Set data": {
"main": [
[
{
"node": "Update Message Status",
"type": "main",
"index": 0
}
]
]
},
"Merge fields": {
"main": [
[
{
"node": "Set data",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Retrieve Customer Messages Data",
"type": "main",
"index": 0
}
]
]
},
"Send a message (Gmail)": {
"main": [
[
{
"node": "Merge fields",
"type": "main",
"index": 0
}
]
]
},
"Retrieve Customer Messages Data": {
"main": [
[
{
"node": "Filter Status (Waiting for sending)",
"type": "main",
"index": 0
}
]
]
},
"Filter Status (Waiting for sending)": {
"main": [
[
{
"node": "Merge fields",
"type": "main",
"index": 1
},
{
"node": "Send a message (Gmail)",
"type": "main",
"index": 0
}
]
]
}
}
}Pour qui est ce workflow ?
Ce workflow s'adresse principalement aux PME et aux équipes de service client qui cherchent à automatiser la gestion des messages entrants. Il est idéal pour les entreprises qui utilisent Google Sheets pour suivre les interactions avec les clients et qui souhaitent améliorer leur efficacité opérationnelle. Un niveau technique intermédiaire est recommandé pour personnaliser ce workflow.
Problème résolu
Ce workflow résout le problème de la lenteur et de l'inefficacité dans la gestion des messages clients. En automatisant le processus de récupération et de réponse aux messages, il élimine les frustrations liées aux délais de réponse, réduit le risque d'erreurs humaines et assure une communication fluide avec les clients. Les utilisateurs peuvent ainsi s'attendre à une amélioration significative de leur réactivité et de leur satisfaction client après la mise en place de cette automatisation.
Étapes du workflow
Étape 1 : Le workflow est déclenché par un nœud de planification (Schedule Trigger) qui active le processus à intervalles réguliers. Étape 2 : Les messages clients sont récupérés depuis Google Sheets grâce au nœud 'Retrieve Customer Messages Data'. Étape 3 : Un filtre est appliqué pour sélectionner uniquement les messages en attente de réponse via le nœud 'Filter Status (Waiting for sending)'. Étape 4 : Les données sont préparées avec le nœud 'Set data' et fusionnées avec d'autres informations nécessaires grâce au nœud 'Merge fields'. Étape 5 : Enfin, un email de réponse est envoyé au client via le nœud 'Send a message (Gmail)', complétant ainsi le cycle de communication.
Guide de personnalisation du workflow n8n
Pour personnaliser ce workflow, vous pouvez modifier le nœud 'Retrieve Customer Messages Data' en spécifiant le nom de la feuille Google Sheets et l'ID du document. Assurez-vous également d'ajuster les paramètres du nœud 'Send a message (Gmail)' pour personnaliser le contenu et le sujet des emails envoyés. Si vous souhaitez intégrer d'autres outils ou services, vous pouvez ajouter des nœuds supplémentaires ou modifier les connexions existantes. Pensez à sécuriser le flux en vérifiant les autorisations d'accès aux données et en surveillant les performances du workflow pour garantir son bon fonctionnement.