Automatisation Google Sheets avec n8n : suivi des changements
Ce workflow n8n a pour objectif de surveiller les changements sur une page web et d'enregistrer ces modifications dans Google Sheets. Il est particulièrement utile pour les entreprises qui souhaitent suivre l'évolution de leurs contenus en ligne, comme les prix de produits ou les mises à jour de contenu. Grâce à cette automatisation n8n, les utilisateurs peuvent recevoir des notifications par email lorsqu'un changement est détecté, ce qui leur permet de réagir rapidement aux évolutions du marché. Le workflow commence par un déclencheur planifié qui active le processus à intervalles réguliers. Ensuite, il utilise un nœud HTTP pour récupérer le contenu de la page web cible. Après cela, le contenu est analysé pour en extraire les informations pertinentes. Un hachage est généré pour détecter les changements, et ces modifications sont comparées aux enregistrements précédents. Si des changements sont détectés, une notification est envoyée par email et les nouvelles informations sont enregistrées dans Google Sheets. Ce processus permet non seulement de garder une trace des modifications, mais aussi d'optimiser la gestion des informations en centralisant les données dans un tableau. En fin de compte, cette automatisation offre une valeur ajoutée significative en réduisant le temps passé à surveiller manuellement les changements et en garantissant que les informations restent à jour.
Workflow n8n Google Sheets, suivi des changements, email : 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, suivi des changements, email : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"meta": {
"instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1083afcb-1257-45a3-b331-d93fb8769548",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-840,
0
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "c3ec0759-a3d1-4866-978a-bfe4f49ee81d",
"name": "Get Hash of Contents",
"type": "n8n-nodes-base.crypto",
"position": [
380,
0
],
"parameters": {
"value": "={{ $json.data }}",
"dataPropertyName": "hash"
},
"typeVersion": 1
},
{
"id": "4ad92ad3-6f99-43a5-9a61-374adb3b28f7",
"name": "Notify of Change",
"type": "n8n-nodes-base.gmail",
"position": [
1220,
0
],
"webhookId": "cc4cbee1-ad57-48fb-810a-b21880357ab0",
"parameters": {
"sendTo": "jim@example.com",
"message": "=site: {{ $('Variables').first().json.url }}\ndate: {{ $now.toISO() }}\nhash: {{ $json.hash }}\ncontents: {{ $json.gdrive }}",
"options": {},
"subject": "=Change detected for {{ $('Variables').first().json.url }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "Sf5Gfl9NiFTNXFWb",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "9385242a-86b1-4624-ada9-949851b68054",
"name": "Markdown",
"type": "n8n-nodes-base.markdown",
"position": [
200,
0
],
"parameters": {
"html": "={{ $json.content.trim() }}",
"options": {}
},
"typeVersion": 1
},
{
"id": "663b6ba2-cbf9-44ea-a062-f88ccb0640c1",
"name": "Variables",
"type": "n8n-nodes-base.set",
"position": [
-460,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "fa706ed3-7425-4f0e-9590-d9478b4e6692",
"name": "url",
"type": "string",
"value": "https://x.com/en/tos"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "2ef69fff-4d7a-439a-b317-ea5fa3ce7869",
"name": "Only New Hashes",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
560,
0
],
"parameters": {
"options": {
"historySize": 1
},
"operation": "removeItemsSeenInPreviousExecutions",
"dedupeValue": "={{ $json.hash }}"
},
"typeVersion": 2
},
{
"id": "93e13d80-a26f-408f-be4e-b582ab9fd9bd",
"name": "Log Record",
"type": "n8n-nodes-base.googleSheets",
"position": [
1040,
0
],
"parameters": {
"columns": {
"value": {
"hash": "={{ $('Get Hash of Contents').first().json.hash }}",
"gdrive": "=https://drive.google.com/file/d/{{ $json.id }}/view?usp=sharing",
"website": "={{ $('Variables').first().json.url }}",
"date of change": "={{ $now.toISO() }}"
},
"schema": [
{
"id": "website",
"type": "string",
"display": true,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "hash",
"type": "string",
"display": true,
"required": false,
"displayName": "hash",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "date of change",
"type": "string",
"display": true,
"required": false,
"displayName": "date of change",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "gdrive",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "gdrive",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1K13OBMicH-ebhvJRYo4sHiOuHd1KIX2jiFxBLWy2UOk/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1K13OBMicH-ebhvJRYo4sHiOuHd1KIX2jiFxBLWy2UOk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1K13OBMicH-ebhvJRYo4sHiOuHd1KIX2jiFxBLWy2UOk/edit?usp=drivesdk",
"cachedResultName": "86. Webpage Changes Tracker"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "XHvC7jIRR8A2TlUl",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "dea15963-61de-4371-b716-7683e0e703a9",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-540,
-160
],
"parameters": {
"color": 7,
"width": 620,
"height": 380,
"content": "## 1. Fetch a Webpage Contents\n[Read more about the HTTP request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest)"
},
"typeVersion": 1
},
{
"id": "bcb1c0b1-fc77-4417-a9c0-6299ce8ca33e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
100,
-160
],
"parameters": {
"color": 7,
"width": 640,
"height": 400,
"content": "## 2. Use Hashing to Detect Changes\n[Learn more about the cryptography node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.crypto/)"
},
"typeVersion": 1
},
{
"id": "eda51de6-80a2-42b1-83ba-66c551911c45",
"name": "Fetch Webpage",
"type": "n8n-nodes-base.httpRequest",
"position": [
-280,
0
],
"parameters": {
"url": "={{ $json.url }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8aa998f1-1558-4b54-a95a-7be9360a819a",
"name": "Extract Contents",
"type": "n8n-nodes-base.html",
"position": [
-100,
0
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "content",
"cssSelector": ".ct07",
"returnValue": "html"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "ecb60054-563c-4c0b-949c-abdcd3896f6b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
-160
],
"parameters": {
"color": 7,
"width": 660,
"height": 400,
"content": "## 3. Notify when Changes Occur\n[Read more about the Gmail node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail)\n"
},
"typeVersion": 1
},
{
"id": "30774606-5e63-4d73-9894-ba14d5b1fc46",
"name": "Take a Snapshot",
"type": "n8n-nodes-base.googleDrive",
"position": [
860,
0
],
"parameters": {
"name": "={{\n$('Variables').item.json.url\n .extractDomain()\n .replace('.','_')\n + $json.hash\n + '.md'\n}}",
"content": "={{ $json.data }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1BbP5HRnjNkCvcDRFFg1bm0sNYBGZM6AU",
"cachedResultUrl": "https://drive.google.com/drive/folders/1BbP5HRnjNkCvcDRFFg1bm0sNYBGZM6AU",
"cachedResultName": "86. Monitor Webpage Changes"
},
"operation": "createFromText"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "yOwz41gMQclOadgu",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "9ae563ea-49a3-4dcc-9190-8746650018aa",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
-760
],
"parameters": {
"width": 440,
"height": 980,
"content": "## Try it out\n### This n8n template can monitor and detect changes to a webpage's contents and notify you only when a change occurs.\n\nGreat to keep an eye on and track publicly available documents such as company TOS, government policy or competitor pages.\n\n### How it works\n* A scheduled trigger is used so we can run everyday to automate this process.\n* A website page is then fetched with the HTTP request node and the contents we want to track are extracted using the HTML node.\n* To detect changes, we generate a hash on the contents with the cryptography node and compare it with previously seen hashes using the \"remove duplicates\" node. If the hash was seen before, the workflow stops here.\n* Finally, when new changes are detected a copy of the contents are uploaded to Google Drive and a logged into a Google sheet. A notification email can also be sent if action is required.\n\n### How to use\n* Update the URL you want to track in the node named \"variables\" and ensure the HTML node has updated selectors to get the content you want.\n* Ensure the timezone is set correctly when using the Scheduled Trigger node.\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Markdown": {
"main": [
[
{
"node": "Get Hash of Contents",
"type": "main",
"index": 0
}
]
]
},
"Variables": {
"main": [
[
{
"node": "Fetch Webpage",
"type": "main",
"index": 0
}
]
]
},
"Log Record": {
"main": [
[
{
"node": "Notify of Change",
"type": "main",
"index": 0
}
]
]
},
"Fetch Webpage": {
"main": [
[
{
"node": "Extract Contents",
"type": "main",
"index": 0
}
]
]
},
"Only New Hashes": {
"main": [
[
{
"node": "Take a Snapshot",
"type": "main",
"index": 0
}
]
]
},
"Take a Snapshot": {
"main": [
[
{
"node": "Log Record",
"type": "main",
"index": 0
}
]
]
},
"Extract Contents": {
"main": [
[
{
"node": "Markdown",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Variables",
"type": "main",
"index": 0
}
]
]
},
"Get Hash of Contents": {
"main": [
[
{
"node": "Only New Hashes",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Google Sheets, suivi des changements, email : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes marketing, aux responsables de contenu et aux entreprises qui souhaitent automatiser la surveillance des modifications sur leurs sites web. Il est idéal pour les utilisateurs ayant un niveau technique intermédiaire et qui utilisent déjà des outils comme Google Sheets pour la gestion de données.
Workflow n8n Google Sheets, suivi des changements, email : problème résolu
Ce workflow résout le problème de la surveillance manuelle des changements sur des pages web, qui peut être chronophage et sujet à des erreurs. En automatisant ce processus, les utilisateurs éliminent les frustrations liées à la vérification constante des mises à jour. Ils bénéficient ainsi d'une notification rapide en cas de changement, ce qui leur permet de prendre des décisions éclairées et de réagir rapidement aux évolutions du marché.
Workflow n8n Google Sheets, suivi des changements, email : étapes du workflow
Étape 1 : Le workflow est déclenché par un événement planifié qui active le processus à intervalles réguliers.
- Étape 1 : Une requête HTTP est effectuée pour récupérer le contenu de la page web cible.
- Étape 2 : Le contenu est analysé pour en extraire les informations pertinentes.
- Étape 3 : Un hachage est généré à partir du contenu pour détecter les changements.
- Étape 4 : Les nouvelles informations sont comparées aux enregistrements précédents pour identifier les modifications.
- Étape 5 : Si des changements sont détectés, une notification par email est envoyée.
- Étape 6 : Les nouvelles informations sont enregistrées dans Google Sheets pour un suivi centralisé.
Workflow n8n Google Sheets, suivi des changements, email : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier l'URL de la page web à surveiller dans le nœud HTTP. Vous pouvez également ajuster les paramètres du déclencheur planifié pour définir la fréquence de vérification. Dans le nœud d'email, vous pouvez personnaliser le message et le sujet de la notification. Enfin, assurez-vous que le document Google Sheets est correctement configuré pour recevoir les nouvelles données, en vérifiant les colonnes et le format des informations enregistrées.