Récupérer le nombre de pages indexées avec un Spreadsheet Google Drive

Il y a quelques temps, je cherchais à générer une feuille de calcul (Spreadsheet) sur Google Drive afin d’obtenir différentes informations sur les noms de domaine que je gère.

En effet, auparavant pour les clients de MKH, j’utilisais Excel et Seo Tools, qui sont selon moi deux outils indispensables pour auditer des sites web.

Malheureusement, je ne pouvais les utiliser dans cette optique, car les données devaient pouvoir être accessibles

  • n’importe où
  • n’importe quand
  • pour plusieurs utilisateurs
  • sans logiciel

N’ayant rien sous la main, j’ai posé la question sur Twitter :

J’avais un script fonctionnel qui utilisait ImportXML, mais cette fonction étant très limitée (50 requêtes par feuille de calcul), cela ne me convenait pas (j’ai besoin de plus de 2500 requêtes).

Jérôme a proposé un premier script, qui ne marchait pas de mon côté, mais que j’ai pu adapter et faire fonctionner selon mes besoins.

J’ai notamment modifié le script pour arriver à scrapper le nombre de pages quelle que soit l’extension du site, à afficher un résultat correct (car plusieurs cas de figures) et à moins spammer Google.

Le codefatigue seo

Vous devez vous dire « Bon il arrête son monologue ou quoi ? J’ai un linkbaiting à peaufiner, moi ! «  Alors, sans plus tarder, voici la démarche à suivre pour scrapper le nombre de pages indexées via Google Drive.

  1. Rendez-vous sur Google Drive
  2. Créez une feuille de calcul
  3. Cliquez sur Outils > Éditeur de scripts > Projet vide
  4. Nommez votre projet du nom de votre choix
  5. Supprimer le contenu automatiquement inséré et collez le script ci-dessous dans votre projet
  6. //--------------------------------------------------------------------------------------------------------------------------------------------------------
    //  RECUPERE LES PAGES INDEXEES
    //--------------------------------------------------------------------------------------------------------------------------------------------------------
    
    function NombrePagesIndexees(monUrl) // on nomme la fonction
    {   
      var requete = "http://www.google.com/search?&hl=en&q=site:http://" + unescape(monUrl); // la requête sur GG qui récupère pour url la valeur monUrl
    
    	var codesource = UrlFetchApp.fetch(requete).getContentText(); // récupère le code source de la page de la requête	
    
    	Utilities.sleep(1000); // on met la boucle en pause pour 10000ms pour ne pas spammer
    
    	var codeprecedent = '<div id="resultStats">About '; // Code précédent le nombre de résultats
    
    	var codesuivant = ' results<'; // Code suivant le nombre de résultats
    
    	var resultat = codesource.substring(codesource.indexOf(codeprecedent)+codeprecedent.length, codesource.indexOf(codesuivant)); // Récupère le nombre de résultats
    
    	var resultat =  resultat.replace(",", ""); // on supprime la virgule
    
    	if (isNaN(resultat)) // si le résultat n'est pas un nombre
    
    	{        
           	var codeprecedent = '<div id="resultStats">'; // Code précédent le nombre de résultats
    
    		var codesuivant = ' result<'; // Code suivant le nombre de résultats
    
    		var resultat = codesource.substring(codesource.indexOf(codeprecedent)+codeprecedent.length, codesource.indexOf(codesuivant)); // Récupère le nombre de résultats             
    
    		if (isNaN(resultat)) // si le résultat n'est pas un nombre (donc 0 résultats)
    
    		{
    			var codeprecedent = '<div id="resultStats">'; // Code précédent le nombre de résultats
    
    			var codesuivant = ' results<'; // Code suivant le nombre de résultats
    
    			var resultat = codesource.substring(codesource.indexOf(codeprecedent)+codeprecedent.length, codesource.indexOf(codesuivant)); // Récupère le nombre de résultats
    
    			if (isNaN(resultat)) // si le résultat n'est pas un nombre (donc 0 résultats)
    
    			{          
    				return 0; // on affiche 0
    			}
    
    			else // sinon
    
    			{
    				return resultat; // affiche le nombre de résultats
    			}                            
    		}
    
        	else // sinon
    		{
    			return resultat; // affiche le nombre de résultats
    		}
    
    	}
    
    	else // sinon
    	{
    		return resultat; // affiche le nombre de résultats
    	}
    
    }
  7. Enregistrez
  8. Retournez dans votre feuille de calcul
  9. Dans la cellule de votre choix, ajoutez le code suivant (en insérant l’url à auditer)
  10. =NombrePagesIndexees("alsaseo.fr")

Et voilà !

Si vous voyez comment l’améliorer, n’hésitez pas à commenter l’article ! Je ne suis pas un développeur pur, mais j’essaie de m’améliorer ;)

J’ai commenté chaque ligne afin que tous puissent s’y retrouver.

Attention tout de même en faisant beaucoup de requêtes,  vous allez peut-être bloquer Google et des erreurs apparaîtront (#Error)

Je travaille en ce moment sur l’ajout de proxies, car sur mes 2500 requêtes, je dois en avoir une vingtaine qui ressortent en erreur.

J’ai aussi d’autres fonctions que je vais partager sous peu, afin de vous proposer un Spreadsheet bien complet pour l’audit de vos sites !

Si vous avez d’autres codes, n’hésitez pas à les partager !

 

Check Also

Nouveau design à venir pour Google Adwords

Cela fait plus de 15 ans que la régie publicitaire Google Adwords permet à tous …

2 comments

  1. merci.
    Je débute dans les scripts donc les commentaires m’aident bien.

    Avant, je récupérais le nombre de résultats avec la fonction importxml (importxml(« http://www.google.com/search?q=site: »;C4), »//*[@id=’resultStats’] »), avec l’url du site en C4) mais ça ne fonctionnait pas toujours…
    je vais voir si ton script est plus fiable.

  2. C’est pour ça que j’ai inséré les commentaires, ça aide pas mal de monde (moi le premier).

    Pour importxml, je l’utilisais aussi mais son nombre d’utilisation dans une seule feuille est limitée, j’ai donc changé de méthode ;)