Workflow n8n

Automatisation Google Sheets et Airtable avec n8n : gestion des données

Ce workflow n8n a pour objectif de simplifier la gestion des données en intégrant un formulaire n8n avec Google Sheets et Airtable. Il est particulièrement utile pour les équipes qui souhaitent automatiser la collecte et le traitement des informations soumises via un formulaire, réduisant ainsi les erreurs manuelles et améliorant l'efficacité opérationnelle. Grâce à cette automatisation n8n, les utilisateurs peuvent facilement transférer des données de manière fluide entre différentes plateformes, ce qui est essentiel pour une gestion efficace des projets et des informations.

  • Étape 1 : le déclencheur du workflow est un formulaire n8n qui recueille les données des utilisateurs.
  • Étape 2 : les informations de date et d'heure sont extraites du champ 'submittedAt' à l'aide d'un code JavaScript.
  • Étape 3 : les champs sont formatés pour correspondre aux exigences des systèmes cibles.
  • Étape 4 : les données sont ensuite envoyées vers Airtable, où elles sont organisées dans une base de données.
  • Étape 5 : les informations sont également transférées vers Google Sheets pour une gestion et une analyse supplémentaires.
  • Étape 6 : des notifications par email sont envoyées via Gmail pour tenir informés les membres de l'équipe des nouvelles soumissions. Ce workflow offre des bénéfices significatifs en termes de gain de temps et de réduction des erreurs, permettant aux équipes de se concentrer sur des tâches à plus forte valeur ajoutée.
Tags clés :automatisationGoogle SheetsAirtableworkflown8n
Catégorie: Webhook · Tags: automatisation, Google Sheets, Airtable, workflow, n8n0

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

  • n8n Form Trigger

    Ce noeud déclenche le workflow lorsqu'un formulaire est soumis.

  • Extracting Date and Time Fields from 'submittedAt' Field

    Ce noeud extrait les champs de date et d'heure à partir du champ 'submittedAt'.

  • Format the Fields

    Ce noeud formate les champs de données pour les préparer à l'étape suivante.

  • Airtable

    Ce noeud interagit avec Airtable pour effectuer des opérations sur une base de données spécifique.

  • Sticky Note

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

  • Google Sheets

    Ce noeud interagit avec Google Sheets pour effectuer des opérations sur une feuille de calcul spécifique.

  • Gmail

    Ce noeud envoie un email via Gmail avec les paramètres spécifiés.

  • Gmail1

    Ce noeud envoie un autre email via Gmail avec des paramètres similaires à ceux du noeud précédent.

  • Sticky Note1

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

  • Sticky Note2

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

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "g25bM3Hj71T3ZVVe",
  "meta": {
    "instanceId": "21754f977ce20b07e6fe64be3fbc663f6e6f730423d6e46c6cd2bf5b5e70a383"
  },
  "name": "Streamline data from an n8n form into Google Sheet and Airtable",
  "tags": [],
  "nodes": [
    {
      "id": "32bd3bcb-7de7-4ca3-ba31-897e90f663b1",
      "name": "n8n Form Trigger",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        720,
        -400
      ],
      "webhookId": "c07c8eb6-cf56-4941-91cc-e3cb31c90b5c",
      "parameters": {
        "path": "c07c8eb6-cf56-4941-91cc-e3cb31c90b5c",
        "options": {},
        "formTitle": "Data Colleacation",
        "formFields": {
          "values": [
            {
              "fieldLabel": "What's your name ?",
              "requiredField": true
            },
            {
              "fieldLabel": "Where do you live ?",
              "requiredField": true
            },
            {
              "fieldLabel": "Your Email ?",
              "requiredField": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "bf341165-2698-4f42-a92d-bc5e9a750bf1",
      "name": "Extracting Date and Time Fields from 'submittedAt' Field",
      "type": "n8n-nodes-base.code",
      "position": [
        920,
        -400
      ],
      "parameters": {
        "jsCode": "// Loop over input items and separate date and time into two new fields\nfor (const item of $input.all()) {\n  // Extract date and time from 'submittedAt' field\n  const submittedAt = new Date(item.json['submittedAt']);\n  const date = submittedAt.toISOString().split('T')[0]; // Get date part\n  const time = submittedAt.toISOString().split('T')[1].split('.')[0]; // Get time part\n\n  // Remove the old 'submittedAt' field\n  delete item.json['submittedAt'];\n\n  // Add new 'Date' and 'Time' fields with respective values\n  item.json['Date'] = date;\n  item.json['Time'] = time;\n}\n\nreturn $input.all();\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c9955ba1-0aa4-476b-b2ac-8a458b1547b3",
      "name": "Format the Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1100,
        -400
      ],
      "parameters": {
        "fields": {
          "values": [
            {
              "name": "Name",
              "stringValue": "={{ $json['What\\'s your name ?'] }}"
            },
            {
              "name": "City",
              "stringValue": "={{ $json['Where do you live ?'] }}"
            },
            {
              "name": "Date",
              "stringValue": "={{ $json.Date }}"
            },
            {
              "name": "Time",
              "stringValue": "={{ $json.Time }}"
            },
            {
              "name": "Email",
              "stringValue": "={{ $json['Your Email ?'] }}"
            }
          ]
        },
        "include": "selected",
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "50e6057e-4b26-40f6-adc1-1721818f7a46",
      "name": "Airtable",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1320,
        -260
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "appIIeJ18fnPkNyNS"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "tblZvKuOMmtHnv5TH"
        },
        "columns": {
          "value": {
            "City": "={{ $json.City }}",
            "Date": "={{ $json.Date }}",
            "Name": "={{ $json.Name }}",
            "Time": "={{ $json.Time }}",
            "Email": "={{ $json.Email }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Time",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": []
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "maZEeRzOyC8Q06Zf",
          "name": "Airtable Personal Access Token account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4f561bd8-a5dd-4ff2-9d3e-cdac6f762bd4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        -680
      ],
      "parameters": {
        "color": 5,
        "width": 2256.3366317584496,
        "height": 851.9587677224575,
        "content": "### Workflow Description:\n\n1. **n8n Form Trigger:**\n   - A trigger node that initiates the workflow when a form is submitted.\n   - Form fields include Name, City, and Email.\n\n2. **Extracting Date and Time Fields from 'submittedAt' Field:**\n   - A code node that extracts Date and Time from the submittedAt field.\n\n3. **Format the Fields:**\n   - Sets the format for the extracted fields (Name, City, Date, Time, Email).\n\n4. **Airtable:**\n   - Creates a new record in Airtable with the formatted data.\n   - Includes columns for Name, City, Email, Time, and Date.\n\n5. **Google Sheets:**\n   - Appends the formatted data to a Google Sheet.\n   - Includes columns for Name, City, Email, Date, and Time.\n\n6. **Gmail:**\n   - Sends an email to the provided Email address.\n   - Subject: \"Testing Text Message Delivery\"\n   - Message: Customized message with Name placeholder.\n\n7. **Gmail1:**\n   - Sends another email using a different template.\n   - Subject includes the Date field.\n   - Similar message content with a different subject line.\n\n### Workflow Connections:\n- n8n Form Trigger -> Extracting Date and Time Fields -> Format the Fields -> Google Sheets & Airtable -> Gmail\n- Google Sheets -> Gmail1\n\nThis workflow collects data from a form submission, processes it to extract Date and Time fields, saves the formatted data to Google Sheets and Airtable, and sends customized emails to the submitter.\n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a0d53cb5-27c8-4dfb-a1ea-e2403bde1fc4",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1320,
        -540
      ],
      "parameters": {
        "columns": {
          "value": {
            "City": "={{ $json.City }}",
            "Date": "={{ $json.Date }}",
            "Name": "={{ $json.Name }}",
            "Time": "={{ $json.Time }}",
            "Email": "={{ $json.Email }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "City",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "City",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Time",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": []
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Ss6AEwaXpAl54YQAQDf1z6SRyh6pj719-A9eOzf2Dv4/edit#gid=0",
          "cachedResultName": "Page"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1Ss6AEwaXpAl54YQAQDf1z6SRyh6pj719-A9eOzf2Dv4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Ss6AEwaXpAl54YQAQDf1z6SRyh6pj719-A9eOzf2Dv4/edit?usp=drivesdk",
          "cachedResultName": "Streamline data from an n8n form into Google Sheet and Airtable"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L5CnisK8R3BgVGcO",
          "name": "Omar sheet"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "de697574-f547-4374-86d9-c6d9f709c404",
      "name": "Gmail",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1560,
        -260
      ],
      "parameters": {
        "sendTo": "={{ $json.fields.Email }}",
        "message": "=Dear {{ $json.fields.Name }} ..\n\nHey there! Just testing to see if this message goes through. Let me know if you receive it. \n\nThanks! \nSupport Team",
        "options": {},
        "subject": "Testing Text Message Delivery",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "UJx4Tiq8WRtxWEIP",
          "name": "Gmail Omar"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "66677b7e-d053-4050-a65c-9c9f8f689646",
      "name": "Gmail1",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1560,
        -540
      ],
      "parameters": {
        "sendTo": "={{ $json.Email }}",
        "message": "=Dear {{ $json.Name }} ..\n\nHey there! Just testing to see if this message goes through. Let me know if you receive it. \n\nThanks! \nSupport Team  ",
        "options": {},
        "subject": "=Testing Text Message Delivery , ( {{ $json.Date }} ) ",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "UJx4Tiq8WRtxWEIP",
          "name": "Gmail Omar"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "e440b4cb-6910-4bc7-b3df-7c14dd9c43a9",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1820,
        -640
      ],
      "parameters": {
        "width": 510.8381838182147,
        "height": 206.48715095387286,
        "content": "### Links to Node Documentation:\n1. [n8n Form Trigger Documentation](https://docs.n8n.io/nodes/n8n-nodes-base.formTrigger)\n2. [Code Node Documentation](https://docs.n8n.io/nodes/n8n-nodes-base.code)\n3. [Set Node Documentation](https://docs.n8n.io/nodes/n8n-nodes-base.set)\n4. [Airtable Node Documentation](https://docs.n8n.io/nodes/n8n-nodes-base.airtable)\n5. [Google Sheets Node Documentation](https://docs.n8n.io/nodes/n8n-nodes-base.googleSheets)\n6. [Gmail Node Documentation](https://docs.n8n.io/nodes/n8n-nodes-base.gmail)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "541ecd4c-22bc-4bc9-8364-ca73b4650092",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        -640
      ],
      "parameters": {
        "width": 1105.0652438372836,
        "height": 630.9350509674927,
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "de903de6-c793-4a64-9d3c-0ade08d6994e",
  "connections": {
    "Airtable": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheets": {
      "main": [
        [
          {
            "node": "Gmail1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "n8n Form Trigger": {
      "main": [
        [
          {
            "node": "Extracting Date and Time Fields from 'submittedAt' Field",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format the Fields": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          },
          {
            "node": "Airtable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extracting Date and Time Fields from 'submittedAt' Field": {
      "main": [
        [
          {
            "node": "Format the Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

Ce workflow s'adresse aux équipes marketing, aux gestionnaires de projet et aux entreprises de taille moyenne à grande qui utilisent des formulaires pour collecter des données. Un niveau technique intermédiaire est recommandé pour adapter et personnaliser le workflow selon les besoins spécifiques.

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

Ce workflow résout le problème de la gestion manuelle des données en automatisant le transfert d'informations entre un formulaire n8n, Google Sheets et Airtable. Il élimine les frustrations liées aux erreurs de saisie manuelle et réduit le temps consacré à la gestion des données. Les utilisateurs bénéficient d'une solution efficace qui garantit que les informations sont correctement organisées et accessibles en temps réel, ce qui améliore la prise de décision et la réactivité.

Workflow n8n Google Sheets, Airtable : étapes du workflow

Étape 1 : le workflow est déclenché par un formulaire n8n qui recueille les données des utilisateurs.

  • Étape 1 : les informations de date et d'heure sont extraites du champ 'submittedAt' à l'aide d'un code JavaScript.
  • Étape 2 : les champs sont formatés pour correspondre aux exigences des systèmes cibles.
  • Étape 3 : les données sont envoyées vers Airtable pour une gestion structurée.
  • Étape 4 : les informations sont également transférées vers Google Sheets pour une analyse approfondie.
  • Étape 5 : des notifications par email sont envoyées via Gmail pour informer l'équipe des nouvelles soumissions.

Workflow n8n Google Sheets, Airtable : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier le chemin du webhook dans le déclencheur du formulaire n8n pour l'adapter à votre environnement. Il est également possible de changer le nom de la feuille dans Google Sheets et de spécifier la base et la table dans Airtable. Pour les notifications par email, ajustez les adresses dans les noeuds Gmail pour cibler les bons destinataires. Assurez-vous de tester chaque étape après modification pour garantir le bon fonctionnement de l'automatisation.