Workflow n8n

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.

Tags clés :automatisationGoogle CalendarSlackworkflown8n
Catégorie: Cron · Tags: automatisation, Google Calendar, Slack, workflow, n8n0

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

  • Google Calendar

    Ce noeud interagit avec Google Calendar pour effectuer des opérations sur des événements selon les paramètres spécifiés.

  • Function

    Ce noeud exécute un code JavaScript personnalisé pour traiter des données selon la logique définie.

  • Date & Time

    Ce noeud manipule des valeurs de date et d'heure, permettant de les formater ou de les ajuster selon les besoins.

  • IF

    Ce noeud évalue des conditions pour déterminer le chemin à suivre dans le workflow.

  • Date & Time1

    Ce noeud traite à nouveau des valeurs de date et d'heure, similaire au noeud précédent, pour d'autres ajustements.

  • Set

    Ce noeud permet de définir ou de modifier des valeurs dans le contexte du workflow.

  • Merge

    Ce noeud fusionne les données provenant de plusieurs sources selon le mode spécifié.

  • Set1

    Ce noeud définit ou modifie des valeurs supplémentaires dans le contexte du workflow.

  • Date & Time2

    Ce noeud effectue encore des manipulations sur des valeurs de date et d'heure, offrant des options de formatage.

  • Function1

    Ce noeud exécute un autre code JavaScript personnalisé pour un traitement de données spécifique.

  • Slack

    Ce noeud envoie un message sur Slack avec le texte et les options spécifiés.

  • Cron

    Ce noeud déclenche le workflow à des intervalles réguliers selon les horaires définis.

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.