Automatisation Google Calendar avec n8n : notifications Slack programmées
Ce workflow n8n a pour objectif d'automatiser l'envoi de notifications sur Slack en fonction des événements programmés dans Google Calendar. Dans un contexte professionnel où la gestion du temps est cruciale, ce type d'automatisation permet aux équipes de rester informées des événements à venir sans avoir à vérifier manuellement leur calendrier. Par exemple, une équipe marketing peut recevoir des alertes avant des réunions importantes, garantissant ainsi une meilleure préparation et une communication fluide. Le workflow commence par un déclencheur Cron qui exécute le processus à intervalles réguliers. Ensuite, il utilise le noeud Google Calendar pour récupérer les événements à venir. Après cela, un traitement via des noeuds de fonction permet de formater les données nécessaires pour la notification. Une condition est ensuite vérifiée pour déterminer si des événements doivent être envoyés. Si c'est le cas, les informations sont fusionnées et envoyées à Slack via le noeud dédié. Ce processus réduit le risque d'oublis et améliore l'efficacité des équipes. Grâce à cette automatisation n8n, les utilisateurs bénéficient d'une gestion du temps optimisée et d'une communication améliorée au sein de leurs équipes.
Workflow n8n Google Calendar, Slack : vue d'ensemble
Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.
Workflow n8n Google Calendar, Slack : détail des nœuds
Inscris-toi pour voir l'intégralité du workflow
Inscription gratuite
S'inscrire gratuitementBesoin d'aide ?{
"nodes": [
{
"name": "Google Calendar",
"type": "n8n-nodes-base.googleCalendar",
"position": [
540,
-320
],
"parameters": {
"options": {},
"calendar": "xxxxx@gmail.com",
"operation": "getAll",
"returnAll": true
},
"credentials": {
"googleCalendarOAuth2Api": "Google Accounts"
},
"typeVersion": 1
},
{
"name": "Function",
"type": "n8n-nodes-base.function",
"position": [
540,
70
],
"parameters": {
"functionCode": "var date = new Date().toISOString();\nvar day = new Date().getDay();\nconst weekday = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\n\nitems[0].json.date_today = date;\nitems[0].json.day_today = weekday[day];\n\nreturn items;"
},
"notesInFlow": false,
"typeVersion": 1
},
{
"name": "Date & Time",
"type": "n8n-nodes-base.dateTime",
"position": [
720,
-320
],
"parameters": {
"value": "={{$json[\"start\"][\"dateTime\"]}}",
"custom": true,
"options": {
"toTimezone": "Asia/Qatar"
},
"toFormat": "DD/MM/YYYY",
"dataPropertyName": "Event Start Date Only"
},
"typeVersion": 1
},
{
"name": "IF",
"type": "n8n-nodes-base.if",
"position": [
1410,
-110
],
"parameters": {
"conditions": {
"string": [
{
"value1": "= {{$json[\"Event Date\"]}}",
"value2": "= {{$json[\"Today's Date\"]}}"
}
],
"dateTime": []
}
},
"typeVersion": 1
},
{
"name": "Date & Time1",
"type": "n8n-nodes-base.dateTime",
"position": [
880,
70
],
"parameters": {
"value": "={{$json[\"date_today\"]}}",
"custom": true,
"options": {
"toTimezone": "Asia/Qatar"
},
"toFormat": "DD/MM/YYYY",
"dataPropertyName": "Today's Date"
},
"typeVersion": 1
},
{
"name": "Set",
"type": "n8n-nodes-base.set",
"position": [
910,
-320
],
"parameters": {
"values": {
"string": [
{
"name": "Event Name",
"value": "={{$json[\"summary\"]}}"
},
{
"name": "Event Date",
"value": "={{$json[\"Event Start Date Only\"]}}"
},
{
"name": "Today's Date",
"value": "="
},
{
"name": "Gcal URL",
"value": "={{$json[\"htmlLink\"]}}"
},
{
"name": "Location",
"value": "={{$json[\"location\"]}}"
},
{
"name": "Start Time",
"value": "={{$json[\"start\"][\"dateTime\"]}}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1200,
-110
],
"parameters": {
"mode": "multiplex"
},
"typeVersion": 1
},
{
"name": "Set1",
"type": "n8n-nodes-base.set",
"position": [
1630,
-130
],
"parameters": {
"values": {
"number": [],
"string": [
{
"name": "Name",
"value": "={{$json[\"Event Name\"]}}"
},
{
"name": "Time",
"value": "={{$json[\"Start Time\"]}}"
},
{
"name": "URL",
"value": "={{$json[\"Gcal URL\"]}}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"name": "Date & Time2",
"type": "n8n-nodes-base.dateTime",
"position": [
1800,
-130
],
"parameters": {
"value": "={{$json[\"Time\"]}}",
"custom": true,
"options": {
"toTimezone": "Asia/Qatar"
},
"toFormat": "HH:mm",
"dataPropertyName": "Time"
},
"typeVersion": 1
},
{
"name": "Function1",
"type": "n8n-nodes-base.function",
"position": [
1960,
-130
],
"parameters": {
"functionCode": "// Create our Slack message\n// This will output a list of Ticket URLs with the status and the subject\n// 12345 [STATUS] - Ticket Subject\nlet message = \"*Hello , Please find below a list of your meetings for today*. \\n\";\n\n// Loop the input items\nfor (item of items) {\n // Append the ticket information to the message\n message += \"*\" + item.json.Name +' @ '+ item.json.Time + \"\\n* - \" + item.json.URL + \"\\n\"; \n}\n\n// Return our message\nreturn [{json: {message}}];\n"
},
"typeVersion": 1
},
{
"name": "Slack",
"type": "n8n-nodes-base.slack",
"position": [
2150,
-130
],
"parameters": {
"text": "={{$json[\"message\"]}}",
"channel": "virtual-assistant",
"attachments": [],
"otherOptions": {}
},
"credentials": {
"slackApi": "Slack account"
},
"typeVersion": 1
},
{
"name": "Cron",
"type": "n8n-nodes-base.cron",
"position": [
250,
-130
],
"parameters": {
"triggerTimes": {
"item": [
{
"hour": 6
}
]
}
},
"retryOnFail": true,
"typeVersion": 1
}
],
"connections": {
"IF": {
"main": [
[
{
"node": "Set1",
"type": "main",
"index": 0
}
]
]
},
"Set": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Cron": {
"main": [
[
{
"node": "Google Calendar",
"type": "main",
"index": 0
},
{
"node": "Function",
"type": "main",
"index": 0
}
]
]
},
"Set1": {
"main": [
[
{
"node": "Date & Time2",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "IF",
"type": "main",
"index": 0
}
]
]
},
"Function": {
"main": [
[
{
"node": "Date & Time1",
"type": "main",
"index": 0
}
]
]
},
"Function1": {
"main": [
[
{
"node": "Slack",
"type": "main",
"index": 0
}
]
]
},
"Date & Time": {
"main": [
[
{
"node": "Set",
"type": "main",
"index": 0
}
]
]
},
"Date & Time1": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Date & Time2": {
"main": [
[
{
"node": "Function1",
"type": "main",
"index": 0
}
]
]
},
"Google Calendar": {
"main": [
[
{
"node": "Date & Time",
"type": "main",
"index": 0
}
]
]
}
}
}Workflow n8n Google Calendar, Slack : pour qui est ce workflow ?
Ce workflow s'adresse aux équipes marketing, aux gestionnaires de projets et aux professionnels qui utilisent Google Calendar et Slack pour coordonner leurs activités. Il est idéal pour les entreprises de taille petite à moyenne qui cherchent à améliorer leur efficacité opérationnelle sans nécessiter de compétences techniques avancées.
Workflow n8n Google Calendar, Slack : problème résolu
Ce workflow résout le problème de la gestion des événements et des rappels en automatisant l'envoi de notifications sur Slack. En éliminant le besoin de vérifier manuellement le calendrier, il réduit le risque d'oublis d'événements importants et permet aux équipes de mieux se préparer. Les utilisateurs peuvent ainsi se concentrer sur leurs tâches principales tout en restant informés des événements à venir.
Workflow n8n Google Calendar, Slack : étapes du workflow
Étape 1 : Le déclencheur Cron lance le workflow à intervalles réguliers.
- Étape 1 : Le noeud Google Calendar récupère les événements à venir.
- Étape 2 : Un traitement via un noeud de fonction formate les données des événements.
- Étape 3 : Une condition vérifie si des événements doivent être envoyés.
- Étape 4 : Les informations sont fusionnées.
- Étape 5 : Les notifications sont envoyées à Slack via le noeud dédié.
Workflow n8n Google Calendar, Slack : guide de personnalisation
Pour personnaliser ce workflow, vous pouvez modifier le déclencheur Cron pour ajuster la fréquence d'exécution selon vos besoins. Il est également possible de changer le calendrier dans le noeud Google Calendar pour utiliser un autre calendrier. Dans le noeud Slack, vous pouvez spécifier le canal où les notifications doivent être envoyées. Enfin, vous pouvez adapter le code dans les noeuds de fonction pour personnaliser le format des messages envoyés.