Workflow n8n

Automatisation Google Sheets avec n8n : mise à jour de profils LinkedIn

Ce workflow n8n a pour objectif d'automatiser la mise à jour des profils LinkedIn à partir de données stockées dans Google Sheets. Dans un contexte où la gestion des informations de contact est cruciale pour les équipes commerciales et marketing, cette automatisation permet de gagner du temps et d'éviter les erreurs manuelles. Les cas d'usage incluent la synchronisation des données de contact, l'enrichissement des profils et la mise à jour des informations en temps réel. Le workflow commence par un déclencheur manuel qui initie le processus. Ensuite, il appelle une API via un nœud HTTP pour récupérer des données pertinentes. Un filtre est appliqué pour s'assurer que seules les informations enrichies sont traitées. Les données sont ensuite encodées en URI pour garantir leur intégrité avant d'être traitées par un script JavaScript qui extrait les tableaux nécessaires. Les informations sont mises à jour dans Google Sheets, et des notes autocollantes sont créées pour visualiser les étapes clés du processus. Cette automatisation n8n offre une valeur ajoutée significative en réduisant les erreurs humaines, en améliorant l'efficacité des équipes et en permettant une gestion proactive des données clients.

Tags clés :automatisationGoogle Sheetsn8ngestion des donnéesprofil LinkedIn
Catégorie: Manual · Tags: automatisation, Google Sheets, n8n, gestion des données, profil LinkedIn0

Workflow n8n Google Sheets, gestion des données, profil LinkedIn : 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, gestion des données, profil LinkedIn : détail des nœuds

  • When clicking ‘Test workflow’

    Ce noeud déclenche le workflow lorsque l'utilisateur clique sur 'Test workflow'.

  • Call Rapid API

    Ce noeud effectue une requête HTTP vers l'API Rapid en utilisant les paramètres spécifiés.

  • Filter already enriched

    Ce noeud filtre les données pour exclure celles qui ont déjà été enrichies selon les conditions définies.

  • Encode URI

    Ce noeud encode une URI en utilisant les options et les affectations fournies.

  • FiIter out all arrays

    Ce noeud traite les données en extrayant tous les tableaux présents dans les entrées.

  • Update the profile

    Ce noeud met à jour un profil dans Google Sheets en fonction des colonnes et des options spécifiées.

  • Sticky Note

    Ce noeud crée une note autocollante avec les paramètres de couleur, largeur, hauteur et contenu fournis.

  • Sticky Note1

    Ce noeud crée une autre note autocollante avec des paramètres similaires à ceux du noeud précédent.

  • Pull linkedin profiles

    Ce noeud extrait des profils LinkedIn à partir d'une feuille Google Sheets selon les options spécifiées.

  • Sticky Note2

    Ce noeud crée une troisième note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "nodes": [
    {
      "id": "835afb8f-5bb3-42da-9694-d04646a80cef",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6",
      "name": "Call Rapid API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        0
      ],
      "parameters": {
        "url": "https://fresh-linkedin-profile-data.p.rapidapi.com/get-linkedin-profile",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "linkedin_url",
              "value": "={{ $json[\"Linkedin Profile\"] }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-key"
            },
            {
              "name": "x-rapidapi-host"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9fa011f4-d1fe-46d2-abda-28ae33929874",
      "name": "Filter already enriched",
      "type": "n8n-nodes-base.filter",
      "position": [
        440,
        0
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "5907d2f7-b15d-41cc-8fee-45631bb874e1",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.about }}",
              "rightValue": ""
            },
            {
              "id": "2857554e-a635-43d3-bf9e-a617b85009ca",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.linkedin_url }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3f0b5717-38b4-4371-b3fa-9f19acf3e624",
      "name": "Encode URI",
      "type": "n8n-nodes-base.set",
      "position": [
        660,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "fd914708-c85f-4c0e-a277-d8164c616699",
              "name": "Linkedin Profile",
              "type": "string",
              "value": "={{ encodeURI($json.linkedin_url) }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "632e2555-5474-4d00-85f0-e95ee984c0dd",
      "name": "FiIter out all arrays",
      "type": "n8n-nodes-base.code",
      "position": [
        1100,
        0
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "// Initialize an empty object to store filtered items\nlet filteredData = {};\n\n// Loop through each item in $input.item.json.data\nfor (const item in $input.item.json.data) {\n  // Check if the item is not an array\n  if (!Array.isArray($input.item.json.data[item])) {\n    // Add the item to the filteredData object\n    filteredData[item] = $input.item.json.data[item];\n  }\n}\nfilteredData['row_number'] = $('Pull linkedin profiles').first().json.row_number\n// Return the filteredData array\nreturn filteredData;"
      },
      "typeVersion": 2
    },
    {
      "id": "24b27c51-0f22-400c-bdc3-a09186c74639",
      "name": "Update the profile",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1320,
        0
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "linkedin_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "linkedin_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "about",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "about",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "city",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "city",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_domain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_employee_range",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_employee_range",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_industry",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_industry",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_linkedin_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_linkedin_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_logo_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_logo_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_year_founded",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_year_founded",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "connection_count",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "connection_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "country",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "current_company_join_month",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "current_company_join_month",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "current_company_join_year",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "current_company_join_year",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "current_job_duration",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "current_job_duration",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "follower_count",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "follower_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "full_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "full_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "headline",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "headline",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hq_city",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hq_city",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hq_country",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hq_country",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hq_region",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hq_region",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "languages",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "languages",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "profile_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "profile_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "profile_image_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "profile_image_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "public_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "public_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "school",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "school",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "state",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "state",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "urn",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "urn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "linkedin_url"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM/edit?usp=drivesdk",
          "cachedResultName": "Linkedin contact info"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "gdLmm513ROUyH6oU",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "41e0e213-a1f4-47ff-aebd-6cd08df06eae",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -200
      ],
      "parameters": {
        "color": 4,
        "width": 220,
        "height": 380,
        "content": "## Create a Google sheet\nWith just one column named \"linkedin_url\" and fill it with the profiles you want to enrich"
      },
      "typeVersion": 1
    },
    {
      "id": "da28d424-10ce-499d-95c9-81979dab0f6b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        780,
        -300
      ],
      "parameters": {
        "color": 4,
        "width": 300,
        "height": 480,
        "content": "## Call RapidAPI Fresh Linkedin Profile Data\nYou have to create an account in [RapidAPI](https://rapidapi.com) and subscribe to Fresh LinkedIn Profile Data. With a free account you will be able to scrape 100 profile / month.\nAfter your subscription you will have to replace the header values: \"x-rapidapi-key\" and \"x-rapidapi-host\" with the values given in the RapidAPI interface\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2bae0a2a-0c88-465b-854d-728280539e90",
      "name": "Pull linkedin profiles",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        220,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM/edit?usp=drivesdk",
          "cachedResultName": "Linkedin contact info"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "gdLmm513ROUyH6oU",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "d93a0d4c-1db8-4604-85e1-7d02bbbdcdb8",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -500,
        -760
      ],
      "parameters": {
        "color": 7,
        "width": 460,
        "height": 1160,
        "content": "### LinkedIn Profile Enrichment Workflow\n\n#### Who is this for?\n\nThis workflow is ideal for recruiters, sales professionals, and marketing teams who need to enrich LinkedIn profiles with additional data for lead generation, talent sourcing, or market research.\n\n#### What problem is this workflow solving?\n\nManually gathering detailed LinkedIn profile information can be time-consuming and prone to errors. This workflow automates the process of enriching profile data from LinkedIn, saving time and ensuring accuracy.\n\n#### What this workflow does\n\n1.  **Input**: Reads LinkedIn profile URLs from a Google Sheet.\n2.  **Validation**: Filters out already enriched profiles to avoid redundant processing.\n3.  **Data Enrichment**: Uses RapidAPI's Fresh LinkedIn Profile Data API to retrieve detailed profile information.\n4.  **Output**: Updates the Google Sheet with enriched profile data, appending new information efficiently.\n\n#### Setup\n\n1.  **Google Sheet**: Create a sheet with a column named `linkedin_url` and populate it with the profile URLs to enrich.\n2.  **RapidAPI Account**: Sign up at [RapidAPI](https://rapidapi.com) and subscribe to the Fresh LinkedIn Profile Data API.\n3.  **API Integration**: Replace the `x-rapidapi-key` and `x-rapidapi-host` values with your credentials from RapidAPI.\n4.  **Run the Workflow**: Trigger the workflow and monitor the updates to your Google Sheet.\n\n#### How to customize this workflow\n\n*   **Filter Criteria**: Modify the filter step to include additional conditions for processing profiles.\n*   **API Configuration**: Adjust API parameters to retrieve specific fields or extend usage.\n*   **Output Format**: Customize how the enriched data is appended to the Google Sheet (e.g., format, column mappings).\n*   **Error Handling**: Add steps to handle API rate limits or missing data for smoother automation.\n\nThis workflow streamlines LinkedIn profile enrichment, making it faster and more effective for data-driven decision-making."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Encode URI": {
      "main": [
        [
          {
            "node": "Call Rapid API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Call Rapid API": {
      "main": [
        [
          {
            "node": "FiIter out all arrays",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update the profile": {
      "main": [
        []
      ]
    },
    "FiIter out all arrays": {
      "main": [
        [
          {
            "node": "Update the profile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pull linkedin profiles": {
      "main": [
        [
          {
            "node": "Filter already enriched",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter already enriched": {
      "main": [
        [
          {
            "node": "Encode URI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Pull linkedin profiles",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Google Sheets, gestion des données, profil LinkedIn : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes commerciales et marketing qui souhaitent optimiser la gestion de leurs données de contact. Il est particulièrement adapté aux entreprises utilisant Google Sheets pour stocker des informations clients et qui cherchent à automatiser la mise à jour de leurs profils LinkedIn. Un niveau technique intermédiaire est recommandé pour la personnalisation.

Workflow n8n Google Sheets, gestion des données, profil LinkedIn : problème résolu

Ce workflow résout le problème de la mise à jour manuelle des profils LinkedIn, qui peut être chronophage et sujet à des erreurs. En automatisant ce processus, les utilisateurs peuvent éviter les pertes de temps liées à la recherche et à la saisie manuelle des données. De plus, il réduit le risque d'incohérences dans les informations de contact, garantissant ainsi que les équipes disposent toujours des données les plus récentes et précises.

Workflow n8n Google Sheets, gestion des données, profil LinkedIn : étapes du workflow

Étape 1 : Le workflow est déclenché manuellement par l'utilisateur.

  • Étape 1 : Une requête HTTP est envoyée à une API pour récupérer les données nécessaires.
  • Étape 2 : Un filtre est appliqué pour ne traiter que les données déjà enrichies.
  • Étape 3 : Les données sont encodées en URI pour assurer leur intégrité.
  • Étape 4 : Un script JavaScript est exécuté pour extraire tous les tableaux requis.
  • Étape 5 : Les informations sont mises à jour dans Google Sheets.
  • Étape 6 : Des notes autocollantes sont créées pour visualiser les étapes importantes du processus.

Workflow n8n Google Sheets, gestion des données, profil LinkedIn : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL de l'API dans le nœud 'Call Rapid API' pour l'adapter à vos besoins spécifiques. Assurez-vous également de mettre à jour le nom de la feuille dans les nœuds Google Sheets pour correspondre à votre document. Vous pouvez ajuster les conditions du filtre pour cibler des données spécifiques selon vos critères. Enfin, n'hésitez pas à personnaliser le contenu des notes autocollantes pour refléter les informations pertinentes pour votre équipe.