Workflow n8n

Automatisation Google Sheets avec n8n : récupération et mise à jour de données

Ce workflow n8n a pour objectif d'automatiser la récupération et la mise à jour de données dans Google Sheets, en intégrant des informations provenant de l'API Prospeo.io pour enrichir les données de contact. Idéal pour les équipes marketing et commerciales, ce processus permet de gagner un temps précieux en éliminant les tâches manuelles de recherche d'emails et de mise à jour des feuilles de calcul. Le workflow commence par un déclencheur programmé qui active le processus à intervalles réguliers. Ensuite, il utilise un nœud HTTP pour interroger l'API Prospeo.io, récupérant ainsi les adresses email associées aux profils LinkedIn. Après cela, une vérification conditionnelle est effectuée pour s'assurer que les données sont valides avant de procéder à la fusion des données. Les informations récupérées sont ensuite intégrées dans Google Sheets grâce à des nœuds dédiés à la lecture et à la mise à jour des feuilles. En fin de processus, des notes autocollantes sont créées pour documenter les étapes et les résultats. Cette automatisation n8n permet non seulement de réduire les erreurs humaines, mais aussi d'améliorer la qualité des données, offrant ainsi une valeur ajoutée significative pour les entreprises qui souhaitent optimiser leur gestion des contacts.

Tags clés :automatisationGoogle SheetsAPIn8nprospection
Catégorie: Scheduled · Tags: automatisation, Google Sheets, API, n8n, prospection0

Workflow n8n Google Sheets, prospection : 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, prospection : détail des nœuds

  • HTTP Request - Utilize Prospeo.io LinkedIn Email Finder API1

    Ce noeud effectue une requête HTTP vers l'API de Prospeo.io pour trouver des emails LinkedIn.

  • No Operation, do nothing

    Ce noeud ne réalise aucune opération, servant simplement de point de passage dans le workflow.

  • Schedule Trigger

    Ce noeud déclenche le workflow selon un calendrier défini.

  • Sticky Note1

    Ce noeud crée une note autocollante avec des paramètres de couleur, de taille et de contenu spécifiés.

  • Conditional Check

    Ce noeud effectue une vérification conditionnelle pour déterminer le chemin à suivre dans le workflow.

  • Field Editing

    Ce noeud permet de modifier des champs de données en fonction des paramètres fournis.

  • Data Merge

    Ce noeud fusionne des données provenant de différentes sources selon les options spécifiées.

  • Sticky Note

    Ce noeud crée une note autocollante avec des paramètres de couleur, de taille et de contenu spécifiés.

  • Sticky Note2

    Ce noeud crée une note autocollante avec des paramètres de taille et de contenu spécifiés.

  • Get links from Google Sheet

    Ce noeud récupère des liens à partir d'une feuille Google spécifiée.

  • Update the sheet with information

    Ce noeud met à jour une feuille Google avec des informations selon les colonnes et options spécifiées.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "21754f977ce20b07e6fe64be3fbc663f6e6f730423d6e46c6cd2bf5b5e70a383"
  },
  "nodes": [
    {
      "id": "49a3829e-3127-4761-8ac0-edaa6d0224c2",
      "name": "HTTP Request - Utilize Prospeo.io LinkedIn Email Finder API1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3820,
        680
      ],
      "parameters": {
        "url": "https://api.prospeo.io/linkedin-email-finder",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json['Linkden URL'] }}"
            },
            {
              "name": "id",
              "value": "={{ $json.ID }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-KEY",
              "value": "43b7e4f5c6558ccaa539e0e5f5778f09"
            }
          ]
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "705aef1b-5e45-4fe8-b1fd-5ebb5d461dd5",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        3760,
        1140
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "f2b8a1b8-13b6-4de3-9cde-336494bf31dc",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        3140,
        940
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "28b1d9c4-c89e-460d-8a5b-0fea42d2d1d8",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3660,
        460
      ],
      "parameters": {
        "color": 4,
        "width": 468.54622634118857,
        "height": 380.67540639666913,
        "content": "- Utilized the following API: \n  - [Prospeo.io LinkedIn Email Finder API](https://prospeo.io/api/linkedin-email-finder)\n\n- **Benefit:**\n  - The benefit of this API is to provide an efficient way to find email addresses of users on LinkedIn, aiding in updating and enriching data more accurately and comprehensively in Google Sheets or any other system used in the workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d8edc9fa-3012-46ab-9ed2-473f55213e78",
      "name": "Conditional Check",
      "type": "n8n-nodes-base.if",
      "position": [
        3520,
        940
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2b355bc4-0ef4-415a-a437-d8ed6538c1e3",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Name }}",
              "rightValue": ""
            },
            {
              "id": "1757a7d7-ce91-4df1-b54d-c9285f88e3ee",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Gender }}",
              "rightValue": ""
            },
            {
              "id": "78089c18-e9d6-40e5-8d0c-e2b96c1f1348",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json['Job Title'] }}",
              "rightValue": ""
            },
            {
              "id": "0ee10296-113d-4467-92d7-368111426cf5",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Summery }}",
              "rightValue": ""
            },
            {
              "id": "2ec7486d-e753-4c87-a6df-10056c7ee4b2",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json['Linkden URL'] }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "bdf82dbf-7b6b-4d42-9a6a-34d5cfb691ad",
      "name": "Field Editing",
      "type": "n8n-nodes-base.set",
      "position": [
        4100,
        900
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "Name",
              "stringValue": "={{ $json.response.full_name }}"
            },
            {
              "name": "Gender",
              "stringValue": "={{ $json.response.gender }}"
            },
            {
              "name": "Email",
              "stringValue": "={{ $json.response.email.email }}"
            },
            {
              "name": "Summary",
              "stringValue": "={{ $json.response.summary}}"
            },
            {
              "name": "Education",
              "stringValue": "={{ $json.response.education[0].school.name }}"
            },
            {
              "name": "Skills",
              "stringValue": "={{ $json.response.skills }}"
            },
            {
              "name": "Picture",
              "stringValue": "={{ $json.response.picture }}"
            },
            {
              "name": "Job Title",
              "stringValue": "={{ $json.response.job_title }}"
            },
            {
              "name": "Location",
              "stringValue": "={{ $json.response.location.raw }}"
            },
            {
              "name": "Linkden link",
              "stringValue": "={{ $json.response.linkedin }}"
            },
            {
              "name": "ID",
              "stringValue": "={{ $json.ID }}"
            }
          ]
        },
        "include": "selected",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "897734e2-5d05-4480-a24b-e4b3ae44dce6",
      "name": "Data Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        3860,
        900
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combinationMode": "mergeByPosition"
      },
      "typeVersion": 2.1
    },
    {
      "id": "92a9861d-9e42-4fe2-84a7-03b3b0dbb1b0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2300,
        520
      ],
      "parameters": {
        "color": 5,
        "width": 803.4846614963799,
        "height": 938.2393052135303,
        "content": "\n- **Schedule Trigger:**\n  - Description: This node triggers the workflow based on a defined schedule interval, in this case, based on minutes.\n  - Documentation: [Schedule Trigger Node](https://docs.n8n.io/nodes/n8n-nodes-base.scheduleTrigger)\n\n- **Google Sheets Read:**\n  - Description: This node reads data from a Google Sheets document and sheet based on the provided document ID and sheet name.\n  - Documentation: [Google Sheets Node](https://docs.n8n.io/nodes/n8n-nodes-base.googleSheets)\n\n- **Conditional Check:**\n  - Description: This node checks multiple conditions based on the input data and performs further actions based on the conditions.\n  - Documentation: [Conditional Node](https://docs.n8n.io/nodes/n8n-nodes-base.if)\n\n- **HTTP Request:**\n  - Description: This node sends an HTTP POST request to a specified URL with the provided headers and body parameters.\n  - Documentation: [HTTP Request Node](https://docs.n8n.io/nodes/n8n-nodes-base.httpRequest)\n\n- **No Operation, do nothing:**\n  - Description: This node does not perform any operation and is used as a placeholder.\n  - Documentation: [No Operation Node](https://docs.n8n.io/nodes/n8n-nodes-base.noOp)\n\n\n- **Data Merge:**\n  - Description: This node merges data based on the specified mode and combination settings to combine multiple fields into a single object.\n  - Documentation: [Merge Node](https://docs.n8n.io/nodes/n8n-nodes-base.merge)\n\n- **Field Editing:**\n  - Description: This node edits fields by setting specific values for each field based on the provided input data.\n  - Documentation: [Set Node](https://docs.n8n.io/nodes/n8n-nodes-base.set)\n\n\n- **Google Sheets Update:**\n  - Description: This node updates data in a Google Sheets document and sheet based on the specified columns and values.\n  - Documentation: [Google Sheets Node](https://docs.n8n.io/nodes/n8n-nodes-base.googleSheets)\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "644f38d3-ccf0-4ce3-b759-e129e1074512",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2260,
        240
      ],
      "parameters": {
        "width": 2292.975584892399,
        "height": 1214.0709576942727,
        "content": "## Find contact information for linkedin profile URLs stored in a Google Sheet\n**Video link.** [Guide](https://www.canva.com/design/DAF9a_UBxWY/xSSlSUzRdxCPtfgx9RzGSg/watch?utm_content=DAF9a_UBxWY&utm_campaign=designshare&utm_medium=link&utm_source=editor)"
      },
      "typeVersion": 1
    },
    {
      "id": "8ddaddad-b976-46c5-b8a1-e49ecb493e87",
      "name": "Get links from Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3340,
        940
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ochnGSCy8V5Mz-nr51dBmugqR50m62K7d6pvbwOHewo/edit#gid=0",
          "cachedResultName": "الورقة1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1ochnGSCy8V5Mz-nr51dBmugqR50m62K7d6pvbwOHewo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ochnGSCy8V5Mz-nr51dBmugqR50m62K7d6pvbwOHewo/edit?usp=drivesdk",
          "cachedResultName": "linkden URls"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L5CnisK8R3BgVGcO",
          "name": "Omar sheet"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0923a13d-1097-432d-b22e-375fec9f383e",
      "name": "Update the sheet with information",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4320,
        900
      ],
      "parameters": {
        "columns": {
          "value": {
            "ID": "={{ $json.ID }}",
            "Name": "={{ $json.Name }}",
            "Email": "={{ $json.Email }}",
            "Gender": "={{ $json.Gender }}",
            "Skills": "={{ $json.Skills }}",
            "Picture": "={{ $json.Picture }}",
            "Summery": "={{ $json.Summary }}",
            "Location": "={{ $json.Location }}",
            "Education": "={{ $json.Education }}",
            "Job Title": "={{ $json['Job Title'] }}"
          },
          "schema": [
            {
              "id": "ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Linkden URL",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Linkden URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Gender",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Gender",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Education",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Education",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Job Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Job Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summery",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summery",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Skills",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Skills",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Picture",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Picture",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "ID"
          ]
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ochnGSCy8V5Mz-nr51dBmugqR50m62K7d6pvbwOHewo/edit#gid=0",
          "cachedResultName": "الورقة1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1ochnGSCy8V5Mz-nr51dBmugqR50m62K7d6pvbwOHewo",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ochnGSCy8V5Mz-nr51dBmugqR50m62K7d6pvbwOHewo/edit?usp=drivesdk",
          "cachedResultName": "linkden URls"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L5CnisK8R3BgVGcO",
          "name": "Omar sheet"
        }
      },
      "typeVersion": 4.2
    }
  ],
  "pinData": {},
  "connections": {
    "Data Merge": {
      "main": [
        [
          {
            "node": "Field Editing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Field Editing": {
      "main": [
        [
          {
            "node": "Update the sheet with information",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Get links from Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Conditional Check": {
      "main": [
        [
          {
            "node": "Data Merge",
            "type": "main",
            "index": 1
          },
          {
            "node": "HTTP Request - Utilize Prospeo.io LinkedIn Email Finder API1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get links from Google Sheet": {
      "main": [
        [
          {
            "node": "Conditional Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request - Utilize Prospeo.io LinkedIn Email Finder API1": {
      "main": [
        [
          {
            "node": "Data Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Google Sheets, prospection : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes marketing et commerciales des PME et grandes entreprises qui cherchent à automatiser la gestion de leurs données clients. Un niveau technique intermédiaire est recommandé pour la mise en place et la personnalisation de ce workflow.

Workflow n8n Google Sheets, prospection : problème résolu

Ce workflow résout le problème de la collecte manuelle d'emails et de la mise à jour des données dans Google Sheets, ce qui peut être long et sujet à erreurs. En automatisant ce processus, les utilisateurs gagnent du temps et réduisent le risque d'inexactitudes dans leurs bases de données. Les résultats concrets incluent une base de données de contacts plus précise et à jour, facilitant ainsi les campagnes de prospection.

Workflow n8n Google Sheets, prospection : étapes du workflow

Étape 1 : Le workflow est déclenché par un événement programmé.

  • Étape 1 : Une requête HTTP est envoyée à l'API Prospeo.io pour récupérer les emails associés aux profils LinkedIn.
  • Étape 2 : Une vérification conditionnelle s'assure que les données obtenues sont valides.
  • Étape 3 : Les données sont fusionnées et préparées pour l'intégration.
  • Étape 4 : Les informations sont récupérées et mises à jour dans Google Sheets.
  • Étape 5 : Des notes autocollantes sont ajoutées pour documenter le flux.

Workflow n8n Google Sheets, prospection : guide de personnalisation

Pour personnaliser ce workflow, commencez par modifier l'URL de l'API Prospeo.io dans le nœud HTTP. Vous pouvez également ajuster les paramètres de la feuille Google Sheets, tels que le nom de la feuille et l'ID du document, dans les nœuds correspondants. Si vous souhaitez intégrer d'autres outils, vous pouvez ajouter des nœuds supplémentaires pour des API ou des services de votre choix. Assurez-vous de sécuriser le flux en configurant correctement les autorisations d'accès à Google Sheets et à l'API.