DataError: Invalid number in parameter
Value must be a number
Ouvrez l'exécution en échec et inspectez l'entrée réelle du paramètre. Une réponse peut sembler numérique dans le formulaire et arriver comme texte, montant monétaire formaté, valeur vide ou objet complet. Ces cas appellent des corrections différentes.
Conservez la réponse d'origine à côté de la valeur convertie pendant les tests. Si 1,234 devient une quantité de la mauvaise grandeur, une pastille verte ne rend pas le résultat correct.
1. Trouver le paramètre qui attend un nombre
Commencez par le module en échec, pas par toutes les questions du formulaire. Notez le paramètre et inspectez le type de la valeur mappée. La référence des types Make distingue Number, Text et Collection. Une valeur incompatible avec le type attendu peut échouer à la validation.
S'il s'agit d'un budget, d'une quantité ou d'un numberValue d'API, remontez cette valeur jusqu'à la soumission. S'il s'agit d'un numéro de ligne ou d'un identifiant, mappez le bon identifiant. Ne convertissez pas une autre réponse pour compenser un mauvais mappage.
Sélectionnez la réponse scalaire dans toute collection de question. Une collection contenant libellé et réponse n'est pas le nombre de la réponse. Un choix comme 10k+ représente une catégorie, pas un montant exact.
Pour le diagnostic, Tools › Set variable peut rendre la valeur convertie visible avant une écriture. Placez-le après les contrôles d'entrée. Si la conversion échoue, les modules suivants ne peuvent pas inspecter une sortie qui n'a jamais été produite.
2. Déclarer le format avant la formule
Décidez ce que le formulaire accepte :
| Contrat d'entrée | Exemple | Valeur numérique attendue |
|---|---|---|
| Point décimal, sans groupement | 1234.56 | 1234.56 |
| Virgule décimale, sans groupement | 1234,56 | 1234.56 |
| Groupement américain et point décimal | 1,234.56 | 1234.56 |
| Points de groupement et virgule décimale | 1.234,56 | 1234.56 |
| Espaces de groupement et virgule décimale | 1 234,56 | 1234.56 |
Ce sont des exemples déclarés, pas des règles pour deviner la locale d'un visiteur. 1,234 peut signifier mille deux cent trente-quatre ou une quantité décimale. Demandez une valeur numérique non ambiguë ou appliquez le contrat explicite du formulaire.
Enregistrez la devise séparément. Retirer $ ou € ne convertit pas une devise dans une autre. Définissez aussi si les négatifs, décimales et zéro sont autorisés. Un parsing réussi n'est que la première validation.
3. Utiliser parseNumber() pour un texte numérique simple
Make documente parseNumber(number; decimal separator) dans sa référence mathématique. Utilisez le séparateur du format reçu :
{{parseNumber("1234.56"; ".")}}
{{parseNumber("1234,56"; ",")}}
Pour du texte mappé, sélectionnez le véritable jeton de réponse. Les exemples suivants emploient 1.amount comme jeton illustratif, pas comme chemin garanti de votre formulaire :
{{parseNumber(trim(1.amount); ".")}}
Utilisez cette expression seulement pour un format à point décimal, sans devise ni groupement. Si le déclencheur fournit déjà un Number approprié, mappez ce nombre directement.
Gardez formatNumber() pour l'affichage dans un e-mail ou Slack. Une chaîne comme 1,234.56 n'est pas identique à une valeur numérique. Créez l'affichage séparément après avoir validé l'écriture numérique.
4. Normaliser un groupement et une devise connus
Pour un texte validé au format américain, retirez les virgules de groupement et parsez le point décimal :
{{parseNumber(replace(trim(1.amount); "/,/g"; ""); ".")}}
Pour des points de groupement et une virgule décimale validés :
{{parseNumber(replace(trim(1.amount); "/[.]/g"; ""); ",")}}
Pour un groupement par espaces ordinaires avec virgule décimale :
{{parseNumber(replace(trim(1.amount); "/ /g"; ""); ",")}}
Le drapeau g remplace toutes les occurrences du caractère de groupement. trim() retire les espaces extérieurs. Syntaxe et remplacement par expression régulière figurent dans les fonctions texte et binaires.
Ne combinez pas ces règles en une formule qui retire tous les séparateurs. Supprimer la virgule de 1234,56 change le montant. Ne retirez pas non plus tous les caractères non numériques : le séparateur décimal et le signe négatif peuvent disparaître.
Pour un formulaire autorisant explicitement un symbole dollar avec un montant américain :
{{parseNumber(replace(trim(replace(1.amount; "$"; "")); "/,/g"; ""); ".")}}
Testez $1,234.56 et $ 1,234.56. N'appliquez pas cette règle aux devises mélangées, à « environ » ou à des symboles placés arbitrairement. Préférez deux champs distincts pour montant et devise.
5. Traiter les valeurs vides avant conversion
Choisissez une politique et configurez la route :
- Montant obligatoire : bloquez l'écriture si la réponse manque. Corrigez la validation du formulaire ou placez le dossier en révision.
- Montant facultatif : conservez l'absence selon le comportement du champ cible. Ne parsez pas une chaîne vide comme un montant. Les modules de mise à jour compatibles ignorent généralement les valeurs vides ;
erasesert à effacer volontairement un champ. Vérifiez le module précis. - Zéro par défaut : utilisez-le seulement si une réponse omise signifie réellement zéro selon la règle métier.
Pour la troisième politique, avec point décimal sans devise ni groupement :
{{parseNumber(ifempty(trim(1.amount); "0"); ".")}}
La référence des fonctions générales décrit ifempty() comme une valeur de remplacement pour une entrée vide. Ce n'est pas un gestionnaire d'exception. Un TBD présent doit encore être rejeté ou vérifié.
Placez le contrôle du vide avant le module contenant parseNumber(). Un filtre après une conversion en échec arrive trop tard.
Erreurs courantes
Sheets accepte la valeur, mais le module suivant échoue
Google Sheets › Add a Row peut enregistrer un montant visible sans prouver son type pour la suite. Inspectez le bundle lu depuis la feuille et l'entrée du prochain module. Parsez à la frontière qui exige un nombre.
Le budget est 10k+
C'est un libellé de plage. Mappez-le vers une catégorie si le destinataire attend une catégorie. Pour un budget numérique exact, recueillez un montant exact. Ne transformez pas « au moins » en promesse précise.
Les virgules fonctionnent dans un formulaire mais pas l'autre
Comparez les contrats d'entrée. Une virgule de groupement n'est pas une virgule décimale. Gardez des règles séparées ou adoptez un format commun non ambigu.
Un montant avec espaces échoue encore
Vérifiez le caractère entre groupes. Espace ordinaire, insécable et espace fine sont différents. / /g vise les espaces ordinaires uniquement. Reproduisez le texte exact, puis contraignez le formulaire ou normalisez le séparateur autorisé.
Le parsing réussit, mais l'API refuse le montant
Vérifiez la sérialisation et les contraintes du champ. Un numberValue de Google Sheets attend un nombre JSON comme 1234.56, pas la chaîne "1234.56" ; voir ExtendedValue. Pour batchUpdate, consultez [Invalid requests[0] 400](https://flowpaja.com/guides/make-google-docs-sheets-invalid-requests-400/).
Retry produit la même erreur
Une réponse invalide inchangée reste invalide. Corrigez l'entrée ou la conversion avant de réessayer. La référence de dépannage cite les types et fonctions invalides parmi les causes de DataError. Ne sautez pas l'écriture pour annoncer ensuite que le montant a été enregistré.
Crédits par exécution
Avec un déclencheur ordinaire et une écriture standard, deux modules exécutés donnent une estimation de deux crédits. Les fonctions de mappage en ligne n'ajoutent pas une exécution de module distincte. Diagnostics, recherches et reprises changent le total. Comparez au véritable historique ; voir Make Credits.
Tests
Utilisez des montants fictifs dans une destination jetable. Notez texte d'origine, format déclaré, valeur obtenue et type cible pour chaque cas :
1234.56avec la règle à point décimal.1234,56avec la règle à virgule décimale.1,234.56et1,234,567.89avec groupement américain.1.234,56avec points de groupement et virgule décimale.$ 1,234.56uniquement dans la route dollar.- Vide, espaces, zéro et
TBDséparément : vérifier politique d'absence et rejet. - Un négatif autorisé et une valeur hors des limites du destinataire.
- Un guillemet ou une collection de réponse entière : aucun ne doit devenir discrètement un nombre plausible.
Inspectez l'entrée du module final, pas seulement un aperçu formaté. Le test échoue si une absence devient un zéro inventé, si la grandeur d'un décimal change ou si une devise disparaît sans conservation de son sens.
Appliquer la même rigueur aux prospects
Pour les prospects Google Forms vers HubSpot et Slack, consultez Lead Router de Flowpaja, 19 USD. Sa page décrit une limitation de mappage des options de budget. C'est un flux Google Forms distinct, pas un parseur universel de montants libres.
Dans Typeform, une option de budget élevé peut déclencher une alerte Slack. Traitez cette option comme une catégorie convenue, pas comme un montant exact deviné.
Pas encore de compte ? Créer un compte Make gratuit: affiliate link. Flowpaja peut recevoir une commission sans frais supplémentaires pour vous.