Workflow n8n

Automatisation n8n : collecte d'événements mensuels par email

Ce workflow n8n a pour objectif d'automatiser la collecte d'événements mensuels et leur envoi par email. Dans un contexte où les entreprises doivent régulièrement informer leurs équipes ou clients des événements à venir, cette automatisation permet de gagner du temps et d'assurer une communication fluide. En utilisant n8n, l'agence d'automatisation Uclic propose une solution efficace pour extraire des données d'une page web et les transmettre par email.

  • Étape 1 : le workflow débute avec un déclencheur programmé qui s'active chaque mois.
  • Étape 2 : il envoie une requête HTTP pour récupérer la page contenant les événements.
  • Étape 3 : une fois la page obtenue, le workflow vérifie s'il y a d'autres pages à traiter.
  • Étape 4 : il extrait les événements de la page et les traite un par un pour obtenir les données nécessaires.
  • Étape 5 : après avoir collecté toutes les informations, le workflow les compile et les prépare pour l'envoi.
  • Étape 6 : enfin, un email est envoyé avec les détails des événements. Grâce à cette automatisation n8n, les entreprises peuvent réduire le temps passé à rechercher des informations et améliorer la réactivité de leur communication.
Tags clés :automatisationn8nemailcollecte de donnéesévénements
Catégorie: Scheduled · Tags: automatisation, n8n, email, collecte de données, événements0

Workflow n8n email, collecte de données, événements : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n email, collecte de données, événements : détail des nœuds

  • Get events page

    Ce noeud effectue une requête HTTP pour récupérer la page des événements.

  • Last page?

    Ce noeud vérifie si la page actuelle est la dernière dans le processus.

  • Get all events from the page

    Ce noeud extrait tous les événements présents sur la page HTML récupérée.

  • Get each event data

    Ce noeud extrait les données de chaque événement à partir du contenu HTML.

  • Limit to one

    Ce noeud limite le traitement à un seul élément de la liste.

  • Wait 3s

    Ce noeud introduit une pause de 3 secondes dans le workflow.

  • Split events

    Ce noeud divise la liste des événements en plusieurs éléments distincts.

  • Collect all results

    Ce noeud collecte tous les résultats traités dans le workflow.

  • 🤖 Each month

    Ce noeud déclenche le workflow chaque mois selon une règle définie.

  • Setup location and email

    Ce noeud configure les valeurs de localisation et d'email pour le workflow.

  • 💄 Lick the stamp

    Ce noeud exécute un code JavaScript pour traiter des données spécifiques.

  • ✉️ Send it

    Ce noeud envoie un email via Gmail avec les informations spécifiées.

  • Sticky Note

    Ce noeud crée une note autocollante avec un contenu et une couleur définis.

  • Sticky Note1

    Ce noeud crée une autre note autocollante avec des spécifications de couleur et de contenu.

  • Sticky Note2

    Ce noeud crée une note autocollante avec une couleur et un contenu spécifiés.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7"
  },
  "nodes": [
    {
      "id": "fe775b06-0264-49ea-af29-16289fee1100",
      "name": "Get events page",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -660,
        1160
      ],
      "parameters": {
        "url": "={{ $json.location }}/this-month?page={{ $runIndex+1}}",
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "c55554f4-f06c-4084-b9c2-454cf290682b",
      "name": "Last page?",
      "type": "n8n-nodes-base.if",
      "position": [
        0,
        1160
      ],
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $items().length }}",
              "value2": "=50"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "3d750b8a-4288-45ac-af2d-24fc6b7126ec",
      "name": "Get all events from the page",
      "type": "n8n-nodes-base.htmlExtract",
      "position": [
        -440,
        1160
      ],
      "parameters": {
        "options": {
          "trimValues": true
        },
        "extractionValues": {
          "values": [
            {
              "key": "events",
              "cssSelector": "li.event-listings-element",
              "returnArray": true,
              "returnValue": "html"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "84b570d5-60ad-4cb1-9428-1cc3372954cb",
      "name": "Get each event data",
      "type": "n8n-nodes-base.htmlExtract",
      "position": [
        420,
        1140
      ],
      "parameters": {
        "options": {},
        "dataPropertyName": "events",
        "extractionValues": {
          "values": [
            {
              "key": "date",
              "attribute": "datetime",
              "cssSelector": "time",
              "returnArray": true,
              "returnValue": "attribute"
            },
            {
              "key": "artist",
              "cssSelector": "p.artists strong"
            },
            {
              "key": "support",
              "cssSelector": "p.artists span.support"
            },
            {
              "key": "location",
              "cssSelector": "p.location"
            },
            {
              "key": "eventLink",
              "attribute": "href",
              "cssSelector": "a.event-link",
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "783555d1-1c9c-4bda-8969-0ac46dced10e",
      "name": "Limit to one",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        420,
        1300
      ],
      "parameters": {
        "operation": "limit"
      },
      "typeVersion": 1
    },
    {
      "id": "fdd1c66b-5e20-4c2d-8c01-38555621ec84",
      "name": "Wait 3s",
      "type": "n8n-nodes-base.wait",
      "position": [
        220,
        1300
      ],
      "webhookId": "617f8c35-66e5-4fca-b974-cf9fc4130d68",
      "parameters": {
        "unit": "seconds",
        "amount": 3
      },
      "typeVersion": 1
    },
    {
      "id": "49b5b5c7-9645-42cb-89ec-bb9972c8b379",
      "name": "Split events",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        -220,
        1160
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "events"
      },
      "typeVersion": 1
    },
    {
      "id": "30b06dc8-d896-4684-9c79-3d845f1041ac",
      "name": "Collect all results",
      "type": "n8n-nodes-base.code",
      "position": [
        220,
        1140
      ],
      "parameters": {
        "jsCode": "let results = [],\n  i = 0;\n\ndo {\n  try {\n    results = results.concat($items('Split events', 0, i));\n  } catch (error) {\n    return results;\n  }\n  i++;\n} while(true);"
      },
      "typeVersion": 1
    },
    {
      "id": "ea9444ad-06a3-4567-9638-ce8ef8bfff23",
      "name": "🤖 Each month",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1220,
        1160
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "months",
              "triggerAtHour": 20
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "73f7295d-c0f7-42b6-8784-3198538e6e48",
      "name": "Setup location and email",
      "type": "n8n-nodes-base.set",
      "position": [
        -880,
        1160
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "location"
            },
            {
              "name": "email"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 1
    },
    {
      "id": "a3529743-a7fd-4056-80a9-63b0dac259d6",
      "name": "💄 Lick the stamp",
      "type": "n8n-nodes-base.code",
      "position": [
        620,
        1140
      ],
      "parameters": {
        "jsCode": "const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ];\n\nlet html = `<table style=\"width: 100%\">`;\nfor (const item of $input.all()) {\n  const eventDate = new Date(item.json.date[0]);\n  \n   html += `\n    <tr>\n      <td style=\"width: 60px; background-color: #2e2e32; font-family: sans-serif\">\n        <a href=\"https://www.songkick.com${item.json.eventLink}\" style=\"color: #dcdfe6; text-decoration: none\">\n          <p style=\"font-weight: bold; text-align: center; margin: 5px 0 0; padding: 0 0.5em\">${monthNames[eventDate.getMonth()]}</p>\n          <p style=\"font-weight: bold; font-size: 1.5em; text-align: center; margin: 0 0 2px\">${eventDate.getDate()}</p>\n        </a>\n      </td>\n      <td style=\"background-color: #f2f4f8; font-family: sans-serif; padding: 0.3em 0.5em\">\n        <a href=\"https://www.songkick.com${item.json.eventLink}\" style=\"color: #555555; text-decoration: none\">\n        <div>\n          <p style=\"font-size: 1.2em; margin: 0\"><b>${item.json.artist}</b>`\n\n  if (item.json.support) {\n    html = html + `<span style=\"color: #7d7d87; margin:0\"> + ${item.json.support}</span>`;\n  }\n  \n  html += `\n          </p><p style=\"color: #7d7d87; margin: 0\">${item.json.location.split(',')[0].replace(/(\\r\\n|\\n|\\r)/gm, \"\")}</p>\n        </div>\n        </a>\n      </td>\n  </tr>\n   `\n}\nhtml += '</table>';\n\nreturn { \n  \"html\": html,\n  \"total\": $input.all().length \n};\n//$input.all();"
      },
      "typeVersion": 1
    },
    {
      "id": "a8f0e1cf-e8b5-402f-9336-4c623980a315",
      "name": "✉️ Send it",
      "type": "n8n-nodes-base.gmail",
      "position": [
        820,
        1140
      ],
      "parameters": {
        "sendTo": "={{ $('Setup location and email').params[\"values\"][\"string\"][1][\"value\"] }}",
        "message": "={{ $json[\"html\"] }}",
        "options": {
          "senderName": "=Monthly event newsletter"
        },
        "subject": "=📫 This month: {{$json[\"total\"]}} events!"
      },
      "typeVersion": 2
    },
    {
      "id": "e23fd2fc-baf3-4494-ae4a-ddb51f45ff3c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -940,
        1080
      ],
      "parameters": {
        "color": 7,
        "height": 230.21423635107112,
        "content": "### Setup your location link and receiver email(s) here"
      },
      "typeVersion": 1
    },
    {
      "id": "58300fe9-e3b3-452f-b13b-a9296cf05a71",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        1060
      ],
      "parameters": {
        "color": 3,
        "height": 230.21423635107112,
        "content": "###  Don't forget to connect a GMail account to this node!"
      },
      "typeVersion": 1
    },
    {
      "id": "663147c1-1af0-49f3-9671-3d1d66e7a6f0",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        720
      ],
      "parameters": {
        "color": 4,
        "content": "## Don't forget to activate the workflow here ☝️"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "Wait 3s": {
      "main": [
        [
          {
            "node": "Limit to one",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Last page?": {
      "main": [
        [
          {
            "node": "Collect all results",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wait 3s",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit to one": {
      "main": [
        [
          {
            "node": "Setup location and email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split events": {
      "main": [
        [
          {
            "node": "Last page?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get events page": {
      "main": [
        [
          {
            "node": "Get all events from the page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "🤖 Each month": {
      "main": [
        [
          {
            "node": "Setup location and email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Collect all results": {
      "main": [
        [
          {
            "node": "Get each event data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get each event data": {
      "main": [
        [
          {
            "node": "💄 Lick the stamp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "💄 Lick the stamp": {
      "main": [
        [
          {
            "node": "✉️ Send it",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Setup location and email": {
      "main": [
        [
          {
            "node": "Get events page",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get all events from the page": {
      "main": [
        [
          {
            "node": "Split events",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n email, collecte de données, événements : pour qui est ce workflow ?

Ce workflow s'adresse aux entreprises qui organisent régulièrement des événements et souhaitent automatiser la communication avec leurs équipes ou clients. Il est particulièrement utile pour les équipes marketing, les responsables d'événements et les PME qui cherchent à optimiser leur gestion du temps. Un niveau technique intermédiaire est recommandé pour la personnalisation.

Workflow n8n email, collecte de données, événements : problème résolu

Ce workflow résout le problème de la collecte manuelle d'informations sur les événements, qui peut être chronophage et sujette à des erreurs. En automatisant ce processus, les utilisateurs éliminent les frustrations liées à la recherche d'événements et réduisent le risque de manquer des informations importantes. À la fin de la mise en place, les utilisateurs bénéficient d'une communication régulière et structurée sur les événements à venir, ce qui améliore leur efficacité opérationnelle.

Workflow n8n email, collecte de données, événements : étapes du workflow

Étape 1 : le workflow se déclenche chaque mois via un planificateur.

  • Étape 1 : il envoie une requête HTTP pour récupérer la page des événements.
  • Étape 2 : il vérifie s'il y a d'autres pages à traiter.
  • Étape 3 : les événements de la page sont extraits et traités un par un pour obtenir les données nécessaires.
  • Étape 4 : les résultats sont collectés et préparés pour l'envoi.
  • Étape 5 : un email est envoyé avec les détails des événements.

Workflow n8n email, collecte de données, événements : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL de la requête HTTP pour pointer vers la page contenant vos événements. Ajustez également les paramètres d'extraction dans les nœuds HTML pour correspondre à la structure de votre page. Si vous souhaitez changer le destinataire de l'email, modifiez le champ 'sendTo' dans le nœud Gmail. Il est aussi possible d'ajouter des filtres pour ne récupérer que certains types d'événements. Assurez-vous de tester le workflow après chaque modification pour garantir son bon fonctionnement.