Automatisation Notion avec n8n : création de pages à partir d'emails
Ce workflow n8n a pour objectif d'automatiser la création de pages dans Notion à partir d'emails filtrés dans Gmail. Il s'adresse aux équipes qui utilisent Notion pour la gestion de projets et qui souhaitent optimiser leur flux de travail en intégrant les informations reçues par email directement dans leur base de données Notion. Le processus commence par un déclencheur programmé qui active le workflow à intervalles réguliers. Ensuite, le workflow dérive l'heure de la dernière requête pour s'assurer qu'il ne traite que les emails récents. Il utilise le service Gmail pour récupérer les emails d'une étiquette spécifique, puis vérifie si une page correspondante existe déjà dans Notion. Si la page n'existe pas, une nouvelle page est créée avec les informations pertinentes. Si un email a été traité, il est désétiqueté pour éviter des doublons. Ce workflow utilise également des conditions pour gérer les cas où des pages sont déjà présentes ou si des mises à jour sont nécessaires. En intégrant cette automatisation n8n, les utilisateurs gagnent en efficacité, réduisent les risques d'erreurs manuelles et améliorent la gestion de leurs projets en centralisant les informations directement dans Notion.
Workflow n8n Gmail, Notion : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Gmail, Notion : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"meta": {
"instanceId": "a2434c94d549548a685cca39cc4614698e94f527bcea84eefa363f1037ae14cd"
},
"nodes": [
{
"id": "0bacf032-53d6-4ba6-ab71-e01625c49cc4",
"name": "On schedule",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1960,
160
],
"parameters": {
"rule": {
"interval": [
{
"field": "minutes",
"minutesInterval": 1
}
]
}
},
"typeVersion": 1.1
},
{
"id": "2e0d9aef-0a60-4506-9c11-c6c2cccb16ea",
"name": "Derive last request time",
"type": "n8n-nodes-base.dateTime",
"position": [
-1740,
160
],
"parameters": {
"duration": 1,
"timeUnit": "minutes",
"magnitude": "={{ $json.timestamp }}",
"operation": "subtractFromDate",
"outputFieldName": "last_request_time"
},
"typeVersion": 2
},
{
"id": "f726c448-b4c4-4159-8ca5-c94c092127b7",
"name": "Get emails from label and last request time",
"type": "n8n-nodes-base.gmail",
"position": [
-1520,
160
],
"parameters": {
"filters": {
"labelIds": [
"Label_9178764513576607415"
]
},
"operation": "getAll",
"returnAll": true
},
"credentials": {
"gmailOAuth2": {
"id": "31",
"name": "REPLACE ME"
}
},
"typeVersion": 2
},
{
"id": "9b86331f-d33b-4266-ba34-bc0491a0da24",
"name": "Create database page",
"type": "n8n-nodes-base.notion",
"position": [
-620,
60
],
"parameters": {
"title": "={{ $('If database page not found').item.json.Subject }}",
"blockUi": {
"blockValues": [
{
"type": "heading_3",
"textContent": "Snippet"
},
{
"textContent": "={{ $('If database page not found').item.json.snippet }}"
},
{
"text": {
"text": [
{
"text": "See more",
"isLink": true,
"textLink": "=https://mail.google.com/mail/u/{{ $json.emailAddress }}/#all/{{ $('If database page not found').item.json.id }}",
"annotationUi": {}
}
]
},
"richText": true
}
]
},
"options": {
"icon": "https://avatars.githubusercontent.com/u/45487711?s=280&v=4",
"iconType": "file"
},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "e606a7c1-e93d-47fd-8b8d-8000cd6e7522",
"cachedResultUrl": "https://www.notion.so/e606a7c1e93d47fd8b8d8000cd6e7522",
"cachedResultName": "Gmail"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Thread ID|rich_text",
"textContent": "={{ $('If database page not found').item.json.id }}"
},
{
"key": "Email thread|url",
"urlValue": "=https://mail.google.com/mail/u/{{ $json.emailAddress }}/#all/{{ $('If database page not found').item.json.id }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "18",
"name": "[UPDATE ME]"
}
},
"typeVersion": 2
},
{
"id": "d7198578-4c83-4f57-8eba-5b5a9b89195c",
"name": "Try get database page",
"type": "n8n-nodes-base.notion",
"position": [
-1360,
220
],
"parameters": {
"filters": {
"conditions": [
{
"key": "Thread ID|rich_text",
"condition": "equals",
"richTextValue": "={{ $json.id }}"
}
]
},
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "list",
"value": "e606a7c1-e93d-47fd-8b8d-8000cd6e7522",
"cachedResultUrl": "https://www.notion.so/e606a7c1e93d47fd8b8d8000cd6e7522",
"cachedResultName": "My Gmail Tasks"
},
"filterType": "manual"
},
"credentials": {
"notionApi": {
"id": "18",
"name": "[UPDATE ME]"
}
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "f8188ab9-9a80-4aa9-b773-73cd90b8dbd3",
"name": "If checked off",
"type": "n8n-nodes-base.if",
"position": [
-1740,
460
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{ $json.Complete }}",
"value2": true
}
]
}
},
"typeVersion": 1
},
{
"id": "bfcfeeb1-ad8b-47fb-8a09-b58e7b649a25",
"name": "On updated database page",
"type": "n8n-nodes-base.notionTrigger",
"position": [
-1960,
460
],
"parameters": {
"event": "pagedUpdatedInDatabase",
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"databaseId": {
"__rl": true,
"mode": "list",
"value": "e606a7c1-e93d-47fd-8b8d-8000cd6e7522",
"cachedResultUrl": "https://www.notion.so/e606a7c1e93d47fd8b8d8000cd6e7522",
"cachedResultName": "My Gmail Tasks"
}
},
"credentials": {
"notionApi": {
"id": "18",
"name": "[UPDATE ME]"
}
},
"typeVersion": 1
},
{
"id": "dc2c59b8-6e0d-46b3-946a-e48b0461c48f",
"name": "Remove label from target email",
"type": "n8n-nodes-base.gmail",
"position": [
-1520,
460
],
"parameters": {
"labelIds": [
"Label_9178764513576607415"
],
"messageId": "={{ $json['Thread ID'] }}",
"operation": "removeLabels"
},
"credentials": {
"gmailOAuth2": {
"id": "31",
"name": "REPLACE ME"
}
},
"typeVersion": 2
},
{
"id": "0f693c2f-ce89-4a2f-a85f-9230b7bcb94d",
"name": "Not yet checked off, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-1520,
660
],
"parameters": {},
"typeVersion": 1
},
{
"id": "bf792470-fc0a-45a2-b655-df5c977faa97",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
-1220,
100
],
"parameters": {
"mode": "combine",
"options": {},
"joinMode": "enrichInput1",
"mergeByFields": {
"values": [
{
"field1": "id",
"field2": "property_thread_id"
}
]
}
},
"typeVersion": 2.1
},
{
"id": "f910c34c-4c3d-481f-8223-a8aae710dbbd",
"name": "If found, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
-840,
260
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7086cd15-9f2e-40e4-be3b-47d117dde670",
"name": "If database page not found",
"type": "n8n-nodes-base.if",
"position": [
-1060,
160
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.property_thread_id }}",
"operation": "isEmpty"
}
]
}
},
"typeVersion": 1
},
{
"id": "86ce380c-0810-4edb-94e4-fb67b0ca422c",
"name": "Find my email address",
"type": "n8n-nodes-base.httpRequest",
"position": [
-840,
60
],
"parameters": {
"url": "https://gmail.googleapis.com/gmail/v1/users/me/profile",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "gmailOAuth2"
},
"credentials": {
"gmailOAuth2": {
"id": "31",
"name": "REPLACE ME"
}
},
"typeVersion": 4.1
},
{
"id": "f576f785-49e4-4ed2-b83e-400b001b6c3a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2540,
100
],
"parameters": {
"width": 501.0810810810809,
"height": 545.405405405404,
"content": "## Send labeled email to a Notion database\nThis workflow sends the contents of an email to a Notion database. The email must be labeled with a specific label for the workflow to trigger. The email subject will be the title of the Notion page, and a snippet of the email body will be the content of the Notion page. The email link will be added to the Notion page as a property.\n\n### How it works\nOn scheduled intervals, find all emails with a specific label. For each email, check if the email already exists in the Notion database. If it does not exist, create a new page in the Notion database, otherwise do nothing. When the task in the Notion database is checked off, the label will be removed from the email.\n\n### Setup\nThis workflow requires that you set up a Notion database or use an existing one with at least the following fields:\n- Title (title)\n- Thread ID (text)\n- Email thread (URL)\n\n\nAdditionally, create a label that will be used to trigger the workflow in Gmail. In this workflow, the label is called \"Notion\"."
},
"typeVersion": 1
}
],
"connections": {
"Merge": {
"main": [
[
{
"node": "If database page not found",
"type": "main",
"index": 0
}
]
]
},
"On schedule": {
"main": [
[
{
"node": "Derive last request time",
"type": "main",
"index": 0
}
]
]
},
"If checked off": {
"main": [
[
{
"node": "Remove label from target email",
"type": "main",
"index": 0
}
],
[
{
"node": "Not yet checked off, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Find my email address": {
"main": [
[
{
"node": "Create database page",
"type": "main",
"index": 0
}
]
]
},
"Try get database page": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Derive last request time": {
"main": [
[
{
"node": "Get emails from label and last request time",
"type": "main",
"index": 0
}
]
]
},
"On updated database page": {
"main": [
[
{
"node": "If checked off",
"type": "main",
"index": 0
}
]
]
},
"If database page not found": {
"main": [
[
{
"node": "Find my email address",
"type": "main",
"index": 0
}
],
[
{
"node": "If found, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Get emails from label and last request time": {
"main": [
[
{
"node": "Try get database page",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Gmail, Notion : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes de projet, aux gestionnaires de tâches et à toute entreprise utilisant Notion et Gmail. Un niveau technique intermédiaire est recommandé pour la configuration initiale, mais le workflow est conçu pour être facilement adaptable.
Workflow n8n Gmail, Notion : problème résolu
Ce workflow résout le problème de la gestion manuelle des emails en automatisant la création de pages dans Notion. Il élimine les frustrations liées à la perte d'informations importantes dans les emails et réduit le temps passé à transférer manuellement des données. En automatisant ce processus, les utilisateurs peuvent se concentrer sur des tâches à plus forte valeur ajoutée, tout en garantissant que toutes les informations pertinentes sont correctement documentées.
Workflow n8n Gmail, Notion : étapes du workflow
Étape 1 : Le workflow est déclenché selon un calendrier prédéfini.
- Étape 1 : Il dérive l'heure de la dernière requête pour ne traiter que les emails récents.
- Étape 2 : Il récupère les emails d'une étiquette spécifique dans Gmail.
- Étape 3 : Le workflow vérifie si une page correspondante existe déjà dans Notion.
- Étape 4 : Si la page n'existe pas, une nouvelle page est créée avec les informations de l'email.
- Étape 5 : Si un email a été traité, il est désétiqueté pour éviter des doublons.
- Étape 6 : Des conditions sont mises en place pour gérer les mises à jour nécessaires sur les pages existantes.
Workflow n8n Gmail, Notion : guide de personnalisation
Pour personnaliser ce workflow, commencez par ajuster le déclencheur programmé pour définir la fréquence d'exécution selon vos besoins. Modifiez les paramètres de l'étiquette Gmail pour cibler les emails souhaités. Assurez-vous que l'ID de la base de données Notion est correctement configuré pour que les pages soient créées au bon endroit. Vous pouvez également adapter le contenu des pages créées en modifiant les propriétés dans le noeud de création de page. Enfin, pour une meilleure sécurité, pensez à configurer les autorisations d'accès aux services Gmail et Notion.