Ü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 denensource_name = 'GoogleForm'ist. - Die beiden Datensätze anhand gemeinsamer Schlüssel (
timestampundsource_name) vergleichen und dabei automatisch verwaltete Felder wieid,record_createdundrecord_updatedignorieren. - Neue oder geänderte Google Sheet-Datensätze in die MySQL-Datenbank einfügen oder aktualisieren (Upsert).
- Änderungen im Feld
DB Statusin 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
- Auslöser: Der Workflow startet entweder über den Schedule Trigger (alle 30 Minuten an Wochentagen von 6 bis 22 Uhr) oder den Manual Trigger.
- 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.
- 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. - Vergleich: Der Knoten Compare Datasets gleicht die beiden Datensätze anhand von
timestampundsource_nameab 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?)
- Elemente, die in MySQL eingefügt/aktualisiert werden sollen (
- Datenbank-Upsert: Neue oder geänderte Datensätze werden über Add MySQL records in MySQL eingefügt/aktualisiert (Upsert auf
timestamp). - 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 Statusin 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_nameauf"GoogleFormSync"als Bestätigungsflag für die Synchronisation.
- 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.