DataError: Invalid number in parameter
Value must be a number
Öffne die fehlgeschlagene Ausführung und prüfe die tatsächliche Eingabe des Parameters. Eine Antwort kann im Formular wie eine Zahl aussehen, aber als Text, formatierter Währungsbetrag, leerer Wert oder vollständiges Antwortobjekt ankommen. Diese Fälle brauchen unterschiedliche Korrekturen.
Halte beim Testen die ursprüngliche Antwort neben dem umgewandelten Wert fest. Wird 1,234 in die falsche Größenordnung umgewandelt, macht ein grünes Modulsymbol das Ergebnis nicht richtig.
1. Den Parameter finden, der eine Zahl erwartet
Beginne beim fehlgeschlagenen Modul, nicht bei jeder Formularfrage. Notiere den Parameternamen und prüfe den Typ des zugeordneten Werts. Makes Datentypreferenz unterscheidet Number, Text und Collection. Passt die Eingabe nicht zum erwarteten Typ, kann die Validierung scheitern.
Bei Budget, Menge oder API-numberValue verfolgst du genau diesen Wert bis zur Einsendung zurück. Bei einem Zeilenindex oder anderen Identifikator musst du den richtigen Identifikator zuordnen. Wandle nicht irgendeine Formularantwort um, um eine falsche Zuordnung zu verdecken.
Wähle innerhalb eines Frageobjekts die einzelne Antwort. Eine Collection mit Beschriftung und Antwort ist nicht die Antwortzahl. Eine Auswahl wie 10k+ ist eine Kategorie, kein exakter Betrag.
Mit Tools › Set variable kannst du den umgewandelten Wert vor einer nachfolgenden Schreibaktion sichtbar machen. Setze diese Diagnose nach die Eingabeprüfungen. Scheitert schon die Umwandlung, gibt es keine Ausgabe, die spätere Module prüfen könnten.
2. Format vor der Formel festlegen
Entscheide, welche Eingaben das Formular akzeptiert:
| Eingabevertrag | Beispiel | Beabsichtigter Zahlenwert |
|---|---|---|
| Dezimalpunkt, keine Gruppierung | 1234.56 | 1234.56 |
| Dezimalkomma, keine Gruppierung | 1234,56 | 1234.56 |
| US-Gruppierung und Dezimalpunkt | 1,234.56 | 1234.56 |
| Punktgruppierung und Dezimalkomma | 1.234,56 | 1234.56 |
| Leerzeichengruppierung und Dezimalkomma | 1 234,56 | 1234.56 |
Das sind vereinbarte Beispiele, keine Regeln zum Erraten des Herkunftsformats. 1,234 kann eintausendzweihundertvierunddreißig oder eine Dezimalmenge bedeuten. Verwende ein eindeutiges Zahlenfeld oder den ausdrücklich festgelegten Eingabevertrag des Formulars.
Erfasse die Währung getrennt. Das Entfernen von $ oder € rechnet keine Währung um. Lege auch fest, ob negative Werte, Nachkommastellen und null erlaubt sind. Erfolgreiches Parsen ist nur der erste Validierungsschritt.
3. parseNumber() für einfachen Zahlentext verwenden
Make dokumentiert parseNumber(number; decimal separator) in der Referenz der mathematischen Funktionen. Wähle das Dezimaltrennzeichen der Eingabe:
{{parseNumber("1234.56"; ".")}}
{{parseNumber("1234,56"; ",")}}
Wähle bei zugeordnetem Text den tatsächlichen Antworttoken im Mapping-Panel. 1.amount ist in den folgenden Beispielen ein illustrativer Texttoken, kein zugesicherter Feldpfad deines Formulars:
{{parseNumber(trim(1.amount); ".")}}
Verwende das nur bei vereinbartem Dezimalpunkt ohne Währung oder Gruppierung. Liefert der Trigger bereits einen Number-Wert, kannst du diesen passenden Wert direkt zuordnen.
Verwende formatNumber() für die Anzeige in E-Mail oder Slack. Ein Text wie 1,234.56 ist nicht dasselbe wie eine Zahl. Erstelle den Anzeigetext getrennt, nachdem die numerische Schreibaktion funktioniert.
4. Bekannte Gruppierungen und Währungen normalisieren
Ist die Eingabe als US-Gruppierung validiert, entferne Gruppierungskommas und parse den Dezimalpunkt:
{{parseNumber(replace(trim(1.amount); "/,/g"; ""); ".")}}
Bei validierter Punktgruppierung mit Dezimalkomma:
{{parseNumber(replace(trim(1.amount); "/[.]/g"; ""); ",")}}
Bei validierter Gruppierung durch gewöhnliche Leerzeichen und Dezimalkomma:
{{parseNumber(replace(trim(1.amount); "/ /g"; ""); ",")}}
Das Flag g ersetzt alle passenden Gruppierungszeichen. trim() entfernt äußere Leerzeichen. Syntax und Regex-Ersetzung stehen in Makes Text- und Binärfunktionen.
Baue daraus keine Formel, die jeden Trenner entfernt. Das Entfernen des Kommas aus 1234,56 verändert den Betrag. Entferne auch nicht alle Nichtziffern: Dabei gehen Dezimaltrennzeichen und möglicherweise das Minuszeichen verloren.
Für ein Formular, das ausdrücklich ein einzelnes Dollarzeichen bei US-Beträgen erlaubt:
{{parseNumber(replace(trim(replace(1.amount; "$"; "")); "/,/g"; ""); ".")}}
Teste $1,234.56 und $ 1,234.56. Verwende diese Regel nicht für gemischte Währungen, „ungefähr“ oder beliebig platzierte Symbole. Besser sind getrennte Felder für Betrag und Währung.
5. Leere Werte vor der Umwandlung behandeln
Wähle eine Regel und richte den Pfad danach aus:
- Pflichtbetrag: Bei fehlender Antwort keine Schreibaktion ausführen. Formularvalidierung korrigieren oder den Datensatz zur Prüfung weiterleiten.
- Optionaler Betrag: Den Wert entsprechend dem Verhalten des Zielfelds fehlen lassen. Eine leere Zeichenfolge ist kein Betrag. Unterstützte Make-Update-Module überspringen leere Werte üblicherweise;
erasedient dem bewussten Leeren eines Felds. Prüfe das beim konkreten Zielmodul. - Standardwert null: Nur verwenden, wenn eine ausgelassene Antwort nach der Geschäftsregel tatsächlich null bedeutet.
Für die dritte Regel bei Dezimalpunkt ohne Währung oder Gruppierung:
{{parseNumber(ifempty(trim(1.amount); "0"); ".")}}
Makes allgemeine Funktionen beschreiben ifempty() als Ersatz für einen leeren Wert. Es ist kein Ausnahmehandler. Ein vorhandenes TBD muss weiterhin abgelehnt oder geprüft werden.
Prüfe leere Werte vor dem Modul mit parseNumber(). Ein Filter nach einer fehlgeschlagenen Umwandlung kommt zu spät.
Häufige Fehler
Sheets nimmt den Wert an, aber das nächste Modul scheitert
Google Sheets › Add a Row kann einen sichtbaren Betrag speichern, ohne dessen Typ für spätere Schritte zu beweisen. Prüfe das ausgelesene Bündel und die Eingabe des nächsten Moduls. Parse an der Grenze, die eine Zahl erwartet.
Das Budget lautet 10k+
Das ist eine Bereichsbezeichnung. Ordne sie einer Kategorie zu, falls das Ziel eine Kategorie erwartet. Wird ein exakter Betrag benötigt, erfasse ihn. Verwandle „mindestens“ nicht stillschweigend in eine exakte Zusage.
Kommas funktionieren in einem Formular, im anderen nicht
Vergleiche die Eingabeverträge. Gruppierungskomma und Dezimalkomma sind verschieden. Behalte getrennte Normalisierungsregeln oder stelle beide Formulare auf ein gemeinsames eindeutiges Format um.
Ein Betrag mit Leerzeichen scheitert weiterhin
Prüfe das konkrete Zeichen zwischen den Gruppen. Gewöhnliches, geschütztes und schmales Leerzeichen sind unterschiedliche Zeichen. / /g trifft nur gewöhnliche Leerzeichen. Reproduziere den Originaltext und begrenze das Formular oder normalisiere genau den erlaubten Trenner.
Parsen klappt, aber die API lehnt den Betrag ab
Prüfe Serialisierung und Feldgrenzen. Für ein Google-Sheets-API-numberValue muss eine JSON-Zahl wie 1234.56 übermittelt werden, nicht der Text "1234.56"; siehe ExtendedValue. Bei Batch-Updates hilft der [Leitfaden zu Invalid requests[0] 400](https://flowpaja.com/guides/make-google-docs-sheets-invalid-requests-400/).
Retry ergibt denselben Fehler
Eine unveränderte ungültige Antwort bleibt ungültig. Korrigiere Eingabe oder Umwandlung vor dem Wiederholen. Makes Fehlerhilfe nennt ungültige Eingabetypen und Funktionen als mögliche DataError-Ursachen. Überspringe die Schreibaktion nicht, um danach den Betrag als gespeichert zu melden.
Credits pro Lauf
Bei einem gewöhnlichen Trigger und einer gewöhnlichen Schreibaktion ergeben zwei ausgeführte Module eine Schätzung von zwei Credits. Inline-Mappingfunktionen verursachen keinen zusätzlichen Modullauf. Diagnosemodule, Suchen und Wiederholungen verändern die Summe. Vergleiche mit dem Verlauf; siehe Make Credits.
Tests
Verwende fiktive Beträge in einem Testziel. Notiere je Fall Originaltext, vereinbartes Format, Ergebniswert und Zieltyp:
1234.56mit der Dezimalpunktregel.1234,56mit der Dezimalkommaregel.1,234.56und1,234,567.89mit US-Gruppierung.1.234,56mit Punktgruppierung und Dezimalkomma.$ 1,234.56ausschließlich im Dollarzeichenpfad.- Leerfeld, Leerzeichen, null und
TBDeinzeln: Leerfeldregel und Ablehnung prüfen. - Erlaubter negativer Wert und Wert außerhalb der Zielgrenzen.
- Anführungszeichen oder vollständige Antwort-Collection: Keines darf unbemerkt zu einer plausiblen Zahl werden.
Prüfe die Eingabe des letzten Moduls, nicht nur eine formatierte Vorschau. Der Test scheitert, wenn ein Leerfeld zu erfundener null wird, eine Dezimalzahl die Größenordnung wechselt oder eine Währungsangabe ohne erhaltene Bedeutung verschwindet.
Dieselbe Sorgfalt bei der Lead-Annahme
Für Google-Forms-Leads nach HubSpot und Slack gibt es Flowpajas Lead Router für 19 USD. Die Produktseite beschreibt eine Einschränkung bei der Zuordnung von Budgetoptionen. Das ist ein eigener Google-Forms-Ablauf, kein universeller Parser für freie Betragstexte.
Bei Typeform-Antworten kann eine hohe Budgetoption einen Slack-Hinweis auslösen. Auch dort muss die Auswahl als vereinbarte Kategorie behandelt werden, nicht als geratener exakter Betrag.
Noch kein Make-Konto? Kostenloses Make-Konto erstellen: affiliate link. Flowpaja kann eine Provision erhalten, ohne zusätzliche Kosten für dich.