Google Forms acceptera sans broncher jane@gmial.com, une adresse jetable issue
d'un domaine éphémère, ou l'adresse d'une entreprise qui a mis la clé sous la
porte il y a deux ans. Le réglage intégré « adresse e-mail valide » vérifie
seulement que le texte ressemble à une adresse — il ne demande jamais s'il y a
une vraie boîte aux lettres derrière. Pour vérifier réellement les e-mails issus
de Google Forms, il vous faut une deuxième étape : un contrôle concret face au
système de messagerie, soit au moment où une réponse arrive, soit par lot ensuite.
Ce guide présente les deux approches, en utilisant Google Apps Script comme liant.
La réponse en bref#
Deux voies, selon que vous avez besoin du verdict en direct ou que vous pouvez nettoyer par lots :
- Temps réel — ajoutez un déclencheur
onFormSubmitdans Apps Script qui lit l'adresse soumise, appelle l'API Qualisend avecUrlFetchApp, et réinscrit le verdict dans la Google Sheet liée. Chaque nouvelle réponse est scorée à mesure qu'elle arrive. - En masse — les réponses vivent déjà dans une feuille de calcul, alors téléchargez-les au format CSV et lancez une seule vérification en masse. Idéal pour un formulaire qui collecte depuis un certain temps, ou quand vous ne voulez pas toucher au code.
Les deux reposent sur le même verdict — deliverable, risky, undeliverable
ou unknown, plus des sous-indicateurs pour les adresses jetables, génériques
et gratuites. Ce qui change, c'est le moment.
Voie 1 : vérifier les e-mails de Google Forms en temps réel avec Apps Script#
Google Forms ne peut pas appeler d'API externe par lui-même, mais la feuille de calcul où affluent ses réponses le peut — via Apps Script. Le plan est simple : se déclencher à chaque soumission, récupérer l'e-mail, interroger Qualisend à son sujet, et estampiller la réponse à côté de la ligne.
Mettez le script en place. Ouvrez la Google Sheet qui recueille vos réponses
(dans l'éditeur de formulaire, Réponses → Associer à Sheets si ce n'est pas
déjà fait). Depuis la feuille, allez dans Extensions → Apps Script. Avant
toute chose, stockez votre clé pour qu'elle ne se trouve jamais dans le code :
dans l'éditeur de scripts, ouvrez Paramètres du projet → Propriétés du script
et ajoutez QUALISEND_API_KEY avec votre valeur. Le script la lit à l'exécution
avec PropertiesService.
Puis collez un gestionnaire comme celui-ci. Consultez la référence de l'API pour connaître le chemin exact du point de terminaison et la forme de la requête — l'URL ci-dessous est un espace réservé :
// Bound to the responses spreadsheet.
// Runs on each new Form submission (see trigger setup below).
const QUALISEND_URL = 'https://api.qualisend.com/v1/verify'; // confirm at /developers
const EMAIL_QUESTION = 'Email address'; // your exact question title
const STATUS_COL = 8; // an empty column to write the verdict into
function onFormSubmit(e) {
const email = (e.namedValues[EMAIL_QUESTION] || [])[0];
if (!email) return;
const apiKey = PropertiesService.getScriptProperties().getProperty('QUALISEND_API_KEY');
const res = UrlFetchApp.fetch(QUALISEND_URL, {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + apiKey },
payload: JSON.stringify({ email }),
muteHttpExceptions: true, // handle errors ourselves instead of throwing
});
// Fail open: if the check errors, keep the response — never lose a real lead.
if (res.getResponseCode() !== 200) return;
const { result } = JSON.parse(res.getContentText());
const row = e.range.getRow();
const sheet = e.range.getSheet();
sheet.getRange(row, STATUS_COL).setValue(result.status); // deliverable | risky | undeliverable | unknown
sheet.getRange(row, STATUS_COL + 1).setValue(result.score); // 0-100
}
L'objet e que vous remet une soumission de formulaire est la partie utile :
e.namedValues associe chaque intitulé de question à sa réponse, et e.range
est la ligne qui vient d'être écrite — ainsi e.range.getRow() vous indique
exactement quelle ligne estampiller. Faites correspondre EMAIL_QUESTION à
l'intitulé de votre question au caractère près, et pointez STATUS_COL vers une
colonne vide.
Ajoutez le déclencheur. Un déclencheur simple (une simple fonction
onFormSubmit nue) ne peut pas appeler UrlFetchApp, car atteindre un service
externe requiert une autorisation dont les déclencheurs simples ne disposent pas.
Il vous faut plutôt un déclencheur installable. Dans l'éditeur de scripts,
ouvrez Déclencheurs (l'icône d'horloge) → Ajouter un déclencheur, et
choisissez :
- Fonction :
onFormSubmit - Source de l'événement : Depuis la feuille de calcul
- Type d'événement : Lors de l'envoi du formulaire
Enregistrez, approuvez une fois l'invite d'autorisation, et vous voilà en ligne. Soumettez une réponse de test et observez le statut et le score apparaître dans les colonnes que vous avez choisies.
Un mot sur le moment du contrôle. Qualisend renvoie immédiatement les
contrôles locaux rapides (syntaxe, domaine, adresse jetable, adresse générique,
faute de frappe), la sonde SMTP plus poussée de la boîte aux lettres se terminant
peu après. Pour un estampillage en temps réel sur la feuille, le result
immédiat est ce qu'il vous faut — vous obtenez un verdict exploitable sans faire
patienter la personne qui a soumis. Si vous voulez plus tard la réponse confirmée
par SMTP pour une ligne limite, repassez-la par la voie en masse, où quelques
secondes de latence n'ont pas d'importance. Comment fonctionne la vérification
des e-mails explique en détail pourquoi
l'étape SMTP est la plus lente.
Voie 2 : vérifier en masse la feuille des réponses#
Si votre formulaire collecte depuis des mois, ou si vous préférez ne pas maintenir de script, faites l'impasse totale sur le déclencheur. Vos réponses sont déjà une feuille de calcul — vérifiez-les en une seule passe.
- Ouvrez la Google Sheet liée (ou l'onglet Réponses du formulaire → Associer à Sheets).
- Fichier → Télécharger → Valeurs séparées par des virgules (.csv).
- Importez ce CSV dans la vérification en masse de Qualisend, associez la colonne d'e-mail, et lancez la tâche.
- Téléchargez les résultats et faites-les correspondre à vos lignes par e-mail, ou recollez la colonne de statut dans la feuille.
Le mode en masse exécute tout le pipeline, y compris la sonde SMTP, sur chaque ligne — il attrape donc les boîtes aux lettres mortes qu'un contrôle de syntaxe ne repérerait jamais. C'est la même routine que vous utiliseriez pour n'importe quelle liste exportée ; notre guide sur comment nettoyer une liste d'e-mails traite du dédoublonnage, de la gestion des adresses génériques, et de ce qu'il faut faire du lot risky. Pour un contrôle rapide et ponctuel sur une seule adresse, le vérificateur d'adresse unique gratuit ne réclame aucun CSV.
Agir sur les verdicts#
Un verdict n'est utile que s'il change ce que vous faites ensuite. Peu importe la façon dont vous l'avez recueilli, traitez les quatre statuts ainsi :
| Verdict | Que faire de la réponse |
|---|---|
deliverable | Gardez-la. Une vraie boîte aux lettres a accepté la sonde — vous pouvez lui écrire sans risque. |
undeliverable | Supprimez-la. Lui écrire signifie un rebond dur, et les rebonds sont ce qui nuit à votre réputation d'expéditeur. |
risky | Segmentez-la. Souvent un domaine catch-all — envoyez avec prudence et surveillez l'engagement avant de lui faire confiance. |
unknown | Réessayez plus tard. Le serveur de messagerie n'a pas donné de réponse claire ; n'écartez pas pour autant un prospect peut-être réel. |
Les sous-indicateurs affinent le tableau. Un indicateur disposable sur une
participation à un jeu-concours est en général une adresse jetable dont vous
pouvez vous débarrasser ; un indicateur role (info@, support@) peut compter selon la
finalité du formulaire. Adresses génériques, jetables et
gratuites explique quand chacune vaut la
peine d'être filtrée. Dans le script en temps réel, vous pouvez agir dessus
immédiatement — par exemple, en inscrivant une note « à revoir » dans une colonne
lorsque result.sub_flags.disposable vaut vrai.
Quelle voie choisir ?#
Optez pour le déclencheur Apps Script en temps réel lorsque les réponses sont des prospects que vous relancez rapidement — demandes de démo, listes d'attente, contenu réservé — et que vous voulez le verdict posé à côté de chaque ligne dès qu'elle arrive. Cela coûte un crédit par soumission et un peu de maintenance de script.
Optez pour le mode en masse lorsque vous avez un arriéré à nettoyer, quand
vous préférez éviter le code, ou quand un formulaire très actif ferait exploser le
quota UrlFetchApp grand public. Rien ne vous empêche de faire les deux : lancez
le déclencheur sur les nouvelles réponses et une passe en masse mensuelle pour
revérifier les adresses susceptibles d'être devenues obsolètes.
Dans les deux cas, le même principe que dans notre guide de vérification à l'inscription s'applique — vérifiez avant qu'une adresse n'atteigne votre outil d'envoi, pour qu'une faute de frappe devienne un prospect corrigé plutôt qu'un rebond que vous payez plus tard. Si vos formulaires sont répartis sur plusieurs outils, le schéma se généralise : une étape Zapier no-code ou un webhook Typeform fait le même travail pour ces plateformes.
Foire aux questions#
Google Forms peut-il vérifier des adresses e-mail par lui-même ?#
Non. Google Forms propose une option « Validation des réponses » qui vérifie qu'une
réponse ressemble à un e-mail — la bonne forme, un @, un domaine — mais elle ne
contacte jamais le serveur de messagerie, si bien qu'elle ne peut pas distinguer
une vraie boîte aux lettres d'une faute de frappe ou d'un domaine jetable. Ce
contrôle de forme n'est qu'un premier filtre — il laisse passer jane@gmial.com
sans broncher. Une vérification réelle exige l'API ou l'étape en masse décrite
plus haut.
Faut-il écrire du code pour vérifier les réponses de Google Forms ?#
Uniquement pour la voie en temps réel. Le déclencheur Apps Script demande de coller un court script et de configurer un déclencheur, mais le code est réduit et réutilisable. Si vous préférez l'éviter entièrement, la voie en masse se fait au tout venant : téléchargez les réponses au format CSV, importez-les pour une vérification en masse, et réintégrez les résultats. Sans script, sans déclencheur.
La vérification va-t-elle ralentir la personne qui remplit mon formulaire ?#
Non. Avec le déclencheur Apps Script, le contrôle s'exécute après la soumission — le répondant a déjà vu l'écran de confirmation pendant que votre feuille est estampillée discrètement en arrière-plan. Rien ne bloque le formulaire. Si vous voulez que la vérification conditionne la soumission elle-même, cela relève d'un formulaire personnalisé doté d'un point de terminaison serverless, pas de Google Forms natif.
Comment garder ma clé d'API Qualisend hors du script ?#
Stockez-la dans les Propriétés du script, pas dans le code. Dans l'éditeur
Apps Script, ouvrez Paramètres du projet → Propriétés du script, ajoutez
QUALISEND_API_KEY, et lisez-la à l'exécution avec
PropertiesService.getScriptProperties().getProperty(...), comme le fait
l'extrait ci-dessus. Utilisez une clé à portée limitée depuis votre tableau de
bord Qualisend pour qu'elle ne dispose que des permissions de
vérification, et changez-la si elle venait à être exposée.
Prêt à faire le ménage dans vos réponses Google Forms ? Le forfait
gratuit inclut 100 crédits pour tester l'une ou l'autre voie, le
vérificateur d'adresse unique gratuit ne réclame aucune
configuration, et la référence de l'API présente le point de
terminaison /verify avec des exemples prêts à copier-coller en sept langues.