Vérifier une adresse email depuis Gsheet

Valider et vérifier une adresse email directement depuis votre Gsheet, c’est possible !

Pour ça on va voir comment utiliser Bouncer et AppScript.

Voici le résultat attendu :

1 - Bouncer, outil de vérification

Commençons par Bouncer, l’outil qui va nous permettre de vérifier les emails.

Il y a un free trial avec des crédits gratuits, si vous avez besoin de plus les prix sont clairement acceptables, on parle de 20$ pour 5000 emails.

Ce tuto peut être transposé avec d’autres outils comme emailable, tant qu’il y a une API c’est bon.

On aura besoin de la clé API associé au compte Bouncer, elle est disponible ici.

2 - App Script

App Script c’est l’outil de scripting propre à Google.

Commençons par ouvrir App Script depuis votre Gsheet :

3 - Le code

App script fonctionne avec du code JavaScript, pour les novices du code, je vais essayer d’être le plus compréhensible possible.

Sur AppScript, commençons par créer une fonction checkEmails:

function checkEmails() {
	

}

On a ensuite besoin de récupérer les données du gsheet en question :

function checkEmails() {

	//On récupère le gsheet actif (celui depuis lequel on a ouvert AppScript)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
	
	//On récupère la première feuille
  var sheet = ss.getSheets()[0];
    
	//On récupère les données, les 'rows',  du fichier
  var rows = sheet.getDataRange().getValues();

}

Ensuite on va effectuer un traitement pour chaque ligne du fichier :

function checkEmails() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var rows = sheet.getDataRange().getValues();
  
	//on parcourt toutes lignes (sauf la première car ce sont jsute les headers)
  for (var rowNumber = 1; rowNumber < rows.length; rowNumber++) {
	  
		//ici on va effectuer les actions pour chaque ligne  
	
	}

}

Pour chaque ligne, on veut :

  • Récupérer l’email
  • Le vérifier
  • Afficher le statut

Ici on récupère l’email avec [0], car dans mon fichier, l’email est dans la première colonne, soit l’indice 0 (c’est courant en informatique, l’indice du premier élément est quasi toujours 0). Et on récupère les cellules dans lesquelles on va venir afficher les résultats (statut et raison), dans mon cas les résultats seront inscrits en colonnes B et C, vous pouvez le modifier à souhait.

var email = rows[rowNumber][0];
var statusCell = sheet.getRange("B"+(rowNumber+1));
var reasonCell = sheet.getRange("C"+(rowNumber+1)); 

//Purement esthétique...
statusCell.setValue("Loading...");
SpreadsheetApp.flush();

Un peu plus technique, on appelle l’API de Bouncer et on traite le résultat, en affichant le statut et la raison. Pensez à bien remplacer la clé d’api YOUR_API_KEY par celle disponible sur bouncer, ici.


var url = 'https://api.usebouncer.com/v1/email/verify?email=' + email + '&timeout=30';

var response = UrlFetchApp.fetch(url,{
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'x-api-key': 'YOUR_API_KEY'
  }
}); 
var data = JSON.parse(response.getContentText());

statusCell.setValue(data.status);
reasonCell.setValue(data.reason);   
SpreadsheetApp.flush();

Normalement à ce point vous devez avoir ceci (à peu près selon votre fichier):

function checkEmails() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
    
  var rows = sheet.getDataRange().getValues();
  
  for (var rowNumber = 1; rowNumber < rows.length; rowNumber++) {
    
    var email = rows[rowNumber][0];
    var statusCell = sheet.getRange("B"+(rowNumber+1));
    var reasonCell = sheet.getRange("C"+(rowNumber+1)); 

    statusCell.setValue("Loading..."); 

    SpreadsheetApp.flush();
    
    var url = 'https://api.usebouncer.com/v1/email/verify?email=' + email + '&timeout=30';

    var response = UrlFetchApp.fetch(url,{
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'x-api-key': 'YOUR_API_KEY'
      }
    }); 
    var data = JSON.parse(response.getContentText());

    statusCell.setValue(data.status);
    reasonCell.setValue(data.reason);   
    SpreadsheetApp.flush();

  }
}

4 - Exécuter le code

On va ajouter un bouton sur le gsheet, qui déclenchera la fonction et donc la validation.

Pour ça on va insérer une image, qui fera office de bouton. Pour ajouter une action au bouton :

Clique droit sur le bouton > cliquez sur les trois petits points > puis cliquez sur “Assigner le script”. Dans la popup on entre le nom du script à utiliser, soit “checkEmails” ici.

Lors de la première utilisation, une popup va s’afficher avec “Autorisation requise”, continuez comme ci-dessous :

Et c’est bon 🤘🔥

5 - Interpréter le résultat

Voilà ce que dit Bouncer pour l’interprétation des résultats :

🛠
Deliverable  - that’s your gold!

Undeliverable - remove it, forget it and never come back to it!

Risky - that's the most confusing one (more info: https://www.usebouncer.com/all-about-risky). Within Risky you might have:

  • Disposable - remove it.
  • Full Mailbox - send it with caution.
  • Catch all - if the overall quality of your list is good, and your sender reputation is good, you can send to those, otherwise remove such from your list!

Unknown - we were unable to verify those, you might try again later.

Pour me contacter

image

Email : antoine@sales-ops.fr