Workflow n8n

Automatisation Google Sheets avec n8n : intégration MySQL simplifiée

  • Ce workflow n8n a pour objectif d'automatiser l'intégration des données entre Google Sheets et une base de données MySQL. Dans un contexte où les entreprises doivent gérer efficacement leurs données, ce processus permet de synchroniser les informations entre ces deux outils, facilitant ainsi la gestion des données et la prise de décision. Par exemple, une équipe marketing peut utiliser ce workflow pour importer des données de prospects depuis Google Sheets vers MySQL, tout en s'assurant que les informations sont à jour et cohérentes.
  • Le déroulé commence par un déclencheur manuel qui active le workflow. Ensuite, le nœud 'Compare Datasets' permet de vérifier les données existantes, suivi par un nœud de 'Schedule Trigger' pour automatiser les exécutions à intervalles réguliers. Les données de Google Sheets sont récupérées grâce au nœud 'Google Sheet Data', tandis que les requêtes SQL sont gérées par le nœud 'SQL Get inquiries from Google'. Les données sont ensuite ajoutées à la base MySQL via le nœud 'Add MySQL records'. Des conditions sont mises en place pour vérifier l'état des données et s'assurer que tout est en synchronisation avant de mettre à jour le statut dans Google Sheets.
  • Les bénéfices de cette automatisation n8n sont multiples : réduction des erreurs humaines, gain de temps considérable dans la gestion des données, et une meilleure fiabilité des informations utilisées pour les analyses. En intégrant Google Sheets et MySQL, les entreprises peuvent ainsi optimiser leur flux de travail et améliorer leur efficacité opérationnelle.
Tags clés :automatisationGoogle SheetsMySQLworkflown8n
Catégorie: Manual · Tags: automatisation, Google Sheets, MySQL, workflow, n8n0

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

  • When clicking "Execute Workflow"

    Ce noeud déclenche manuellement l'exécution du workflow.

  • Compare Datasets

    Ce noeud compare des ensembles de données selon des options spécifiées.

  • Send Notifications

    Ce noeud envoie des notifications sans effectuer d'autres actions.

  • Schedule Trigger

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

  • Google Sheet Data

    Ce noeud récupère des données d'une feuille Google spécifiée.

  • SQL Get inquiries from Google

    Ce noeud exécute une requête SQL pour obtenir des informations à partir d'une base de données.

  • Add MySQL records

    Ce noeud ajoute des enregistrements dans une table MySQL.

  • Rename GSheet variables

    Ce noeud renomme des variables dans une feuille Google.

  • No reply too long?

    Ce noeud vérifie si une réponse est trop longue selon des conditions définies.

  • DB Status assigned?

    Ce noeud vérifie si un statut de base de données est assigné selon des conditions.

  • Update GSheet status

    Ce noeud met à jour le statut dans une feuille Google selon des colonnes spécifiées.

  • DB Status in sync?

    Ce noeud vérifie si le statut de la base de données est synchronisé selon des conditions.

  • Sync MySQL data

    Ce noeud synchronise des données dans une table MySQL.

  • Sticky Note

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

  • Sticky Note1

    Ce noeud crée une autre note autocollante avec un contenu spécifié.

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

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "id": "VtiRiIGkdeUhyh0N",
  "meta": {
    "instanceId": "fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
  },
  "name": "GoogleSheets MySQL Integration",
  "tags": [],
  "nodes": [
    {
      "id": "ec43f0df-338b-462f-9195-b20024e83ba1",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        720,
        500
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e9fd1af3-dcf8-4442-958d-cb8390c85263",
      "name": "Compare Datasets",
      "type": "n8n-nodes-base.compareDatasets",
      "position": [
        1380,
        380
      ],
      "parameters": {
        "options": {
          "skipFields": "record_created,record_updated,id"
        },
        "mergeByFields": {
          "values": [
            {
              "field1": "timestamp",
              "field2": "timestamp"
            },
            {
              "field1": "source_name",
              "field2": "source_name"
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "5b14d739-9037-48a8-9990-5b8ac3318b1c",
      "name": "Send Notifications",
      "type": "n8n-nodes-base.noOp",
      "position": [
        1840,
        260
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "10ff3339-9091-4ea2-be4e-12a91208e27d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        720,
        200
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "*/30 6-22 * * 1-5"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "dcf6838f-0d58-4438-875b-94caac45cb65",
      "name": "Google Sheet Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        940,
        200
      ],
      "parameters": {
        "options": {
          "returnAllMatches": "returnAllMatches"
        },
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "DB Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 263642066,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCSKt9bKrFSWGRTTfj-JIVl-u7gcLMbFTCSvZbUMiuo/edit#gid=263642066",
          "cachedResultName": "Form Responses 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1KCSKt9bKrFSWGRTTfj-JIVl-u7gcLMbFTCSvZbUMiuo"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "RtRiRezoxiWkzZQt",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "6044469f-9000-4e47-a2d9-920371677a82",
      "name": "SQL Get inquiries from Google",
      "type": "n8n-nodes-base.mySql",
      "position": [
        940,
        500
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ConcertInquiries",
          "cachedResultName": "ConcertInquiries"
        },
        "where": {
          "values": [
            {
              "value": "GoogleForm",
              "column": "source_name"
            }
          ]
        },
        "options": {},
        "operation": "select",
        "returnAll": true
      },
      "credentials": {
        "mySql": {
          "id": "ICakJ1LRuVl4dRTs",
          "name": "db4free TTT account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "f65aad46-93ce-44e6-b7b9-8c177516cf18",
      "name": "Add MySQL records",
      "type": "n8n-nodes-base.mySql",
      "position": [
        1620,
        80
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ConcertInquiries",
          "cachedResultName": "ConcertInquiries"
        },
        "options": {},
        "operation": "upsert",
        "columnToMatchOn": "timestamp"
      },
      "credentials": {
        "mySql": {
          "id": "ICakJ1LRuVl4dRTs",
          "name": "db4free TTT account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6b3d9971-f37c-4721-8134-f60bdf1a03da",
      "name": "Rename GSheet variables",
      "type": "n8n-nodes-base.set",
      "position": [
        1160,
        200
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "timestamp",
              "value": "={{ $json.Timestamp }}"
            },
            {
              "name": "occasion",
              "value": "={{ $json[\"What event are you organizing? \"] }}"
            },
            {
              "name": "email_address",
              "value": "={{ $json[\"Email Address\"] }}"
            },
            {
              "name": "event_date",
              "value": "={{ DateTime.fromFormat($json[\"When does the event take place? \"], 'M/d/yyyy').toFormat('yyyy-MM-dd') }}"
            },
            {
              "name": "location",
              "value": "={{ $json[\"Where does the event take place? \"] }}"
            },
            {
              "name": "event_description",
              "value": "={{ $json[\"Please tell us more about the event. \"] }}"
            },
            {
              "name": "source_name",
              "value": "GoogleForm"
            },
            {
              "name": "db_status",
              "value": "={{ $json[\"DB Status\"] }}"
            },
            {
              "name": "name",
              "value": "={{ $json[\"Your name \"] }}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 2
    },
    {
      "id": "04f067be-8d7d-48bd-9a3d-d881d6dd3464",
      "name": "No reply too long?",
      "type": "n8n-nodes-base.if",
      "position": [
        1620,
        280
      ],
      "parameters": {
        "conditions": {
          "dateTime": [
            {
              "value1": "={{ DateTime.fromFormat($json.timestamp, 'MM/d/yyyy HH:mm:ss'); }}",
              "value2": "={{ DateTime.now().minus({ hours: 4 }) }}",
              "operation": "before"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2f287a7b-eda2-4d05-9864-ba66bddaf14d",
      "name": "DB Status assigned?",
      "type": "n8n-nodes-base.if",
      "position": [
        1620,
        480
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.different.db_status.inputB }}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cb10201c-5fcc-41f2-94ac-a52cdbe96e58",
      "name": "Update GSheet status",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1840,
        460
      ],
      "parameters": {
        "columns": {
          "value": {
            "DB Status": "={{ $json.different.db_status.inputB }}",
            "Timestamp": "={{ $json.keys.timestamp }}"
          },
          "schema": [
            {
              "id": "Timestamp",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Email Address",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Email Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Your name ",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Your name ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "What event are you organizing? ",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "What event are you organizing? ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "When does the event take place? ",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "When does the event take place? ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Where does the event take place? ",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Where does the event take place? ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Please tell us more about the event. ",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Please tell us more about the event. ",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "DB Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DB Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Timestamp"
          ]
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 263642066,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1KCSKt9bKrFSWGRTTfj-JIVl-u7gcLMbFTCSvZbUMiuo/edit#gid=263642066",
          "cachedResultName": "Form Responses 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1KCSKt9bKrFSWGRTTfj-JIVl-u7gcLMbFTCSvZbUMiuo"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "RtRiRezoxiWkzZQt",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "178fe745-b026-4c7f-9104-6756ba2d7d7d",
      "name": "DB Status in sync?",
      "type": "n8n-nodes-base.if",
      "position": [
        1620,
        680
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.source_name }}",
              "operation": "isNotEmpty"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "6b92bfaf-65f1-441d-a0fc-51e448380520",
      "name": "Sync MySQL data",
      "type": "n8n-nodes-base.mySql",
      "position": [
        1840,
        660
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ConcertInquiries",
          "cachedResultName": "ConcertInquiries"
        },
        "options": {},
        "dataMode": "defineBelow",
        "operation": "update",
        "valuesToSend": {
          "values": [
            {
              "value": "={{ $json.source_name }}Sync",
              "column": "source_name"
            }
          ]
        },
        "valueToMatchOn": "={{ $json.id }}",
        "columnToMatchOn": "id"
      },
      "credentials": {
        "mySql": {
          "id": "ICakJ1LRuVl4dRTs",
          "name": "db4free TTT account"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3c95f764-e91c-4418-98c9-c18939486b01",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        903,
        -115.08597285067867
      ],
      "parameters": {
        "width": 376.8778280542988,
        "height": 474.81900452488685,
        "content": "## Create a new Google Form with several variables:\n\n-Email Address\n-Your name \n-What event are you organizing? \n-When does the event take place? \n-Where does the event take place? \n-Please tell us more about the event. \n\n- Timestamp variable is added automatically\n- Add \"DB Status\" manually in the Google Sheet\n"
      },
      "typeVersion": 1
    },
    {
      "id": "0a5aa6c9-5312-4716-bd63-71534cdccbf1",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        900,
        394
      ],
      "parameters": {
        "width": 375.6334841628956,
        "height": 273.23529411764684,
        "content": "### Import this SQL file to create a new table\nhttps://gist.github.com/teds-tech-talks/cf25c60363cba082b9c5a1feca10180f"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "69bdc2a6-346a-4c2e-82fd-9b7fd54b6f36",
  "connections": {
    "Compare Datasets": {
      "main": [
        [
          {
            "node": "Add MySQL records",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No reply too long?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "DB Status assigned?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "DB Status in sync?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Google Sheet Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "SQL Get inquiries from Google",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Sheet Data": {
      "main": [
        [
          {
            "node": "Rename GSheet variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DB Status in sync?": {
      "main": [
        [
          {
            "node": "Sync MySQL data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No reply too long?": {
      "main": [
        [
          {
            "node": "Send Notifications",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "DB Status assigned?": {
      "main": [
        [
          {
            "node": "Update GSheet status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rename GSheet variables": {
      "main": [
        [
          {
            "node": "Compare Datasets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SQL Get inquiries from Google": {
      "main": [
        [
          {
            "node": "Compare Datasets",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Google Sheet Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "SQL Get inquiries from Google",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

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

Ce workflow s'adresse principalement aux équipes marketing et commerciales des PME et TPE qui utilisent Google Sheets pour la gestion de leurs données et qui souhaitent automatiser leur intégration avec une base de données MySQL. Un niveau technique intermédiaire est recommandé pour la personnalisation du workflow.

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

Ce workflow résout le problème de la gestion manuelle des données entre Google Sheets et MySQL, qui peut être source d'erreurs et de pertes de temps. En automatisant ce processus, les utilisateurs éliminent les risques d'incohérences dans les données et obtiennent une synchronisation en temps réel, ce qui leur permet de se concentrer sur des tâches à plus forte valeur ajoutée. Les résultats concrets incluent une meilleure précision des données et une réduction significative du temps passé sur des tâches répétitives.

Workflow n8n Google Sheets, MySQL : étapes du workflow

Étape 1 : Le workflow est déclenché manuellement.

  • Étape 1 : Les données sont comparées à l'aide du nœud 'Compare Datasets'.
  • Étape 2 : Un déclencheur planifié est mis en place pour automatiser les exécutions futures.
  • Étape 3 : Les données de Google Sheets sont récupérées avec le nœud 'Google Sheet Data'.
  • Étape 4 : Les requêtes SQL sont exécutées pour obtenir les informations nécessaires.
  • Étape 5 : Les nouvelles données sont ajoutées à la base MySQL.
  • Étape 6 : Des conditions vérifient l'état des données et mettent à jour le statut dans Google Sheets si nécessaire.

Workflow n8n Google Sheets, MySQL : guide de personnalisation

Pour personnaliser ce workflow, commencez par ajuster le nœud 'Google Sheet Data' en spécifiant le nom de la feuille et l'ID du document. Vous pouvez également modifier les paramètres du nœud 'SQL Get inquiries from Google' pour cibler la bonne table et les conditions de filtrage. Assurez-vous que les colonnes à synchroniser dans MySQL correspondent bien à celles de Google Sheets en utilisant le nœud 'Rename GSheet variables'. Pour une meilleure sécurité, pensez à configurer des notifications en cas d'erreurs ou de problèmes de synchronisation.