So verbindest du Google Sheets mit deiner App
Um Google Sheets mit deiner App zu verbinden, aktivierst du die Google Sheets API in einem Google-Cloud-Projekt, legst ein Dienstkonto an, teilst die Tabelle mit der E-Mail-Adresse des Dienstkontos und speicherst dessen Schlüssel als serverseitiges Geheimnis. Dein Server liest Zeilen dann mit spreadsheets.values.get und fügt Zeilen mit spreadsheets.values.append hinzu. Wenn Nutzer ihre eigenen Tabellen verbinden sollen, nimm stattdessen OAuth. Ist die Tabelle vollständig öffentlich, reicht zum Lesen ein einfacher API-Schlüssel.
Dieser Leitfaden zeigt, welche Methode passt, welche Aufrufe du brauchst, welche Kontingente und Stolperfallen es gibt und welche Prompts du an einen KI-App-Builder geben kannst. Die Angaben zu Google stammen aus der Entwicklerdokumentation von Google, Stand September 2026.
Warum überhaupt eine Tabelle anbinden
Häufige Gründe:
- Den Workflow des Teams beibehalten. Die Mitarbeitenden bearbeiten weiter eine Preisliste oder einen Dienstplan in Sheets, und die App zeigt sie an.
- Daten dort sammeln, wo Menschen ohnehin schauen. Neue Anmeldungen, Bestellungen oder Formularantworten landen als Zeilen.
- Auswertungen. Exportiere Appdaten in eine Tabelle für Menschen, die mit Tabellen arbeiten.
- Ein Zwischenschritt. Starte mit der Tabelle und wechsle später zu einer richtigen Datenbank. Siehe wie du eine Tabelle in eine App verwandelst.
Wähle, wie sich deine App bei Google anmeldet
Googles Anleitung zu Anmeldedaten beschreibt drei Typen:
| Anmeldedaten | Worauf es Zugriff hat | Am besten für |
|---|---|---|
| API-Schlüssel | Nur öffentlich verfügbare Daten, etwa Dateien mit „Jeder mit dem Link“ | Eine öffentliche Tabelle lesen |
| Dienstkonto | Daten, die deiner App gehören, oder bestimmte Dateien, die mit der E-Mail des Dienstkontos geteilt sind | Deine App liest und schreibt deine Tabellen |
| OAuth-Client-ID | Die eigenen Dateien eines Nutzers, nachdem er zugestimmt hat | Jede Nutzerin oder jeder Nutzer verbindet die eigenen Tabellen |
Für die meisten Apps ist ein Dienstkonto die richtige Wahl: eine Anmeldung, die dir gehört, mit Zugriff nur auf die Tabellen, die du ausdrücklich damit teilst.
Schritt für Schritt mit einem Dienstkonto
- Lege ein Google-Cloud-Projekt an oder wähle eins aus und aktiviere die Google Sheets API.
- Lege ein Dienstkonto und einen Schlüssel dafür an. Der Schlüssel ist eine JSON-Datei. Behandle sie wie ein Passwort.
- Teile die Tabelle mit der E-Mail-Adresse des Dienstkontos, als Betrachter für reinen Lesezugriff oder als Bearbeiter zum Schreiben. Laut Googles Anleitung geschieht das über den üblichen Freigabedialog.
- Speichere den Schlüssel als Geheimnis auf deinem Server, etwa als
GOOGLE_SERVICE_ACCOUNT_JSON, und die Tabellen-ID (die lange Zeichenfolge in der URL der Tabelle) alsSHEET_ID. - Rufe die API vom Server aus auf mit der Client-Bibliothek von Google für deine Sprache.
- Cache Lesezugriffe, wenn viele Besucher dieselben Daten sehen, damit du das Kontingent nicht ausschöpfst.
Die Aufrufe, die du brauchst
Aus Googles Anleitung zum Lesen und Schreiben von Werten:
| Methode | Was sie tut |
|---|---|
spreadsheets.values.get | Liest einen Bereich, etwa Leads!A1:E |
spreadsheets.values.batchGet | Liest mehrere Bereiche in einer Anfrage |
spreadsheets.values.update | Schreibt in einen bestimmten Bereich |
spreadsheets.values.append | Hängt Zeilen unter die vorhandenen Daten einer Tabelle |
Bereiche verwenden die A1-Notation. Google weist darauf hin, dass ein Bereich ohne Blattnamen, etwa A1:B2, für das erste Blatt gilt. Nenne deshalb den Tab ausdrücklich, damit es nicht überrascht, wenn jemand die Tabs umsortiert.
RAW vs. USER_ENTERED
Beim Schreiben brauchst du eine valueInputOption:
- RAW speichert genau das, was du sendest, als Text.
=1+2wird als Text=1+2gespeichert. - USER_ENTERED behandelt die Eingabe, als wäre sie in Sheets getippt: Datumsangaben werden zu Datumswerten und
=1+2wird zu einer Formel.
Wenn du Text schreibst, den Nutzer in deiner App eingegeben haben, verwende RAW. Mit USER_ENTERED könnte jemand eine Formel abschicken, die läuft, sobald eine Kollegin oder ein Kollege die Tabelle öffnet.
Kontingente und Fehler
Laut Googles Seite zu den Limits der Sheets-API (Stand September 2026) gilt:
| Limit | Leseanfragen | Schreibanfragen |
|---|---|---|
| Pro Minute und Projekt | 300 | 300 |
| Pro Minute, pro Nutzer und Projekt | 60 | 60 |
Es gibt kein Tageslimit, solange du die Kontingente pro Minute einhältst. Wird ein Limit überschritten, kommt 429: Too many requests. Google empfiehlt exponentielles Backoff mit gekürzten Wartezeiten: Du wartest nach jedem fehlgeschlagenen Versuch länger, mit einer zufälligen Verzögerung, bis zu einem Maximum. Eine einzelne Anfrage, die länger als 180 Sekunden dauert, läuft in ein Timeout.
In der Praxis heißt das: Ruf die API nicht bei jedem Seitenaufruf auf. Cache die Daten der Tabelle mindestens eine Minute, bündle Lesezugriffe mit batchGet und bündle Schreibzugriffe, wo es geht.
Optionen und Abwägungen
| Ansatz | Vorteile | Nachteile |
|---|---|---|
| Tabelle als aktive Datenquelle | Mitarbeitende arbeiten in einem vertrauten Werkzeug; keine Adminmasken nötig | Kontingente, keine Berechtigungen pro Zeile, leicht kaputtzumachen, wenn eine Spalte umbenannt wird |
| Tabelle in eine Datenbank synchronisieren | Schnelle, zuverlässige Lesezugriffe; die App läuft weiter, wenn Sheets ausfällt | Du brauchst einen Synchronisationsjob und eine Regel, welche Seite gewinnt |
| Datenbank zuerst, Export in die Tabelle | Die App besitzt die Daten; die Tabelle ist ein Bericht | Änderungen in der Tabelle fließen nicht zurück |
| Automatisierungstool dazwischen | Kein Code für einfache Abläufe | Ein weiteres Abo; schwieriger zu debuggen |
Bei allem mit vielen Nutzern oder sensiblen Daten ist eine Datenbank die bessere Quelle der Wahrheit. Siehe was eine Datenbank ist.
Prompts für deinen KI-Builder
Eine Tabelle lesen:
Zeige den Tab „Menü“ unserer Google-Tabelle auf der Menüseite. Nutze die Google Sheets API vom Server aus mit einem Dienstkonto, dessen JSON-Schlüssel im Geheimnis GOOGLE_SERVICE_ACCOUNT_JSON steht, und die Tabellen-ID in SHEET_ID. Lies den Bereich Menü!A2:D (Name, Beschreibung, Preis, Kategorie). Speichere das Ergebnis 5 Minuten im Cache. Wenn die API fehlschlägt, zeige die zuletzt gecachte Version. Schicke den Schlüssel niemals an den Browser.
Zeilen schreiben:
Wenn jemand das Kontaktformular abschickt, speichere es in unserer Datenbank und hänge zusätzlich eine Zeile im Tab „Leads“ an (Datum, Name, E-Mail, Nachricht) über spreadsheets.values.append mit valueInputOption RAW. Wenn Google 429 zurückgibt, wiederhole mit exponentiellem Backoff; schlägt es weiterhin fehl, bewahre den Lead in der Datenbank auf und versuche es später erneut.
Typische Fehler
- Vergessen, die Tabelle mit der E-Mail des Dienstkontos zu teilen. Die API liefert dann einen Berechtigungsfehler, obwohl der Schlüssel stimmt.
- Schlüssel im Frontend oder im Repository. Der JSON-Schlüssel gewährt Zugriff auf jede Tabelle, die mit ihm geteilt ist. Siehe wie du API-Schlüssel sicher aufbewahrst.
- USER_ENTERED für Nutzereingaben verwenden, was Formel-Injection ermöglicht.
- Die API bei jeder Anfrage aufrufen und beim ersten Traffic-Anstieg das Kontingent pro Minute erreichen.
- Auf Spaltenpositionen vertrauen. Jemand fügt eine Spalte ein, und die App liest die falschen Daten. Lies die Kopfzeile und ordne nach Namen zu, oder sperre die Kopfzeile.
- Die Tabelle weiter freigeben als nötig. „Jeder mit dem Link“ macht sie öffentlich.
- Eine Tabelle als Mehrbenutzer-Datenbank nutzen. Gleichzeitige Schreibzugriffe und fehlende Berechtigungen führen zu verlorenen oder offengelegten Daten.
Checkliste
- Sheets-API aktiviert; Dienstkonto angelegt
- Tabelle mit der E-Mail des Dienstkontos mit der minimal nötigen Rolle geteilt
- Schlüssel und Tabellen-ID als serverseitige Geheimnisse gespeichert
- Alle Aufrufe laufen über den Server
- Tab-Namen in den Bereichen verwendet
- RAW für vom Nutzer eingegebenen Text
- Lesezugriffe gecacht; 429 mit Backoff behandelt
- Die App funktioniert eingeschränkt, wenn Sheets nicht erreichbar ist
- Entschieden, welche Seite die Quelle der Wahrheit ist
Google Sheets in Mythex
Mythex bietet zwei verschiedene Wege, mit Tabellen zu arbeiten. Konnektoren verbinden dein Google-Konto mit Mythex, damit der Agent es beim Bauen nutzen kann, etwa um eine Tabelle zu lesen und daraus ein Dashboard zu bauen. Laut Dokumentation bleibt die Zugangsdaten beim Verbindungsdienst von Mythex und landet nie in deinem Code. Bestätige jede Berechtigung, die Google verlangt (siehe Konnektoren). Damit die veröffentlichte App selbst eine Tabelle lesen oder schreiben kann, ist der zuverlässige Weg der in dieser Anleitung beschriebene: ein Dienstkonto-Schlüssel als Projektgeheimnis und Aufrufe der Sheets-API vom Server aus, wie in Beliebige API einbinden. Wenn du der Tabelle entwachsen bist, bitte den Agenten, die Daten in die Projektdatenbank zu verschieben und ein Dashboard darauf zu bauen.
Fragen
Wie kann meine App ein privates Google Sheet lesen?
Der übliche Weg ist ein Google-Cloud-Dienstkonto: Aktiviere die Sheets-API, lege das Dienstkonto und seinen Schlüssel an und teile die Tabelle dann mit der E-Mail-Adresse des Dienstkontos als Betrachter oder Bearbeiter. Dein Server nutzt den Schlüssel, der als Geheimnis gespeichert ist, für die Aufrufe an die Sheets-API.
Kann ich einen Google-API-Schlüssel nutzen, um auf eine Tabelle zuzugreifen?
Nur für öffentliche Daten. Googles Anleitung zu Anmeldedaten sagt, dass API-Schlüssel für anonymen Zugriff auf öffentlich verfügbare Daten gedacht sind, etwa Dateien, die für jede Person mit dem Link freigegeben sind. Private Tabellen brauchen ein Dienstkonto oder OAuth.
Welche Limits hat die Google-Sheets-API?
Laut Google gelten (Stand September 2026) 300 Lese- und 300 Schreibanfragen pro Minute und Projekt sowie 60 Lese- und 60 Schreibanfragen pro Minute, pro Nutzer und Projekt, ohne Tageslimit. Bei Überschreitung kommt ein 429-Fehler; Google empfiehlt exponentielles Backoff mit gekürzten Wartezeiten.
Sollte ich Google Sheets als Datenbank meiner App nutzen?
Das funktioniert für kleine Apps mit wenig Traffic, bei denen Menschen die Daten auch direkt in der Tabelle bearbeiten. Bei vielen Nutzern, häufigen Schreibzugriffen, Beziehungen zwischen Datensätzen oder Berechtigungen pro Nutzer ist eine echte Datenbank zuverlässiger. Du kannst weiterhin in eine Tabelle exportieren.