The operation failed with an error. [400] Invalid requests[0]...
Der Text nach requests[0] ist entscheidend. Er nennt die Aktion, das Feld oder den Index, den Google abgelehnt hat. Die 0 bezeichnet den ersten Eintrag in Googles Anfrage-Array, nicht eine Make-Modulnummer und nicht die Zeilennummer einer Tabelle.
Reduziere den fehlgeschlagenen Inhalt auf eine Anfrage an eine Testdatei. Wiederhole nicht den vollständigen produktiven Batch, während du mehrere Felder gleichzeitig änderst.
1. Einen von drei Endpunkten bestimmen
Diese Pfade sehen ähnlich aus, akzeptieren aber unterschiedliche Inhalte:
| Aufgabe | Google-Endpunktsuffix | Oberste Struktur |
|---|---|---|
| Text in einem Google Doc ersetzen oder bearbeiten | /v1/documents/DOCUMENT_ID:batchUpdate | requests mit Docs-Aktionen |
| Sheets-Struktur, Formatierung oder typisierte Zellen ändern | /v4/spreadsheets/SPREADSHEET_ID:batchUpdate | requests mit Sheets-Aktionen |
| Werte in Sheets-Bereiche schreiben | /v4/spreadsheets/SPREADSHEET_ID/values:batchUpdate | valueInputOption und data |
Offizielle Referenzen: Docs batchUpdate, Sheets batchUpdate, Sheets values.batchUpdate.
Für gewöhnliche Werte in A2:B2 verwendest du den values-Endpunkt. Für typisierte userEnteredValue-Werte oder Formatierung brauchst du einen strukturellen Sheets-requests-Batch. Für Dokumenttext brauchst du Docs-Anfragen. Die Inhalte sind nicht austauschbar.
2. Basis-URL des Make-Moduls prüfen
Für Docs verwendest du Google Docs › Make an API Call. Dessen URL ist relativ zu https://docs.googleapis.com/. Trage ein:
/v1/documents/DOCUMENT_ID:batchUpdate
Für Sheets verwendest du Google Sheets › Make an API Call. Dessen URL ist relativ zu https://sheets.googleapis.com/v4/. Trage einen dieser Pfade ein:
/spreadsheets/SPREADSHEET_ID:batchUpdate
/spreadsheets/SPREADSHEET_ID/values:batchUpdate
Setze Method auf POST und sende JSON mit Content-Type: application/json. Die App-Verbindung liefert die Autorisierung; füge keinen fremden Bearer-Token ein. Basis-URLs und Verbindungsverhalten stehen in den Referenzen zu Google Docs und Google Sheets.
Ersetze die großgeschriebenen ID-Platzhalter durch IDs von Testdateien. Prüfe die aufgelöste Eingabe der fehlgeschlagenen Ausführung. Ein konfiguriertes Feld kann richtig aussehen, während sein zugeordneter Wert leer ist oder zu einer anderen Datei gehört.
3. Eine feste Docs-Textersetzung nachweisen
Erstelle ein Testdokument mit NAME_SLOT. Verwende diesen Inhalt zunächst ohne Formularzuordnungen:
{
"requests": [
{
"replaceAllText": {
"containsText": {
"text": "NAME_SLOT",
"matchCase": true
},
"replaceText": "Jamie Quinn"
}
}
]
}
Lies danach das gespeicherte Dokument. Der fiktive Name muss den Marker ersetzt haben. NAME_SLOT ist absichtlich einfacher Text: Das Beispiel setzt keine Interpretation von {{...}} als Make-Vorlagensyntax voraus.
Ersetze den festen Namen erst nach einem erfolgreichen Test durch eine Antwortzuordnung. Funktioniert die feste Version, aber die zugeordnete nicht, vergleiche die endgültigen JSON-Inhalte. Anführungszeichen oder Zeilenumbrüche können manuell zusammengesetztes JSON beschädigen.
Verwende JSON › Create JSON mit passender Datenstruktur für zugeordnete Anfragen; siehe Make JSON. Gültige JSON-Syntax beweist noch nicht, dass Googles Aktionsfelder richtig sind.
4. Ein Sheets-Wertupdate getrennt prüfen
Erstelle eine Testtabelle mit einem Blatt namens Intake. Verwende /values:batchUpdate und diesen Inhalt:
{
"valueInputOption": "RAW",
"data": [
{
"range": "'Intake'!A2:B2",
"values": [["Jamie Quinn", 1234.56]]
}
]
}
Der Name ist ein JSON-Text, der Betrag eine JSON-Zahl. Der Bereich verwendet den Titel des Blatts. data bleibt ein Array, values ein Array von Zeilen. Umschließe diesen Inhalt nicht mit requests und füge keine Docs-replaceAllText-Aktion ein.
Prüfe nach dem Aufruf A2 und B2. Ein erfolgreicher Aufruf an die falsche Datei ist für dein Szenario trotzdem ein fehlgeschlagener Test.
5. Typisierte Zellen und Feldmasken prüfen
Für Sheets updateCells verwendest du den strukturellen batchUpdate-Endpunkt. Dieses Beispiel schreibt zwei Zellen ab A2:
{
"requests": [
{
"updateCells": {
"start": {
"sheetId": 12345,
"rowIndex": 1,
"columnIndex": 0
},
"rows": [
{
"values": [
{"userEnteredValue": {"stringValue": "Jamie Quinn"}},
{"userEnteredValue": {"numberValue": 1234.56}}
]
}
],
"fields": "userEnteredValue"
}
}
]
}
12345 ist eine beispielhafte Blatt-ID. Ersetze sie durch die tatsächliche numerische sheetId. Die Spreadsheet-ID der Datei ist ein anderer Identifikator.
Die Sheets-Anfragereferenz beschreibt start oder range sowie die zu CellData relative Feldmaske. Die Datentypreferenz definiert numerisches numberValue und nullbasierte Indizes. A2 entspricht Zeilenindex 1 und Spaltenindex 0.
Halte den Test eng begrenzt. Ein großer range mit zu wenigen Daten kann maskierte Felder im restlichen Bereich leeren. Verwende nicht fields: "*", um Unsicherheit über die beabsichtigten Felder zu kaschieren.
Häufige Fehler und passende Korrekturen
Ein Feld gehört zur anderen API
Eine Docs-Aktion funktioniert nicht in einem Sheets-requests-Batch. Vergleiche den abgelehnten Aktionsnamen mit der Referenz des tatsächlich aufgerufenen Endpunkts. Baue dessen kleinstmöglichen gültigen Inhalt.
numberValue enthält formatierten Text
"numberValue": "€1.234,56" ist Text, keine JSON-Zahl. Parse den Betrag zuerst anhand eines festgelegten Formats. Sende 1234.56 als Zahl nur, wenn das der beabsichtigte Wert ist. Halte die Währung getrennt. Siehe Ungültige Zahlen in Formularantworten.
Die Blatt-ID ist falsch
Lies die Metadaten der Datei und ordne den Blatttitel der numerischen sheetId zu. Die Position eines Blatts in der Oberfläche ist nicht seine ID. Wurde ein Blatt neu erstellt, aktualisiere die Metadaten statt einer alten ID zu vertrauen.
Ein Index liegt außerhalb des aktuellen Dokuments
Lies vor indexbasierten Dokumentaktionen die aktuelle Struktur. Für einfache Marker beginne mit einem nachgewiesenen replaceAllText-Aufruf, bevor du indexbasierte Bearbeitung ergänzt.
Das Dokument hat mehrere Tabs
Googles Leitfaden zu Dokument-Tabs erklärt, dass replaceAllText ohne Tabs-Kriterien alle Tabs betreffen kann. Begrenze die Ersetzung, wenn derselbe Marker an mehreren Stellen vorkommt.
Eine verlangte Revision ist veraltet
Bei writeControl.requiredRevisionId musst du mit der aktuellen Dokumentrevision vergleichen. Die Docs-API kann einen Batch mit veralteter Pflichtrevision ablehnen. Lies erneut. Den Konkurrenzschutz ungeprüft zu entfernen ist keine Reparatur.
Retry scheitert weiterhin
Unveränderter fehlerhafter Inhalt bekommt durch Wiederholen kein gültiges Schema. Bewahre die Eingabe auf, korrigiere einen Fehler und teste ein entbehrliches Ziel. Überspringe die Schreibaktion nicht, um das Dokument anschließend als aktualisiert zu behandeln.
Credits und Folgen eines fehlgeschlagenen Batchs
Ein ausgeführtes gewöhnliches API-Modul entspricht einer Planungsschätzung von einem Credit. Lesen plus Schreiben ergibt zwei. Mehrere Teilanfragen in einem HTTP-Aufruf bleiben ein Make-Modullauf. Prüfe den Verlauf; siehe Make Credits.
Docs- und Sheets-requests-Batches validieren vor der Anwendung. Ein ungültiger Eintrag verhindert die Änderungen dieses Batchs. Das macht aber keine Datei rückgängig, die ein früheres Make-Modul erstellt hat, und entfernt keine zuvor hinzugefügte Zeile. Prüfe diese Ausgaben vor einem kompletten Neustart.
Tests
- Vollständigen Fehlersuffix und aufgelöste Eingabe sichern.
- API, Pfad, Methode und Ziel-ID bestätigen.
- Eine feste Anfrage an eine Testdatei senden.
- Ziel lesen und genau geänderten Text oder Zellen prüfen.
- Einen festen Wert durch eine Zuordnung ersetzen und den Inhalt vergleichen.
- Satzzeichen und das vereinbarte Zahlenformat testen.
- Weitere Teilanfragen einzeln ergänzen und nach jeder Änderung prüfen.
Stoppe bei der ersten neu hinzugefügten Anfrage, die scheitert. Ordne Anfragen nicht nur um, damit sich der gemeldete Index verschiebt.
Einfachere Formularannahme verwenden, wenn sie passt
Wenn deine Aufgabe Formular-Leads in Sheets und eine Slack-Benachrichtigung ist, beginne mit Flowpajas kostenloser Lead Capture → Sheets + Slack-Vorlage. Das ist ein eigener Annahmeablauf, keine Reparatur eines beliebigen batchUpdate-Inhalts.
Noch kein Make-Konto? Kostenloses Make-Konto erstellen: affiliate link. Flowpaja kann eine Provision erhalten, ohne zusätzliche Kosten für dich.