Wie man ein Buchungssystem mit Google Forms und Sheets erstellt

Letzte Aktualisierung: 05/06/2026

  • Kombinierte Nutzung von Google Forms, Sheets und Apps Script zur Verwaltung von Buchungen mit Raumkontrolle.
  • Zusätzliche Tabellenblätter in Google Sheets zum Zählen der Teilnehmer, Berechnen der Kapazität und Generieren einbettbarer Listen.
  • Automatisierung mit Triggern und dynamischer Aktualisierung von Optionen, einschließlich automatischem Formularabschluss.
  • Möglichkeit der Integration eines REST-Buchungsservers mit Sicherheits-, Idempotenz- und Geschäftsfehlerbehandlungsfunktionen.
Wie man ein Buchungssystem mit Google Forms und Sheets erstellt

Um ein Buchungssystem mit Google Forms und Sheets Es ist eine der schnellsten und günstigsten Möglichkeiten, Termine, Veranstaltungsplätze oder Wartelisten zu verwalten, ohne in teure Software investieren zu müssen. Mit einem gut gestalteten Formular, einer Tabellenkalkulation für die Berechnungen und etwas Google Apps Script lässt sich innerhalb weniger Stunden ein recht professionelles System einrichten.

In diesem Artikel werden wir uns detailliert ansehen, wie man kombiniert Google FormulareGoogle Sheets und Google Apps Script Um ein Buchungssystem mit Kapazitätsverwaltung, automatischer Sitzplatzaktualisierung, einer einbettbaren Teilnehmerliste auf Ihrer Website und, falls erforderlich, der Integration eines externen Buchungsservers per API zu erstellen, orientieren Sie sich am Ansatz des Google Action Centers. Ziel ist es, eine solide Grundlage zu schaffen, die Sie flexibel an Ihr Unternehmen anpassen können – vom kleinen Kurs bis zum komplexen Terminplanungssystem.

Planung des Buchungssystems mit Google Forms und Sheets

Die Grundlage des gesamten Ablaufs ist ein einfaches Anmeldeformular Hier gibt der Nutzer seine Daten ein und wählt die gewünschte Sitzung oder Ressource aus. Jede Formularübermittlung wird automatisch in einer Google-Tabellenkalkulation gespeichert. Dort berechnen wir, wie viele Plätze belegt sind, wie viele noch frei sind und wer sich für welche Sitzung angemeldet hat.

Google Forms allein erlaubt dies nicht. Plätze blockieren oder ausverkaufte Optionen ausblendenHier kommt Google Apps Script ins Spiel. Mit einem Skript, das mit dem Formular oder der Tabelle verknüpft ist, können Sie den Text der Optionen dynamisch aktualisieren (z. B. "(25 Plätze verbleibend)" hinzufügen) oder sogar bereits ausgebuchte Sitzungen aus der Liste entfernen.

Wenn alle Sitzungen belegt sind, kann das Skript auch Das Formular wird automatisch geschlossen Damit niemand sonst Anfragen stellen kann. Dieser gesamte Prozess wird mit den Daten aus der von Google Sheets erstellten „Kontrolltabelle“ abgestimmt, in der die Anzahl der Teilnehmer gezählt und die verbleibende Kapazität für jeden Fall berechnet wird.

Wenn Sie ein komplexeres System wünschen oder bereits mit einem eigenen Backend arbeiten, können Sie außerdem ein solches implementieren. Buchungsserver über REST-API Das System empfängt Anfragen von Google (z. B. vom Actions Center), erstellt oder aktualisiert Reservierungen in Ihrem System und gibt Statusmeldungen, Fehler und normalisierte Daten zurück, wodurch Idempotenz und sichere Authentifizierung gewährleistet werden.

Wie man ein Buchungssystem mit Google Forms und Sheets erstellt

Erstellen Sie das Buchungsformular in Google Forms.

Der erste Schritt besteht darin, eine minimalistische, aber gut gestaltete Form zu erstellen. Normalerweise sollten mindestens die folgenden Elemente enthalten sein: Name der Person, die die Reservierung vornimmt und die gewünschte Sitzung oder Aktivität. Sie können weitere Fragen hinzufügen (E-Mail, Telefonnummer, Kommentare usw.), aber es ist am besten, mit den grundlegenden Informationen zu beginnen, um die Verfügbarkeit zu klären.

Erstellen Sie in Google Drive ein neues Formular und geben Sie ihm einen aussagekräftigen Titel. Fügen Sie eine Frage vom Typ „Frage“ hinzu. Kurzantwort für Name und ein weiteres vom Typ „Multiple Choice“ für die verfügbaren Sitzungen. Jede Option im Multiple Choice-Fragebogen repräsentiert eine zu buchende Sitzung oder Ressource.

Wenn Sie kurze Text-, Richtig/Falsch- oder Multiple-Choice-Fragen hinzufügen, fragt Google Forms nach einem Titel und Antwortmöglichkeiten; in der Welt von Google Apps Script wird all dies als … betrachtet. „Element“ des FormularsEs ist wichtig, dieses Konzept zu berücksichtigen, da wir später beim Programmieren das spezifische Element finden müssen, das die Sitzungen auflistet.

Stellen Sie sich vor, Sie bieten vier Seminare an. Sie könnten die Optionen zunächst mit einem Text definieren, der den Zeitplan und die Gesamtkapazität enthält, zum Beispiel: „Seminar 1: 10:00–12:00 Uhr (noch 100 Plätze frei)“. Diese Information sieht der erste Nutzer, der das Formular öffnet, und das Skript reduziert die Anzahl der verfügbaren Plätze automatisch.

Wenn Sie möchten, können Sie diesen Buchungsblock in ein System integrieren. ausführlichere Form (zum Beispiel eine Vorbefragung und am Ende die Reservierungsphase), aber um die Logik vollständig zu verstehen, ist es praktischer, mit einem einfachen Formular zu arbeiten, das sich ausschließlich auf die Reservierung von Plätzen konzentriert.

Google Formulare mit Google Tabellen verbinden

Damit das System funktioniert, muss jede Formularübermittlung mit einem Komma enden. verknüpfte TabelleAuf der Registerkarte „Antworten“ von Google Forms sehen Sie ein Symbol mit dem typischen grünen Sheets-Logo; wenn Sie darauf klicken, können Sie mithilfe des Assistenten ein neues Tabellenblatt erstellen oder das Formular mit einem bestehenden Tabellenblatt verknüpfen.

Am einfachsten beginnen Sie mit der Erstellung eines neuen Tabellenblatts. Auf diesem Tabellenblatt finden Sie ein Tabellenblatt mit einem Namen wie „Formularantworten 1“, in dem alle Zeilen mit den von den Teilnehmenden übermittelten Daten angezeigt werden: Zeitstempel, Name des Teilnehmenden und gewähltes Seminar sowie alle weiteren von Ihnen hinzugefügten Felder.

Exklusiver Inhalt – Klicken Sie hier  So ändern Sie die Sprache und die Übersetzungen der Rechtschreibprüfung in Chrome

Bevor Sie mit Formeln oder Skripten fortfahren, ist es sehr hilfreich, Folgendes zu senden: ein paar Testlieferungen direkt im Formular (über die Vorschau-Schaltfläche). So können Sie sicherstellen, dass die Spaltenstruktur wie erwartet ist und Formeln anpassen, ohne Fehler befürchten zu müssen.

Vergessen Sie nicht zu überprüfen, ob sich das Formular im Modus befindet. „Antworten werden entgegengenommen“Andernfalls können weder Sie noch Ihre Benutzer Testlieferungen durchführen, und Sie werden denken, dass etwas kaputt ist, obwohl Sie in Wirklichkeit nur diese Option hätten aktivieren müssen.

Budgets in Google Sheets

Erstellen Sie eine übersichtliche Teilnehmerliste pro Sitzung.

Die alleinige Nutzung des Antwort-Tabs ist nicht sehr praktisch, wenn man einen klaren Überblick darüber erhalten möchte, wer an welcher Sitzung teilnimmt. Daher ist es hilfreich, einen zusätzlichen Tab zu erstellen, der die Teilnehmer übersichtlich anzeigt. Teilnehmerliste pro Seminar die Sie dann sogar in Ihre Website einbetten können.

Erstellen Sie in demselben Google Sheets-Dokument ein neues Tabellenblatt und benennen Sie es beispielsweise „Teilnehmer“ oder „Registrierte“. Nutzen Sie die ersten Zeilen für einen aussagekräftigen Titel und eine kurze Einleitung, der eigentliche Inhalt beginnt jedoch einige Zeilen weiter unten mit den Überschriften.

In der Kopfzeile „Zeiten“ können Sie Spalten wie „Stunde“, „10:00–12:00“, „12:00–14:00“ usw. definieren. Darunter, in einer weiteren Zeile, fügen Sie die genaue Namen der Seminare Genau so, wie sie im Formular erscheinen, jedoch ohne den Text „verbleibende Plätze“. Diese Textübereinstimmung ist entscheidend, um herauszufinden, wem welche Reservierung gehört.

Nummerieren Sie in der ersten Spalte (A) die Zeilen von unten nach oben mit 1, 2, 3 usw. bis zur maximalen Teilnehmerzahl. Diese Zeilen repräsentieren die möglichen Plätze für jedes Seminar. Jede Zelle enthält horizontal den Namen einer Person, die sich für die jeweilige Veranstaltung angemeldet hat.

Der Schlüssel zum automatischen Ausfüllen dieser Namen liegt in der Kombination mehrerer Funktionen aus Google Tabellen: FILTER, REGEXMATCH, UNIQUE und IFERRORWir beginnen mit FILTER, mit dem Sie nur die Zeilen anzeigen können, die eine Bedingung basierend auf einer anderen Spalte erfüllen, zum Beispiel „zeige nur die Namen an, deren Seminar mit der Überschrift dieser Spalte übereinstimmt“.

In Ihrem Formular enthält der Text für die Seminaroption die Anzahl der verbleibenden Plätze, die ständig aktualisiert wird. Daher stimmt er nie exakt mit dem statischen Text in Ihrer Kopfzeile überein. Um dieses Problem zu lösen, verwenden wir REGEXMATCH, mit dem Sie prüfen können, ob eine Zelle Es enthält einen bestimmten Text. an beliebiger Stelle im Inhalt, selbst wenn sich andere Zeichen darum befinden.

Das typische Muster wäre etwa: REGEXMATCH(seminar_column, header). Wenn REGEXMATCH TRUE zurückgibt, bedeutet dies, dass das in der Antwort ausgewählte Seminar den Header-Text enthält, und FILTER behält diese Zeile bei. Selbst wenn die Antwort also „Seminar X (85 Plätze frei)“ anzeigt, liefert die Suche nach „Seminar X“ einen gültigen Treffer.

Es gibt noch ein weiteres häufiges Problem: Manche Leute versuchen sich anzumelden zweimal zum selben Seminar (entweder versehentlich oder absichtlich). Um zu verhindern, dass Duplikate in der Teilnehmerliste erscheinen, wird die FILTER-Funktion mit UNIQUE umschlossen, sodass jeder Name, der die Bedingung erfüllt, nur einmal angezeigt wird.

Wenn sich noch niemand für ein bestimmtes Seminar angemeldet hat, gibt die FILTER-Funktion normalerweise den Fehlerwert #NV zurück. Um diese unschöne Meldung in einer Tabelle zu vermeiden, die Sie auf Ihrer Website einbetten möchten, verwenden Sie die WENNFEHLER-Funktion um die gesamte Formel. Dadurch wird der Fehler ausgeblendet und die Zelle bleibt leer, solange keine Teilnehmer registriert sind.

Ermitteln Sie, wie viele Plätze belegt und wie viele noch frei sind.

Sobald Sie eine einigermaßen lesbare Teilnehmerliste haben, ist es an der Zeit, die KapazitätskontrollblattAnhand dessen ermittelt das Skript, ob in jeder Sitzung noch Platz vorhanden ist und wie viel davon im Text der Formularoptionen angezeigt werden soll.

Erstellen Sie in demselben Tabellenblatt ein weiteres Tabellenblatt und geben Sie ihm einen aussagekräftigen Namen, z. B. „Anzahl“ oder „Kapazität“. Listen Sie in Spalte A alle Seminare mit genau denselben Namen wie im Formular auf; diesmal können Sie optional auch die Uhrzeiten angeben.

An anderer Stelle im Tabellenblatt (z. B. in einer hervorgehobenen Zelle oben rechts) wird ein Wert definiert, der Folgendes darstellt: maximale Kapazität jeder Sitzung (zum Beispiel 100 Plätze). Anhand dieser Referenzzahl berechnen Sie, wie viele Plätze nach Abzug der bestätigten Reservierungen übrig bleiben.

Definieren Sie in Spalte B des Kontrollblatts eine Formel, die im Wesentlichen dasselbe leistet wie die Formel für die Teilnehmer, jedoch mit der Funktion COUNTA die Anzahl der Datensätze zählt. Durch die Kombination von COUNTA mit FILTER, REGEXMATCH, UNIQUE und IFERROR erhalten Sie die Gesamtzahl der eindeutigen Personen, die sich für jedes Seminar angemeldet haben, ohne Duplikate oder #NV-Fehler.

Exklusiver Inhalt – Klicken Sie hier  So gruppieren Sie Fotos in Google Docs

In Spalte C ist die Logik einfach: subtrahieren Sie die Anzahl der Teilnehmer (Spalte B) bei maximaler Kapazität (Die Zelle, die Sie für die Kapazität definiert haben). Diese Funktion gibt für jede Zeile in Spalte A (jedes Seminar) eine Zahl zurück, die die verbleibenden Plätze angibt. Ihr Skript verwendet diese Matrix, um zu entscheiden, welche Optionen mit welchem ​​Text angezeigt werden sollen.

Dieses Kontrollblatt aktualisiert sich automatisch, sobald im Formular-Tab eine neue Antwort eingeht. Sie müssen nichts manuell tun: Die Formeln übernehmen die Zählung im Hintergrund, während das System weiterhin Buchungen entgegennimmt.

Google Apps Script

Automatisieren Sie das Formular mit Google Apps Script

Die Komponente, die diese Baugruppe zu einer echten macht dynamisches Reservierungssystem Es handelt sich um Google Apps Script. Im Skripteditor, der mit dem Formular oder der Tabelle verknüpft ist, können Sie die Aktualisierung der Optionen und das Schließen des Formulars planen, sobald die Kapazität null erreicht.

Um den Editor zu öffnen, gehen Sie im Formular auf das Menü mit den drei vertikalen Punkten und wählen Sie „Skripteditor“. In der Tabelle finden Sie ihn unter „Tools > Skripteditor“. In beiden Fällen wird dasselbe mit dem Dokument verknüpfte Apps Script-Projekt geöffnet.

Die Idee ist, eine Hauptfunktion zu erstellen, die jedes Mal ausgelöst wird, wenn eine Antwort gesendet wird, etwa so: onFormSubmit()Diese Funktion muss die Datenmatrix vom Steuerungsreiter („Anzahl“) lesen, die Seminare mit Plätzen filtern, den Text der Formularoptionen aktualisieren und, falls keine mehr vorhanden sind, die Annahme von Antworten deaktivieren.

Zu Beginn des Skripts empfiehlt es sich, eine Reihe globaler Variablen zu deklarieren: die maximale Kapazität an Plätzen, die ID des Formulars, die ID des Sitzungselements, die ID der Tabelle, den Namen des Tabellenblatts mit den Kapazitätsdaten und den spezifischen Zellbereich, der den Namen des Seminars, die belegten Plätze und die verbleibenden Plätze enthält.

Um die Sitzungselement-ID Bei Multiple-Choice-Fragen kann eine kleine Hilfsfunktion geschrieben werden, die die Formularelemente durchläuft, deren Titel und IDs im Protokoll ausgibt und so den richtigen Wert findet. Dieser Wert wird dann kopiert und in der entsprechenden globalen Variable verwendet.

Es gibt einen wichtigen praktischen Aspekt: ​​Wenn Sie ein Formular absenden, benötigt Google einen kleinen Rand, um Trage die Antwort auf dem Blatt ein.Deshalb integrieren viele Entwickler eine benutzerdefinierte "Sleep"-Funktion, die einige hundert oder tausend Millisekunden wartet, bevor sie mit dem Lesen der Daten aus dem Tabellenblatt beginnt, um sicherzustellen, dass die neue Zeile bereits verfügbar ist.

Innerhalb von `onFormSubmit()` läuft der typische Ablauf wie folgt ab: Das Tabellenblatt wird anhand der ID geöffnet, der zugehörige Steuerelement-Tab anhand des Namens, der Datenbereich des Seminars wird gelesen und das Ergebnis in einem zweidimensionalen JavaScript-Array gespeichert. Anschließend wird das Formular erneut anhand der ID geöffnet und auf das Sitzungselement mithilfe der zuvor ermittelten ID zugegriffen.

Nachdem das Datenarray geladen wurde, wird in JavaScript ein Filter angewendet, der nur die Zeilen beibehält, in denen die Anzahl der verbleibenden Slots größer als null ist. Diese Menge stellt die Liste der noch verfügbaren Sitzungen dar. Ist das Ergebnis des Filters ein leeres Array, bedeutet dies, dass Alle Kurse sind ausgebucht.

Sind keine Termine mehr verfügbar, kann das Skript das Formular mit `FormApp.setAcceptingResponses(false)` schließen und einen benutzerdefinierten Text anzeigen, der den Benutzer darüber informiert, dass der Buchungszeitraum abgelaufen ist. Für den Benutzer erscheint das Formular mit Ihrer Benachrichtigung als „geschlossen“.

Sind noch Termine mit freien Plätzen vorhanden, durchläuft das Skript die gefilterten Zeilen und erstellt ein Array von Zeichenketten, das den Terminnamen mit der Anzahl der verfügbaren Plätze kombiniert, beispielsweise: „Seminar X – 32 Plätze verbleibend“. Dieses Array wird dann an die Methode `setChoiceValues` des `multipleChoiceItem` übergeben, sodass das Formular sofort aktualisiert wird.

Um schließlich sicherzustellen, dass die Funktion onFormSubmit() bei jeder Formularübermittlung ausgeführt wird, auslösen Im Menü „Bearbeiten > Aktuelle Projektauslöser“ des Apps Script-Editors können Sie die Funktion, die Ereignisquelle (aus dem Formular) und den Ereignistyp (beim Absenden des Formulars) auswählen. Dadurch wird Ihre Logik automatisch jedes Mal ausgelöst, wenn ein Benutzer eine Reservierung vornimmt.

Binden Sie das Formular und die Teilnehmerliste auf Ihrer Website ein.

Sobald das System funktioniert, sollten Sie es idealerweise in Ihr System integrieren. Website oder Intranet Damit Nutzer Ihre Website nicht verlassen müssen, um zu buchen. Google Forms und Google Sheets vereinfachen dies erheblich durch die Verwendung von Einbettungscode (iFrame).

Exklusiver Inhalt – Klicken Sie hier  Google Fotos Recap wurde mit mehr KI und Bearbeitungsoptionen aktualisiert.

Um das Formular einzubetten, klicken Sie im Bearbeitungsmodus auf „Absenden“ und wählen Sie das Einbettungssymbol (+<>"). Im Dialogfeld wird ein iFrame-Snippet mit der Formular-URL sowie Feldern zum Anpassen von Breite und Höhe angezeigt. Kopieren Sie diesen Code und fügen Sie ihn in den HTML-Code der Seite ein, auf der das Formular erscheinen soll.

Im Falle der Teilnehmerliste möchten Sie wahrscheinlich nur das Register anzeigen, auf dem sich die Liste sortiert nach SeminarenGehen Sie dazu in Google Tabellen auf „Datei > Im Web veröffentlichen“, wählen Sie „Einbetten“, den richtigen Tab und bestätigen Sie die Veröffentlichung. Google generiert dann einen weiteren iFrame, den Sie in Ihre Website einfügen können.

Möglicherweise müssen Sie die Breite und Höhe des iFrames manuell anpassen, damit er optimal in Ihr Seitendesign passt (z. B. 100 % Breite und eine großzügige Höhe, um übermäßiges Scrollen zu vermeiden). Es ist zwar nicht zwingend erforderlich, wirkt aber übersichtlicher, wenn Sie die Teilnehmerliste einbetten. in einem separaten Abschnitt von der Seite, optisch getrennt vom Buchungsformular. Sie können Buchungen auch synchronisieren mit Google Kalender für Benachrichtigungen und Erinnerungen.

In einigen Projekten wird diese Einbettung mit benutzerdefinierten CSS-Stilen kombiniert, sodass sich sowohl das Formular als auch das eingebettete Blatt besser in das Corporate Image der Website einfügen, obwohl die Inhalte weiterhin auf Google gehostet werden.

Implementieren Sie einen Buchungsserver mithilfe einer REST-API.

Über die rein interne Nutzung von Formularen und Tabellen hinaus bietet Google die Möglichkeit, Ihre Buchungen zu integrieren mit Aktionszentrum oder andere externe Systeme über Ihren eigenen Buchungsserver, der eine REST-API bereitstellt. Dieser Ansatz ist ideal, wenn Sie bereits ein Backend besitzen oder eine skalierbarere Architektur wünschen.

Die Idee ist, dass Google als Schnittstelle zum Nutzer fungiert (auf Mobilgeräten, im Web oder über andere Kanäle), und wenn der Nutzer eine Reservierung anfragt, ruft Google Ihre Adresse an. Buchungsserver Termine können in Echtzeit erstellt oder aktualisiert werden. Es gibt zwei Hauptvarianten: die Standardimplementierung (normale Termine/Reservierungen) und die Wartelistenimplementierung, die für ein spezifisches Pilotprogramm vorgesehen ist.

Die Standardimplementierung arbeitet mit zwei zentralen Ressourcen: dem „Space“ (einer Ressource wie einem Tisch, einem Zeitfenster oder einer Dienstleistung) und der „Reservierung“ (dem konkreten Termin für diesen Space). Ihr Server stellt unter anderem Methoden wie CreateBooking und UpdateBooking bereit, damit Google den Reservierungslebenszyklus für Sie verwalten kann.

Wenn ein Nutzer über die Google-Oberfläche eine Reservierung erstellt, sendet die Plattform Ihnen Daten wie beispielsweise Name, Nachname, Telefonnummer und E-Mail-AdresseAus Sicht Ihres Systems handelt es sich um einen Gastkauf bzw. eine Gastbuchung, da das Actions Center keinen Zugriff auf die internen Konten Ihrer Plattform hat und Sie nicht davon ausgehen sollten, dass dieser Benutzer bereits in Ihrer Datenbank existiert.

Sie sind dafür verantwortlich, dass die in Ihrem Backend erfasste Buchung mit allen anderen Buchungen übereinstimmt, die über Ihre eigenen Kanäle (Website, App, Telefon usw.) generiert wurden. Wenn Ihre internen Buchungen Bestätigungs-E-Mails, Standortnummern oder bestimmte Statusmeldungen generieren, muss auch die über Google erstellte Buchung konsistent sein. folgen genau derselben Logik um Inkonsistenzen zu vermeiden.

Vor Produktionsbeginn ist es unerlässlich, ein System einzurichten. Testserver oder Sandbox Verbinden Sie es mit der Testumgebung des Actions Centers. Erst nachdem Sie überprüft haben, dass alle Methoden korrekt reagieren (einschließlich Fehlersituationen), sollten Sie den Produktionsendpunkt konfigurieren und ihn echten Benutzern zugänglich machen.

Google veröffentlicht Dienstdefinitionen im Proto-Format, die Sie herunterladen können, um die API-Implementierung zu beschleunigen, egal ob in Node.js, Java oder anderen unterstützten Sprachen. Es gibt auch Beispiel-Serverschemata, die die erforderlichen REST-Methoden simulieren und als Vorlage dienen können.

Zusammenfassend lässt sich sagen, dass Sie mit kostenlosen Google-Tools ein [System/eine Plattform] einrichten können. überraschend leistungsstarkes Reservierungssystem: ein Formular, das nur Sitzungen mit verfügbaren Plätzen anzeigt, eine Tabelle, die die Teilnehmer zählt und die verbleibende Kapazität berechnet, ein Skript, das die Optionen aktualisiert und das Formular schließt, wenn es voll ist, und, falls erforderlich, ein REST-Buchungsserver, der sicher, idempotent und mit guter Fehlerbehandlung mit dem Google Actions Center kommuniziert, wodurch Sie dem, was viele spezialisierte kommerzielle Plattformen bieten, sehr nahe kommen.

Verwandter Artikel:
Wie kann ich meine Immobilienbuchungen zu Google Trips übertragen?