Start / n8n-Workflow-Vorlagen / Bidirektionaler Google Sheets- und MySQL-Datensynchronisations-Workflow

Bidirektionaler Google Sheets- und MySQL-Datensynchronisations-Workflow

GoogleSheets MySQL Integration

Synchronisiert Daten automatisch zwischen Google Sheets (Formularantworten) und einer MySQL-Datenbank, verwaltet Einfügungen, Aktualisierungen und Statusverfolgung mit bedingter Logik.

Komplex12 KnotenDatenanalyseGoogle SheetsMySQLDatensynchronisierung

Über diesen Workflow

Google Sheets und MySQL Bidirektionale Synchronisations-Workflow

Diese n8n Workflow-Vorlage implementiert ein robustes bidirektionales Synchronisationssystem zwischen Google Sheets (typischerweise gespeist von Google Forms) und einer MySQL-Datenbank. Konzipiert für die Verwaltung von Veranstaltungs- oder Konzertanfragen, gewährleistet sie Datenkonsistenz über beide Systeme hinweg und ermöglicht gleichzeitig automatisierte Statusverfolgung, bedingte Benachrichtigungen und Feldzuordnungen. Der Workflow läuft nach einem Zeitplan während der Geschäftszeiten und kann auch manuell für eine sofortige Ausführung ausgelöst werden.

Was der Workflow tut

Der Kernzweck dieses Workflows ist:

  • Neue oder aktualisierte Anfrage-Datensätze aus einem Google Sheet abrufen (z. B. Antworten von einem Google Formular).
  • Entsprechende Datensätze aus einer MySQL-Tabelle (ConcertInquiries) abrufen, bei denen source_name = 'GoogleForm' ist.
  • Die beiden Datensätze anhand gemeinsamer Schlüssel (timestamp und source_name) vergleichen und dabei automatisch verwaltete Felder wie id, record_created und record_updated ignorieren.
  • Neue oder geänderte Google Sheet-Datensätze in die MySQL-Datenbank einfügen oder aktualisieren (Upsert).
  • Änderungen im Feld DB Status in den Vergleichsergebnissen erkennen und diese Aktualisierungen zurück in das Google Sheet übertragen.
  • Veraltete Anfragen (älter als 4 Stunden), die keine Antwort erhalten haben, identifizieren und eine Benachrichtigung auslösen.
  • Synchronisations-Flags in der Datenbank beibehalten, wenn Datensätze als synchron bestätigt werden.

Hauptfunktionen und Fähigkeiten

  • Bidirektionale Synchronisation: Änderungen in Google Sheets oder MySQL können unter bestimmten Bedingungen im jeweils anderen System widergespiegelt werden.
  • Feldnormalisierung: Benennt Google Formular-Spaltennamen automatisch um und formatiert sie in standardisierte, datenbankfreundliche Feldnamen (z. B. Umwandlung von Datumsformaten in JJJJ-MM-TT).
  • Bedingte Logik: Verwendet mehrere IF-Knoten, um verschiedene Synchronisationsszenarien zu behandeln:
    • Erkennung veralteter Anfragen
    • Aktualisierungen des Statusfeldes
    • Synchronisationsbestätigung
  • Geplante & Manuelle Auslöser: Läuft automatisch alle 30 Minuten zwischen 6 und 22 Uhr an Wochentagen und unterstützt die Ausführung nach Bedarf.
  • Datenvergleich: Nutzt den Knoten Compare Datasets, um Unterschiede intelligent zu erkennen und gleichzeitig systemverwaltete Spalten auszuschließen.
  • Dokumentationsunterstützung: Enthält Haftnotizen mit Einrichtungsanweisungen sowohl für das Google Formular als auch für das erforderliche MySQL-Tabellenschema.

Hauptknoten und ihre Zwecke

Knoten Typ Zweck
Schedule Trigger scheduleTrigger Automatisiert die Workflow-Ausführung alle 30 Minuten an Wochentagen während der Geschäftszeiten (*/30 6-22 * * 1-5).
When clicking "Execute Workflow" manualTrigger Ermöglicht die manuelle Auslösung für Tests oder dringende Synchronisationen.
Google Sheet Data googleSheets Liest alle Zeilen aus einem bestimmten Blatt (Form Responses 1) in einer Google Spreadsheet.
SQL Get inquiries from Google mySql Ruft alle Datensätze aus der Tabelle ConcertInquiries ab, bei denen source_name = 'GoogleForm' ist.
Rename GSheet variables set Ordnet rohe Google Formular-Feldnamen normalisierten Datenbankspaltennamen zu und formatiert Daten mit Luxon's DateTime neu.
Compare Datasets compareDatasets Vergleicht Google Sheet-Daten (nach Umbenennung) mit MySQL-Datensätzen unter Verwendung von timestamp und source_name als Zusammenführungsschlüssel; überspringt Systemfelder.
Add MySQL records mySql Führt eine upsert-Operation in ConcertInquiries durch, die auf timestamp übereinstimmt, um Duplikate zu vermeiden.
No reply too long? if Prüft, ob der timestamp eines Datensatzes älter als 4 Stunden ist; wenn ja, wird zur Benachrichtigungslogik weitergeleitet.
DB Status assigned? if Erkennt, ob das Feld DB Status in MySQL aktualisiert wurde (über different.db_status.inputB) und löst eine Google Sheet-Aktualisierung aus.
Update GSheet status googleSheets Aktualisiert nur die Spalten DB Status und Timestamp in der ursprünglichen Google Sheet-Zeile.
DB Status in sync? if Überprüft, ob source_name existiert (als Stellvertreter für einen gültigen Synchronisationsstatus), bevor der Datensatz als synchron markiert wird.
Sync MySQL data mySql Aktualisiert den MySQL-Datensatz, indem "Sync" an das Feld source_name angehängt wird, was eine erfolgreiche bidirektionale Synchronisation bestätigt.
Send Notifications noOp Platzhalter für zukünftige Benachrichtigungslogik (z. B. E-Mail, Slack); tut derzeit nichts, markiert aber den Pfad für Benachrichtigungen.
Sticky Notes stickyNote Bietet Einrichtungsanleitungen: eine für die Google Formular-Struktur, eine weitere, die auf einen SQL-Schema-Gist verweist.

Anwendungsfälle und Vorteile

Primärer Anwendungsfall: Verwaltung von Veranstaltungs- oder Konzertbuchungsanfragen, die über Google Forms eingereicht werden, um sicherzustellen, dass sie zuverlässig in einer strukturierten MySQL-Datenbank gespeichert werden, während das Personal den Status direkt im Sheet oder in der Datenbank aktualisieren kann.

Vorteile:

  • Datenintegrität: Verhindert Duplikate und gewährleistet konsistente Feldnamen über Plattformen hinweg.
  • Betriebliche Effizienz: Automatisiert die Dateneingabe von Formularen in eine abfragbare Datenbank.
  • Statusverfolgung: Ermöglicht es Teammitgliedern, den Anfrage-Status in einem der Systeme zu aktualisieren, wobei Änderungen in beiden Systemen widergespiegelt werden.
  • Bereitschaft für Benachrichtigungen: Identifiziert veraltete Anfragen zur Nachverfolgung (das Benachrichtigungssystem kann vom noOp-Knoten aus erweitert werden).
  • Geringer Wartungsaufwand: Geplante Ausführungen reduzieren manuelle Eingriffe; der manuelle Auslöser unterstützt die Fehlerbehebung.

Schritt-für-Schritt-Workflow-Logik

  1. Auslöser: Der Workflow startet entweder über den Schedule Trigger (alle 30 Minuten an Wochentagen von 6 bis 22 Uhr) oder den Manual Trigger.
  2. Datenabruf:
    • Google Sheet Data ruft alle Formularantworten ab.
    • SQL Get inquiries from Google ruft alle MySQL-Datensätze ab, die mit source_name = 'GoogleForm' gekennzeichnet sind.
  3. Normalisierung: Der Knoten Rename GSheet variables wandelt Google Formular-Felder in standardisierte JSON-Objekte mit korrekter Datumsformatierung um und fügt source_name = "GoogleForm" hinzu.
  4. Vergleich: Der Knoten Compare Datasets gleicht die beiden Datensätze anhand von timestamp und source_name ab und gibt vier Ströme aus:
    • Elemente, die in MySQL eingefügt/aktualisiert werden sollen (Add MySQL records)
    • Elemente, die auf Veralterung geprüft werden müssen (No reply too long?)
    • Elemente mit aktualisiertem DB Status (DB Status assigned?)
    • Elemente, die zur Synchronisationsbestätigung bereit sind (DB Status in sync?)
  5. Datenbank-Upsert: Neue oder geänderte Datensätze werden über Add MySQL records in MySQL eingefügt/aktualisiert (Upsert auf timestamp).
  6. Bedingte Verarbeitung:
    • Wenn ein Datensatz älter als 4 Stunden ist (No reply too long? → true), fließt er zu Send Notifications (derzeit ein Platzhalter).
    • Wenn DB Status in MySQL geändert wurde (DB Status assigned? → true), schreibt Update GSheet status den neuen Status zurück in das Google Sheet.
    • Wenn der Datensatz gültig ist (DB Status in sync? → true), aktualisiert Sync MySQL data den source_name auf "GoogleFormSync" als Bestätigungsflag für die Synchronisation.
  7. Abschluss: Alle Pfade enden fehlerfrei und erhalten die Datenparität zwischen den Systemen aufrecht.

Dieser Workflow bietet eine skalierbare Grundlage für die Integration von benutzergenerierten Formulardaten mit relationalen Datenbanken, ideal für Kundensupport-, Veranstaltungsmanagement- oder Lead-Tracking-Systeme.

So geht’s: JSON herunterladen und in n8n „Aus Datei importieren“ wählen.