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 :
Helllloooo les amis. Quelqu’un aurait une commande Google Spreadsheet pour avoir les pages indexées d’un site ? Thxxx
— Cyril KUHM (@KUHMFR) June 26, 2013
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 code
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.
- Rendez-vous sur Google Drive
- Créez une feuille de calcul
- Cliquez sur Outils > Éditeur de scripts > Projet vide
- Nommez votre projet du nom de votre choix
- Supprimer le contenu automatiquement inséré et collez le script ci-dessous dans votre projet
-
//-------------------------------------------------------------------------------------------------------------------------------------------------------- // 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 } }
- Enregistrez
- Retournez dans votre feuille de calcul
- Dans la cellule de votre choix, ajoutez le code suivant (en insérant l’url à auditer)
-
=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 !
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.
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 ;)