© ৳💨g ⋮ LiNKS 👀 https://sites.google.com/view/my-link-s/ . . . . . . . . . . ⭐➕⭐ . . . 🔊 https://sampling-unit.com . . . . . . . . . . ¯\(°_o)/¯

La toolbox du growth hacker

La toolbox du growth hacker gem

mars 2017

1 / 2

mars 2017

il

5ae70beb9312695d46967aaf4824a807

5ae70beb9312695d46967aaf4824a8071276×675 724 KB

Le but de cette toolbox est de créer un annuaire pour éviter les sujets redondants de recherche d’outils. J’ai commencé, vous pouvez participer ici : Suggérer des outils pour la toolbox 579


Dernière MAJ :  8 mai 2020 (UTC)


 Email Finder


 Cold Mailing


 Data Enrichment

 Email Verification

 Email Warming


 Scraping DEV

 Scraping API

 Scraping Nocode


 Automation DEV

 Automation Nocode



 Linkedin


 Twitter

 Instagram

!! Automatisation FB & Insta, attention aux risques de ban !!

 Facebook

!! Automatisation FB & Insta, attention aux risques de ban !!

Automatisation :


Bots & Analytics :


Graph tools (dead) :


 Pinterest


 Technology Lookup

 Visitor Identification Software

 Voice Message Service


 SEO

:point_right: https://backlinko.com/seo-tools 2,7k


 Formations Growth FR

 Podcasts FR (growth, sales, entrepreneuriat..)



:fr: : Outil créé par des Français

+ : Avis positif totalement subjectif

105


ImportHTML, ImportFeed & ImportXML: Extraire des données web directement dans Google Spreadsheet

importhtml importfeed et importxml extraire des données web directement dans google spreadsheet

Scraper, selon wikipedia c’est « extraire du contenu de sites Web, via un script ou un programme, dans le but de le transformer pour permettre son utilisation dans un autre contexte ». Extraire des données c’est déjà bien, mais dans un tableau google spreadsheet, c’est encore mieux.

Pourquoi Scraper des données disponibles sur le web ?

Pour 2 raisons principales:

  1. un simple copier coller ne conserve pas toujours la mise en forme
  2. en scrapant les données, on peut actualiser très facilement la récupération de données issues de multiples sources

Quelques exemples d’utilisations:

  • Extraire les résultats de recherche de Google ou Twitter pour découvrir les concurrents sur son domaine, ou juste mesurer son positionnement
  • Extraire un tableau depuis wikipedia pour en exploiter les données
  • Extraire la liste des annonces (titre, prix, etc.) d’un résultat de recherche sur leboncoin
  • Traduire ses flux RSS en français
  • etc.

Google met à disposition 3 fonctions très pratiques pour executer ces taches directement dans google spreadsheet: ImportHtml, ImportFeed & ImportXML.

  1. ImportHtml: importer facilement des tableaux et des listes
  2. ImportFeed: importer des flux RSS dans Google spreadsheet
  3. ImportXml: importer à peu près n’importe quoi dans google spreadsheet
  4. Télécharger les exemples mentionnés dans l’article

ImportHtml: importer facilement des tableaux et des listes

La fonction ImportHtml est la plus facile à prendre en main: aucune compétence technique n’est nécessaire. Vous pouvez importer 2 types de données depuis n’importe quelle page internet:

  1. des tableaux (balises html « table »)
  2. des listes (balises html « li »)

Utilisation de la fonction ImportHtml de Google Spreadsheet

Syntaxe:

=IMPORTHTML(url, requête, index)

  • url: l’adresse de la page avec le http (ou une référence à une cellule contenant l’url)
  • requête: table ou list, selon que vous vouliez extraire un tableau ou une liste
  • index: numéro du tableau de la page (1 si il s’agit du 1er tableau, 2 si c’est le second, etc.)

Extraire des données Wikipedia dans Google Spreadsheet avec ImportHtml

Exemple d’utilisation:

=IMPORTHTML("http://fr.wikipedia.org/wiki/Parts_de_marché_des_navigateurs_web","table",1)    

importhtml google spreadsheet exemple tutorial

Essayez par vous même !

Pour plus d’information, reportez vous à la documentation Google Spreadsheet ImportHtml

ImportFeed: importer des flux RSS dans Google spreadsheet

La fonction ImportFeed est à peine plus compliquée. Elle permet d’importer un flux RSS dans spreadsheet en spécifiant le type d’info qu’on veut récupérer. La seule complication ici est qu’un flux RSS contient beaucoup de type d’information:

  • infos relatives au flux lui même: titre, description, auteur, url
  • infos relatives aux items du flux: titre, résumé, url, date de création

Utilisation de la fonction ImportFeed de Google Spreadsheet

Syntaxe:

=IMPORTFEED(url, requête*, en_têtes*, nombre_éléments*)

importfeed google spreadsheet exemple tutorial

*champs optionnels. Seule l’url est obligatoire. Si aucun autre paramètre n’est indiqué, spreadsheet importera l’ensemble du flux, 1 type d’info par colonne.

Pour paramétrer un peu plus tout ça & ne récupérer que les infos qui vous intéressent vraiment, voici le détails des champs à passer:

  • url: l’adresse du flux RSS, avec le http (ou une référence à une cellule contenant l’url)
  • requête: vous pouvez récupérer l’ensemble du flux (valeur par défaut) ou juste une partie de celui-ci:
  • feed: retourne l’ensemble des informations concernant le flux (titre, description, auteur et url
  • feed title: retourne le titre du flux
  • feed description: retourne la description du flux
  • feed author: retourne l’auteur du flux
  • feed url: retourne l’url du flux
  • items (valeur par défaut): retourne l’ensemble des champs des billets inclus dans le flux RSS
  • items title: retourne le titre des billets inclus dans le flux
  • items summary: retourne le résumé (contenu sans images ni liens) des billets inclus dans le flux
  • items url: retourne les urls des billets inclus dans le flux
  • items created: retourne la date des billets inclus dans le flux
  • en tête: TRUE (valeur par défaut) pour afficher les en tête de colonnes ou FALSE si vous ne souhaitez pas les afficher
  • nombre_éléments: par défaut, l’ensemble du flux sera retourné, amis si vous ne voulez en récupérer qu’un certain nombre, indiquez le ici (ex. 10)

Créer un lecteur de flux RSS dans Google spreadhseet

Exemple d’utilisation:

IMPORTHTML("http://fr.wikipedia.org/wiki/Parts_de_marché_des_navigateurs_web","table",1)    

Essayez par vous même !

Pour plus d’information, reportez vous à la documentation Google Spreadsheet ImportFeed.

Traduire ses flux RSS dans Google spreadhseet

Bonus, parce que lire ses flux dans Google Spreadsheet, ça ne sert pas à grand chose seul…par contre, une fois qu’on les a dans la feuille de calcul, on peut les traduire facilement: il suffit de créer un nouvel onglet et d’utiliser la fonction « Translate » inclus dans google spreadsheet 🙂

Exemple d’utilisation:

=GoogleTranslate("Il fait chaud et beau";"fr"; "en")

googletranslate google spreadsheet exemple tutorial

Voila. Simplissime..

ImportXml: importer à peu près n’importe quoi dans google spreadsheet

La fonction ImportXml est la plus puissante: elle permet d’extraire absolument n’importe quoi d’une page web. Par contre, elle va demander de plus grande compétences techniques. Pas besoin de savoir développer, mais il va connaitre la notion de Xpath, et comment déterminer celui de l’élément à extraire de la page web.

Avec la fonction ImportXML, la seule limitation (à ma connaissance) est liée à l’execution de javascripts sur la page: vous ne pourrez extraire des données que si elles sont affichées dans la page avant l’execution de javascript. Ce n’est pas un problème pour la plupart des sites internet, mais dans certains cas, mais pourra l’être si par exemple vous cherchez à extraire une donnée qui nécessite un clic sur un bouton pour être affichée, etc.

Utilisation de la fonction ImportXml de Google Spreadsheet

Syntaxe:

=IMPORTXML(url, xpath)

importxml google spreadsheet exemple tutorial

  • url: l’adresse de la page d’où extraire les données (avec le http)
  • xpath: le xpath de/des éléments à extraire de la page.

NB: Il est possible d’extraire plusieurs xpath en une seule requête en les séparant par des « pipes » (|). Par exemple:

=IMPORTXML("http://www.twitter.com/search?q=growth hacking"; "user xpath | twitter account xpath")

A priori, rien de très compliqué, mais récupérer le xpath peut parfois être un casse tête…

Qu’est ce qu’un Xpath ?

C’est la partie la plus difficile à maitriser concernant cette fonction. Si vous prenez le temps de bien comprendre comment les construire par contre, vous aurez un outils extrêmement puissant…

Récupérer le xpath d’un élément isolé d’une page est relativement facile, je vous explique juste en dessous. Par contre, pour récupérer une liste d’éléments (résultats de recherche, etc.), vous devrez forcément le modifier « à la main » et donc comprendre comment les construire. Pour commencer, l’article Xpath sur Wikipedia est une excellente 1ère approche.

En résumé, le Xpath est le chemin unique d’un élément dans un document formatté (xml, html…). Par exemple, dans le code suivant:

 

    Brice Maurin

    @deuxio

    http://deux.io

 

 

    Antoine Richard

    @doublesensparis

    http://www.doublesens.fr

 

 

  Pierre le Ny

  @labelgum

  http://www.label-gum.com

 

Pour récupérer dans un tableau les nom, twitter id & site web de la liste, je pourrais utiliser les fonctions suivante:

=IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='name']")

=IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='twitter-id']")

=IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='website']")

ou en récupérant tout en 1 fois (dans une seule colonne par contre…) grace à la fonction suivante:

=IMPORTXML("http://www.domaine.com/nomdelapage"; "//*[@id='name'] | //*[@id='twitter-id'] | //*[@id='website']")

Passons sur le nom de la page. Le paramètre xPath passé est ici composé de 3 xPath différents, séparés par des « pipes » ( | ou Alt+Shit+L sur mac) pour indiquer à google spreadsheet que je souhaite récupérer plusieurs champs en 1 seul appel à la fonction importxml.

Je récupère donc le nom en recherchant partout dans le document (//) le champs dont l’id est « name » ([@id= »name »]). De la même manière, je lui indique les 2 autres champs qu’il doit aller récupérer (//[@id=’twitter-id’] et //*[@id=’website’]).

NB: Lorsque vous souhaitez extraire des id ou des class en les nommant, pensez à les inclure avec des single quotes, pour éviter d’indiquer (avec des doubles) la fin de la fonction à google spreadsheet.

Récupérer le Xpath d’un élément d’une page web directement dans Chrome

Sélectionnez l’élément à extraire dans la page, puis faites un clic droit. Choisissez « Procéder à l’inspection de l’élément ». Les outils de développement Chrome vont s’afficher, en surlignant dans le code la ligne que vous avez sélectionné. Faites un clic droit (dans le code), sur cet élément et choisissez « Copy Xpath »:

extract xpath in google chrome tutorial

Coller ce Xpath dans votre formule, et Google extraira l’élément de la page dans la feuille de calcul.

Quelques exemples de xPath bien pratiques 😉

Tous les exemples sont contenus dans le Google Spreadsheet contenant les exemples mentionnés dans ce tutoriel.

Récupérer les titres & urls des résultats de recherche de google

Exemple de recherche sur Google: https://www.google.fr/search?q=growth+hacking

Titre de la page: //h3[@class=’r’]

Url de la page: //h3[@class=’r’]/a/@href

Exemple d’utilisation de la fonction ImportXml pour extraire des données depuis une recherche Google

Dans la 1ère colonne, entrez la formule suivante permettant de récupérer le titre des pages de résultat:

=IMPORTXML("https://www.google.fr/search?pws=0&q=growth hacking"; "//h3[@class='r']")

Le début de l’url google est standard, mais j’y ai ajouté le paramètre « pws=0 » qui permet de faire une recherche non personnalisée, c’est à dire une recherche qui ne prend pas en compte vos recherches précédentes & vos paramètres google personnels.

Dans la colonne suivante, entrez la formule suivante permettant de récupérer les urls des pages de résultat:

=IMPORTXML("https://www.google.fr/search?pws=0&q=growth hacking"; "//h3[@class='r']/a/@href")

Vous remarquerez que google ne retourne pas directement les urls des pages de résultats, mais une adresse lui permettant de tracker tous les clics sur les liens. L’url ressemble à ça:

/url?q={url de la page}&sa={un code qui rend le clic unique, et donc reliable à une personne unique}

Pour obtenir l’url « propre », nous allons l’extraire à l’aide de la fonction « RegExExtract ». Entrez donc dans la 3e colonne la formule suivante:

=REGEXEXTRACT({cellule contenant l'url encryptée};"\/url\?q=(.+)&sa")

Vous obtiendrez une belle url, bien propre et non suivie 🙂

Essayez par vous même !

Récupérer les noms d’utilisateurs / url du tweet d’une recherche twitter

Exemple de recherche sur Twitter: https://twitter.com/search?q=growth hacking&mode=news (le &mode=news sert à n’afficher que les news, pas les recommandations de users)

Nom d’utilisateur: //[contains(@class, ‘fullname’)]

Compte Twitter: //[contains(@class, ‘username’)]/b

Url du Tweet: //*[contains(@class, ‘details’)]/@href

Exemple d’utilisation de la fonction importxml pour extraire des données depuis une recherche twitter

Dans 3 colonnes, copiez les 3 formules suivantes:

=IMPORTXML("https://twitter.com/search?q=growth hacking&mode=news"; "//*[contains(@class, 'fullname')]")

=IMPORTXML("https://twitter.com/search?q=growth hacking&mode=news"; "//*[contains(@class, 'username')]/b")

=IMPORTXML("https://twitter.com/search?q=growth hacking&mode=news"; "//*[contains(@class, 'details')]/@href")

Ce qui nous donne un tableau comme celui ci:

fullname

twitter name

twitter url

Walter Adamson

adamson

/adamson/status/464728522934996992

Jeff Rajeck

JRajeck

/JRajeck/status/464646011399720960

buzzr

buzzrapp

/buzzrapp/status/464467218664001536

Scott Gattis

scottgattis

/scottgattis/status/463768944369606656

Essayez par vous même !

Exemples mentionnés dans ce tutorial

Testez par vous même les fonctions importXml, importHtml, importFeed de google spreadsheet grâce à notre feuille de calcul.

Vous y trouverez les exemples suivants:

  • importHtml: Extraire un tableau d’une page wikipedia
  • importHtml: Extraire le calendrier des séries de la semaine
  • importFeed: Créer un lecteur de flux RSS dans Google spreadhseet
  • importFeed + Googletranslate: Traduire ses flux RSS dans Google spreadhseet
  • importXml: faire une recherche GOOGLE depuis Google spreadsheet
  • importXml: faire une recherche TWITTER depuis Google spreadsheet

Merci ! Accèdez aux 3 feuilles de calcul en cliquant sur les liens ci dessous:Feuille de calcul « IMPORTHTML »

Feuille de calcul « IMPORTXML »

Feuille de calcul « IMPORTFEED »Pour les modifier, choisissez « Fichier » > « Créer une Copie ».N’hésitez pas à posez vos questions en commentaires 😉

Les limitations des fonctions import de google spreadsheet

La limitation la plus importante est que l’on ne peut pas utiliser plus de 50 fonctions import(Xml/Html/Feed) par feuille de calcul. Pour passer outre cette limitation, 2 solutions:

  • utiliser des « pipes » (|) entre les xpath pour grouper plusieurs importXml en 1 seul appel
  • utiliser plusieurs feuilles de calcul 🙁
  • utiliser cette méthode mentionnée sur quora

[EDIT: Janvier 2015] C’est fini ! Google vient de lever sa limitation 🙂 On peut maintenant scraper en illimité !! Yeah !

 

Brice

Fondateur de DEUX•IO, Agence de Conseil en Marketing pour Startup / Growth Marketing. Ancien marketeur chez Musiwave, Xbox & Zune. Geek.

http://deux.io

Vous aimez? Partagez 🙂

Vous aimerez aussi...

Growth Hacking: 16 Extensions Chrome Indispensables

Growth Hacking: 16 Extensions Chrome Indispensables

Rapportive vs Fullcontact vs Clearbit: Comparaison des API d'enrichissement d'Email

Rapportive vs Fullcontact vs Clearbit: Comparaison des API d'enrichissement d'Email

Tutoriel: Comment ajouter un utilisateur sur Google Analytics ?

Tutoriel: Comment ajouter un utilisateur sur Google Analytics ?


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nom*

Adresse de messagerie*

Site web

Enregistrer mon nom, mon e-mail et mon site web dans le navigateur pour mon prochain commentaire.


Julien Rath (@jlnrth) 21 août 2014 à 13 h 53 min

Hello, avec une recherche twitter. comment est-ce que je peux faire pour voir plus que le premier 19 resultats? Merci!

Répondre


Brice 21 août 2014 à 18 h 23 min

Salut Julien,

Comme tu le constateras en faisant une recherche sur twitter, la 1ère page ne chargent qu’un nombre limité de résultat (environ 10, c’est variable), le reste des résultats étant chargé lorsque tu scrolles.

Les fonctions « import » de google spreadsheet se bornent à charger la page, et extraire les données…donc tu ne récupéreras que les 1er résultats. Pour en obtenir plus, 2 solutions:

1. utiliser l’API twitter

2. utiliser un service tiers qui liste plus de résultats (et scraper ce service tiers)

Mais si ton but est de stocker l’ensemble des tweets parlant d’un sujet, tu devrais essayer http://mashe.hawksey.info/2013/02/twitter-archive-tagsv5/ qui va stocker tous les tweets (futurs) parlant d’un sujet. Par contre la, c’est quasiment un logiciel, plus une simple fonction google spreadsheet 😉

Répondre


jlnrth 23 août 2014 à 19 h 57 min

Salut Brice,

C’est bien ce que j’avais remarqué avec la recherche. J’esperais que t’avais un astuce pour aller plus loins. Dommage. Je vais fair avec le API. Merci pour ton aide!

Répondre


Brice 25 août 2014 à 11 h 26 min

Je n’en ai pas, mais je vais creusé le scraping d’autres outils, je pense que c’est faisable. Je te tiendrais au courant 😉

+

Répondre


srabounette 1 octobre 2014 à 10 h 25 min

Bonjour,

Je recherche une solution qui pourrait me simplifier la tâche

Je vous explique afin de réaliser un mailing, j’ai besoin d’extraire les mails des exposants au SIAL

Pour avoir la liste des exposants, il faut allez sur le site internet du salon, accéder à la liste des exposants en haut à droite de la page d’accueil : http://www.sialparis.fr/Liste-des-exposants-du-SIAL-2014

j’arrive sur cette page et je vais dans la recherche avancée je choisis les secteurs d’activités et les pays qui m’intéressent et j’obtiens une liste de résultats où s’affichent le nom de l’exposant et une icône pour contacter par mail l’entreprise

J’ai besoin de récupérer ces résultats au minimum les mails, comment faire mis à part copier/coller

Merci d’avance pour vos réponses

Bien cordialement,

Répondre


Brice 1 octobre 2014 à 10 h 50 min

Bonjour Sabrina,

C’est tout à fait faisable, mais il faut décomposer le problème en 3 étapes:

1. Trouver l’adresse de la recherche avancée

Pour ca, sous chrome, ouvrez l’inspecteur d’élement puis l’onglet « Network ». Choisissez les paramètres qui vous intéresse, puis repérer et copier l’adresse complète de la page listant les résultats.

2. Extraire les résultats

Dan un Google spreadsheet, ajoutez l’url trouvée, puis identifiez les xpath de la compagnie et du lien avec l’email du contact.

3. Extraire l’email du lien

En extrayant tout le lien, on extrait également la mention « mailto: » qui ouvre votre boite mail, et d’autres éléments moins pertinents. Il vous faut ici extraire uniquement le mail. Pour ca, utilisez la fonction google spreadsheet « regexextract » qui va appliquer une expression régulière pour extraire une info d’une cellule. L’expression régulière la plus simple pour trouver un email est « \w+@[\w.-]+|\{(?:\w+, *)+\w+\}@[\w.-]+ ».

Voici le résultat: http://bit.ly/1CG5UZC

N’hésitez pas à partager ce post sur Facebook & Twitter 😉

Répondre


centreco 1 octobre 2014 à 12 h 43 min

FORMIDABLE ,

par contre, je bloque dès la première étape .. je réalise ma requête sous Google chrome, ensuite je clique droit pour ouvrir l’inspecteur d’éléments puis je regarde l’onglet network, mais il n’y a rien dedans …

Répondre


srabounette 1 octobre 2014 à 12 h 49 min

Désolée de vous déranger encore … en fait j’ai bien réussi en actualisant la page a avoir des éléments mais où chercher cette fameuse adresse complète ? je vois bien que de nombreux éléments s’affichent mais lequel choisir ?

Répondre


srabounette 1 octobre 2014 à 13 h 17 min

Juste un dernier message pour vous dire que j’ai compris et réussi à retrouver mes petits ! je vous remercie énormément car vous m’avez permis de gagner un temps considérable !!!! il me reste à trouver comment contourner le problème des 100 résultats et plus et ça sera parfait, mais même si je ne trouve pas, ça n’est pas grave!! merci encore

Répondre


Brice 1 octobre 2014 à 13 h 21 min

le parametre « limitation » semble pouvoir etre utilisé. Modifiez le pour le passer à 500 pour avoir 500 résultats 😉

Répondre


srabounette 1 octobre 2014 à 14 h 09 min

j’ai quand même une dernière petite question : comment avez vous fait pour trouver le xpath de l’email du contact ? car dans mon exemple, j’ai beau sélectionner l’adresse mail et cliquer sur examiner l’élément et ensuite sur copy xpath, ça ne me donne pas du tout la même expression que vous. je vous demande ça car j’ai souvent ce genre de requête à effectuer donc il faut que j’arrive à le refaire toute seule ^^ merci encore pour votre aide

Répondre


Brice 1 octobre 2014 à 17 h 14 min

Pour ca, il va falloir apprendre le language xpath 😉

Répondre


S0u 21 octobre 2014 à 17 h 44 min

Bonjour Brice,

Une petite question, je tente d’extraire uniquement lors du resultats Google mais je bute lorsque j’ai copié la div avec Xpath.

=XPathOnUrl(« https://www.google.fr/search?q=sport&pws=0″; »//div[@id=’resultStats’] »;)

En effet j’obtiens ceci  » Environ 143 000 000 résultats  » or je voudrais avoir seulement le nombre 143 000 000 dans ma cellule Excel.

Merci d’avance

S0u

Répondre


Brice 21 octobre 2014 à 20 h 54 min

Hello SOu,

Avec le xpath, tu peux extraire un « noeud » depuis un document. Ici, tu as bien extraits le noeud contenant le nombre de résultat, mais il inclut également un texte. Tu ne pourras pas aller plus proche.

Pour atteindre la solution que tu recherches, tu dois extraire les chiffres de cette chaine de caractere. Pour ca, tu dois utiliser l’expression régulière suivante: ((?:\d+ )+)

Tu utilises SEOTools for Excel, je ne connais pas bien ses fonctions, mais sur Google Spreadsheet, tu n’auras qu’à faire:

=REGEXEXTRACT(IMPORTXML(G1; »//div[@id=’resultStats’] »); »((?:\d+ )+) »)

+

Répondre


S0u 22 octobre 2014 à 15 h 20 min

Merci Brice !

Répondre


Ced Arn 24 juin 2016 à 13 h 13 min

tu peux aussi scinder un tableau en deux row par la fonction split avec comme délimiteur « espace »  » «

Répondre


Romain Lange 7 novembre 2014 à 19 h 57 min

Bonjour,

merci pour le tuto.

Je plante pour importer le contenu d’un agenda Google dans un tableau Google.

Apparemment le XML d’un agenda Google n’est pas valide et ne s’importe pas. J’ai tenté via l’importHTML, échec également.

Avez-vous déjà réussi la manip?

Répondre


Brice 15 novembre 2014 à 17 h 06 min

Je viens de tenter d’importer un calendrier public* avec la fonction importfeed, ca passe tout seul 😉

Dans votre cas, votre calendrier n’est il pas privé ? avez vous bien pris l’adresse au format xml ?

Brice

*https://www.google.com/calendar/feeds/fr.french%23holiday%40group.v.calendar.google.com/public/basic

Répondre


battit64 2 février 2015 à 20 h 21 min

je voudrais le faire sur le bon coin mais un simple xpath //html se met en N/A

y a t’il des limitations dans les constructions des sites

Répondre


Brice 16 février 2015 à 9 h 30 min

En effet, je viens de tester et leboncoin ne semble plus « scrapable » depuis google spreadsheet :'( Le site a du bloquer les ips de google doc…Pour tracker une recherche, vous pouvez toutefois utiliser importrss et l’outils http://starseller.fr/ (qui génère un flux rss depuis une page leboncoin).

Répondre


manougui 19 février 2015 à 19 h 31 min

Je voudrais savoir si c’est possible par exemple de scrapper sur plusieurs pages. Je m’explique : Je voudrais importer les données H2 d’un blog (les titres+lien). J’arrive facilement à importer la première page du blog mais pour le reste des pages on fait comment ?

Merci pour votre tuto

Répondre


Brice 23 février 2015 à 16 h 20 min

Salut, oui tu peux. Le plus simple serait selon moi de faire:

– Trouve le feed RSS du blog, importe l’url (uniquement ca, ca suffira) de chaque article via importrss

– Dans la colonne à coté de l’url des articles, utilises importxml pour extraire les données que tu veux.

easy, pas vrai ?

Répondre


adrienleroy 8 janvier 2016 à 16 h 08 min

Hello Brice,

Merci pour le tuto : top !

– J’ai essayé la méthode sur une page reprenant mes contacts LinkedIn dont je veux extraire le « Prenom Nom »

– L’Xpath que j’ai extrait sur LinkedIn en inspectant l’élément est : « //*[@id= »contact-list-container »]/ul/li[1]/div[3]/h3/a »

La fonction de marche pas, j’ai beau me creuser la tête et essayer plein de modifications je suis bloqué…

Un petit coup de main ne serait pas de trop 😉

Merci !

Adrien

Répondre


Brice 12 janvier 2016 à 22 h 41 min

Salut Adrien. Content que tu aies apprécié.

Pour avoir accès à tes contacts, tu dois être loggé. Quand Google Spreadsheet essaie d’accèder à la page, il arrive en fait sur la page de login de linkedin…Pour t’en rendre compte, affiche le titre (//title) de la page que tu essaies d’extraire. Dommage 😉

Avec Google Spreadsheet, tu ne pourras pas accèder aux pages ou tu dois t’enregistrer. Pour ça, il te faudra un scraper plus puissant (mais plus compliqué aussi) comme Import.io ou – encore mieux – casper.js.

Répondre


Céline 21 janvier 2016 à 10 h 51 min

Bonjour Brice,

je souhaite extraire une liste d’exposants (industrie-expo.com/exposant-liste-exposants/), la problématique est que la liste est interactive et que pour arriver à extraire les coordonnées, je dois cliquer sur chaque nom d’exposants. J’ai essayé avec les aides mentionnées ci-dessus mais je n’arrive pas à extraire ces coordonnées de chaque exposants (dans toutes les pages). Existe t-il une solution dans ce cas là ?

Merci de ton aide.

Céline

Répondre


Brice 1 février 2016 à 15 h 00 min

Bonjour Céline,

Google Spreadsheet ne peut pas simuler de clic, malheureusement. Pour ça, tu devras utiliser des outils tels qu’imacros (http://imacros.net/) ou casper.js (mais il faudra savoir coder ;)).

Dans ton cas, pourquoi ne pas extraire la fiche au format csv ? il y a un export possible apparemment.

Brice

Répondre


steph 17 février 2016 à 0 h 47 min

Bonjour Brice, je suis toute nouvelle dans le growth hacking. Je cherche a creer une requete qui pourra automatiquement extraire des emails de profiles sur viadeo et linked suite a une recherche sur google. J’ai telecharge les fichiers attaches en exemples notamment importxml mais j’avoue que je ne sais pas trop quoi faire d’autant plus que j’ai l’impression qu’il y a des erreurs. Pouvez-vous m’aider? Merci bcp par avance.

Répondre


Brice 17 février 2016 à 10 h 20 min

Bonjour Steph,

Cette technique permet d’extraire les données visibles d’une page publique. Sur viadeo / linkedin, les emails ne sont évidemment pas visibles au public, ce n’est donc pas possible 😉

Répondre


Alexis 11 mars 2016 à 17 h 12 min

Bonjour Brice

L’importXML des résultats de recherche Google ne fonctionne plus ? J’essaie à partir de la feuille mise à dispo et je ne reçois aucun résultats.

Merci pour vos tutos

Répondre


Brice 14 mars 2016 à 12 h 00 min

En effet, il semble que google ait bloqué ses propres IPs (celles de google spreadsheet) ! Comique comme situation…Ca fonctionne tjs sur bing par contre, j’ai modifié ca dans la feuille de calcul. Merci de m’avoir prévenu 😉

Répondre


Nuno 14 avril 2016 à 15 h 10 min

bonjour Brice

je souhaite extraire pour un usage personnel une liste de l’onglet « Returns » de ce site

http://etfdb.com/screener/#asset-class=Equity&leveraged=false&inverse=false&active-or-passive=Passive&tableTab=returns

j’ai mis

=IMPORTHTML(« http://etfdb.com/screener/#asset-class=Equity&leveraged=false&inverse=false&active-or-passive=Passive&tableTab=returns », »table »,1)

J’ai un resultat sous forme de tableau mais celui ci correspond à l’onglet « Overview »

Peux tu me dire s’il est possible extraire cette info (onglet Returns)

Merci de ton aide.

Nuno

Répondre


Brice 14 avril 2016 à 20 h 39 min

Bonjour Nuno,

Comme tu peux le constater, en cliquant sur « returns », la page charge des données dynamiquement depuis le serveur. Google Spreadsheet – en chargeant ton url – ne voit pas ce contenu dynamique mais uniquement le 1er onglet, d’ou ta situation. En analysant la requete depuis la console chrome (dans network), tu peux identifier que l’appel dynamique fait au serveur retourne du json directement exploitable 🙂 –> http://etfdb.com/screener-data/expenses.json/

Tadaaa. Bingo !

De rien.

Répondre


24option 3 mai 2016 à 10 h 25 min

Bonjour

je n y arrive pas du tout

je oushaiterais extraire les annonces du bon quoi j ai tout essaye mais je n y arrive pas est ce que quelqun peut m aider?

Répondre


Brice 3 mai 2016 à 10 h 50 min

il est possible que leboncoin bloque les IP de google spreadsheet (et empeche donc de scraper ses pages). Pour vérifier, faites simplement:

=importxml("ajouter l'url à tester ici";"//title")

Si le titre de la page s’affiche, vous pouvez scraper. Sinon, c’est que les IPs sont bloquées.

Répondre


Karim Sidi Saïd 23 mai 2016 à 10 h 27 min

Xpath importer le nombre de vue de youtube vers google sheets

Bonjour à tous

Je souhaite importer le nombre de vue d’une page youtube vers un document google sheets

Et en lisant cet article très intéressant j’ai découvert qu’il existe une fonction google sheets qui permet de faire cela (la fonction en question est : IMPORTXML)

J’essaye d’importer sur un document google sheets le nombre de vue de cette page youtube

Et pour récupérer le xpath du nombre de vue, je procède ainsi sur google chrome. un clic droit. Je choisis « Procéder à l’inspection de l’élément ». Les outils de développement Chrome vont s’afficher, en surlignant dans le code la ligne que j’ai sélectionné.en suite je fais un clic droit (dans le code), sur cet élément et je choisie « Copy Xpath »:

Après avoir récupéré le xpath je renseigne la fonction google sheets

J’obtiens la fonction suivante sur google sheets

=IMPORTXML(« https://www.youtube.com/user/TopGear/about »; »//*[@id= »browse-items-primary »]/li/div/div[3]/div/span[2]/b »)

google sheets m’affiche erreur

J’ai cherché et je n’ai pas trouvé l’erreur ???

Merci pour votre aide

Répondre


Brice 23 mai 2016 à 10 h 38 min

Le plus simple est de cibler l’attribut du noeud que tu cherches à extraire. Voici le résultat:

https://docs.google.com/a/deux.io/spreadsheets/d/1DloQQkQaOqeDk5W0-pOzuTdRj8_KbOrMI3WUEMyHBzg/edit?usp=sharing

++

Répondre


Bouteiller 22 juin 2016 à 10 h 39 min

Bonjour Brice,

j’utilise actuellement un compte Linkedin Pro, j’effectue des recherches correspondant à des postes au sein d’entreprises (par exemple Directeur Commercial ou Responsable Export) et j’aimerais extraire les listes d’URL des profils LinkedIn correspondant aux résultats de mes recherches dans google spreadsheet (sans avoir à toutes les ouvrir et à faire un copier/coller), est ce que tu sais si c’est possible avec la fonction importxml?

Bonne journée

Henri

Répondre


Brice 22 juin 2016 à 11 h 18 min

Salut Henri,

Les appels depuis Google Spreadsheet sont réalisées depuis les ip de google, donc non loggé sur linkedin.

Par contre, il existe pléthore d’outils pour faire ce que tu demandes (payant par contre): profilehopper.com & salestools.io par exemple

Répondre


jeremy 1 mars 2017 à 14 h 43 min

Bonjour Brice, super tuto !

Par contre une petite question,

J’ai bien importé des données externes dans google sheet, seulement lorsque ces dernières sont modifiées sur l’url en question, elles ne se modifient pas automatiquement dans google sheet.

Je dois couper et recoller le xpath pour que les modifications de données soient prisent en compte.

.y Aurait il un moyen de demander au fichier de le faire automatiquement ?

Merci d’avance !

Répondre


Brice 2 mars 2017 à 9 h 34 min

Hello Jéremy,

2 mécanismes entrent en jeu ici:

1. Google met en cache les requêtes que tu executes (logique)

2. La requete n’est executée qu’une fois, à sa création ou à l’ouverture du fichier (au bémol près mentionné en #1)

pour faire ce que tu veux, il faut donc avoir la possibilité d’excuter la requete a intervalle régulier, et non une seule fois. Importxml n’est pas fait pour ca, les google script le sont: https://www.google.com/script/start/

Répondre


Benoît Dumeaux 27 mars 2017 à 17 h 40 min

Question, peut-on scraper une page qui demande identification ? Et dans ce cas, où rentrer les id et pass ?

Répondre


Brice 3 avril 2017 à 8 h 29 min

Cette technique ne permet pas de faire des actions sur la page scrapées, donc pas d’authentification qui nécessite de remplir un formulaire par exemple…

Répondre


Cyberxotika 7 juin 2017 à 9 h 47 min

Ca ne marche plus avec les résultats de Google… ils ont tout bloqué.

Répondre


Brice 9 juin 2017 à 17 h 30 min

en effet…toutes les bonnes choses ont une fin :'(

Répondre


Eléonore B 25 février 2018 à 11 h 08 min

Y a t’il un moyen (gratuit et simple) autre que la fonction IMPORTXML de Sheets pour scraper les résultats d’une recherche Google stp ?

Car avec ton tuto on peut le faire sur bing mais c’est quand même pas la même chose..

Merci ! 🙂

Eléonore

Répondre


Brice 27 février 2018 à 14 h 34 min

Je viens de voir cette réponse. Sorry.

En gros, Google bloque le scraping depuis GSheet. Pour scraper google, tu vas devoir utiliser un autre outils. Comme tu t’en doutes, des milliers de personnes cherchent à scraper Google, donc tous les outils se font progressivement bloqués. La seule maniere de faire est de coder un bot. Gratuit mais techniquement plus compliqué.

Répondre


Syllox 13 juin 2017 à 14 h 40 min

Bonjour Brice,

Merci pour ce super article.

J’essai de faire passer une requête post pour me connecter à mon espace client Direct Energie,quand je teste sur POSTMAN sur Chrome tout marche nickel je suis connecté et le retour html est la page de mon espace client.

Quand j’essai avec import xml cela reste sur la page de connexion et cela ne prend pas la page final après redirection.

Voici la requête : « https://clients.direct-energie.com/connexion-clients-particuliers/?tx_deauthentification[login]=login&tx_deauthentification[password]=mdp&tx_deauthentification[form_valid]=1 »

A la base je codais cela avec gg script. As-tu des pistes pour m’aider ?

Merci d’avance,

Répondre


Brice 13 juin 2017 à 17 h 47 min

Tu ne peux pas acceder a un page connectée avec importxml. Tu vas devoir continuer avec gscript..

Répondre


Syllox 14 juin 2017 à 15 h 27 min

Bonjour Brice,

Merci pour ta réponse.

Dans ce cas, sais tu m’aiguiller sur ma problématique ? Le lien est ici :

https://stackoverflow.com/questions/44524798/google-script-htmlrequest-post

Merci d’avance pour ton aide,

S.

Répondre


dediesbg 5 juillet 2017 à 14 h 30 min

Bonjour,

Je chercher à extraire les adresses mail contenu dans les pages principales d’une liste de site.

Dans le code pour chacune des pages j’ai bien une syntaxe tu type href= »mailto:[email protected] » mais impossible d’automatiser la fonction avec importxml.

Merci de ton aide précieuse.

G.

Répondre


Brice 6 juillet 2017 à 13 h 10 min

Hello,

utilise la fonction de cette manière

=importxml(A1, "//a[starts-with(@href, 'mailto')]/text()")

ou A1 est ta page

Répondre


NUNO 1 novembre 2017 à 7 h 40 min

Bonjour

j’essaie en vain de recuperer le nom de cette action (Sumiken Mitsui Road Co Ltd)

https://finance.google.com/finance?q=TYO%3A1776&ei=pGL5Wej4BIqOUZTSsNgL

j’ai essayé avec

=importXML(« https://finance.google.com/finance?q=TYO%3A1776&ei=zp34WYj0ENKOUPuWv5gH », »//span[@class=’appbar’] »)

ou avec

=importXML(« https://finance.google.com/finance?q=TYO%3A1776&ei=zp34WYj0ENKOUPuWv5gH », »//*div[@class=’appbar’] »)

et j’ai toujours le meme message

Erreur

Le contenu importé est vide.

merci pour ton aide

Répondre


atx8791 21 novembre 2017 à 14 h 31 min

Bonjour,

Merci pour cet excellent article.

Auriez vous une idée pour scraper les numéros de tel de ce type de pages

https://www.pagesjaunes.fr/recherche/gironde-33/-10-strict-opticiens-mr-catoire-thomas

J’ai des milliers d’urls à faire, mais je ne trouve pas la formule malgré de très nombreux essais

D’avance un grand merci

Répondre


Brice 28 novembre 2017 à 9 h 15 min

Hello,

Les numéros de téléphone ne sont affichés que suite à un click, ils ne sont donc pas accessibles par importxml (qui télécharge la page et t’affiche ce que tu veux dedans).

Dommage…

Répondre


Christophe C. 8 janvier 2018 à 17 h 58 min

Bonjour @Brice

Merci beaucoup pour cet article. Petite question (après quelques heures de recherche et d’auto-éducation infructueuses).

Je cherche à récupérer les infos d’une page leboncoin de vente de véhicule. Donc à savoir rapatrier le prix, la ville, la marque, l’année, le kilométrage, etc. Mettre tout ça dans un google speardsheet pour me faire des stats sur les annonces de telle ou telle voiture.

J’arrive à apercevoir le prix via un importxml sur le xpath //span[@class=’value’]. Mais c’est plusieurs valeurs et une query « select * limit 1 » me met un peu tout sur une ligne.

Ma question est donc : comment mettre un double critère (span class property = Prix et et value = valeur recherchée. Ou bien comment récupérer uniquement le prix ou la ville ou la marque, etc.

Encore merci et bravo pour le support depuis aout 2014 !

Répondre


Brice 8 janvier 2018 à 23 h 00 min

Hello Christophe,

Je viens de tester pour te répondre. Voici le résultat: https://docs.google.com/spreadsheets/d/16iPmtSNUEwODYm_hj-Tp1U7aB4MSDrGwo9v3GuSRPG4/edit?usp=sharing

Comme tu le constateras, je ne suis pas passé par la class value, qui est présente un peu partout, mais par les propriétés « itemprop » qui sont unique et faciles à cibler. Bien plus simple 😉

Cela dit, il est tout de même possible de récupérer la 1ère valeure matchant une classe spécifique, en utilisant (XPATH)[1], je t’ai mis un exemple.

Enjoy 😉

Répondre


Christophe C. 9 janvier 2018 à 0 h 15 min

Un GRAND merci !!! Ca fait tellement longtemps que je cherche à faire ça !!

Bon j’avoue, je n’ai pas tout compris de la syntaxe des xpath … mais j’arriverai à me débrouiller pour cette utilisation (soit dit en passant si tu connais un tuto bien basique sur les xpath … n’hésite pas).

… donc mon but c’est de me constituer une petite base de données pour 2 véhicules (celui que vend et celui que je souhaite acheter) avec plein d’annonces le bon coin, d’en extraire une correlation entre l’age et le prix ou bien le kilométrage et le prix (par exemple). Bien sûr il faudra filtrer les annonces pertinentes à la main mais si la séance de copier/coller est raccourcie (et sans erreurs) c’est le top !

Encore un grand merci !

Répondre


Christophe C. 9 janvier 2018 à 11 h 50 min

re-bonjour,

question complémentaire. Pour quelques champs (kilométrage, carburant, boite de vitesse … tjrs sur leboncoin), l’architecture XML est pas la même et je prends le xpath un peu plus compliqué (sur la span class « value » et en prenant la 5ième valeur). Par contre en fonction des annonces il peut y avoir plus ou moins de « value » et du coup mon index à 5 par défaut ne me renvoie pas tjrs la valeur du kilométrage.

Comment rechercher la span class « property » égale à « kilométrage », puis d’aller chercher sa « value » juste en dessous ? (la question est la même pour le carburant et la boite de vitesse. C’est pas des itemprop et du coup de tableau des « value » peut changer de taille (et donc l’index est erroné).

Peut-on lui dire trouve moi une h2 avec class « clearfix » puis filtrer ceux avec une span class « property » égale à « Kilométrage » et là récupérer la valeur (ou le content ?) de la span class « value »

… ou bien c’est un peu trop compliqué ?

désolé, j’espère ne pas trop polluer ton activité et les commentaires de cette page avec des messages à rallonge.

Répondre


Brice 27 février 2018 à 14 h 31 min

Tout est décrit ici 😉 https://stackoverflow.com/questions/10177169/finding-a-span-with-specific-content-using-xpath

Répondre


Eléonore B 25 février 2018 à 10 h 47 min

Salut, merci beaucoup pour ton tuto très bien fait !

En appliquant tes consignes je me retrouve quasiment tout le temps avec un message d’erreur #N/A « impossible de récupérer cette URL ». Parfois j’attends et j’obtiens les données mais quand ça reste sur #N/A je suis bloquée. Je veux faire quelque chose de très simple en plus, récupérer le titre des 5 premières résultats d’une requête Google (et si possible le faire ensuite pour 200 requêtes Google).

Sais-tu d’où cela vient ? J’ai regardé sur Internet mais il n’y a que des solutions très compliquées et je débute.

Merci d’avance 🙂

Eléonore

Répondre


Eléonore B 25 février 2018 à 11 h 10 min

Bon du coup je pense que c’est parce que Google n’autorise plus le scraping sur ses pages… Quel moyen gratuit et simple utiliserais-tu pour faire cela stp ? Merci !

Répondre


Brice 27 février 2018 à 14 h 32 min

Pour scraper Google ? le plus simple serait de scraper bing plutot…qui lui, n’est pas encore limité 😉

Répondre


tt 31 juillet 2018 à 15 h 44 min

Bonjour,

Merci pour ces infos 🙂

Est ce que les données extraites avec le XML path sont mises à jour en automatique à l’ouverture de la feuille de calcul si on extrait un Xpath qui est modifié plusieurs fois par jour?

Merci

Répondre


Brice 28 août 2018 à 8 h 13 min

En théorie oui, mais il est possible de changer cela => https://support.google.com/docs/answer/58515?hl=fr

Répondre


Laurent 12 décembre 2018 à 15 h 44 min

Merci pour le partage Brice

Sais-tu comment faire lorsque le site interrogé nécessite une authentification ?

Comment indiquer à la fonction ImportHTML le nom d’utilisateur et le mot de passe ?

Merci

Répondre


Brice 4 janvier 2019 à 23 h 13 min

Ce n’est pas possible avec Google Sheet 😥 Il faut passer par des outils plus avancés, comme webscraper, ou directement par du code.

Répondre


Lionel 15 décembre 2018 à 15 h 43 min

Bonjour Brice,

Merci pour ce super article.

Je dois scraper les titres et paragraphes de « Présentation et produits » de 428 Fiches j’ai réussi à obtenir les urls des fiches http://www.salonsimi.com/visiter/liste-des-exposants/fiche-exposant/11910/.

Mais n’arrive pas à extraire le contenu en et de ces pages, j’ai essayé la formule suivante

= IMPORTXML(Lien;//*[contains(@class,’article__content wording article__content–fiche’)]

Mais sans succès, merci par avance pour ton aide.

++

Répondre


Brice 4 janvier 2019 à 23 h 21 min

Hello Lionel

Si tu veux l’ensemble du bloc, utilises le xpath suivant: //div[@class="article__content wording article__content--fiche"]

Mais avec un xpath plus précis (en descendant au niveau du ul par exemple) tu peux récupérer chaque élément 1 par 1, ce sera plus propre.

Bon scraping !

Répondre


Jean Jacques LE MOENNE 24 novembre 2019 à 19 h 10 min

Je voudrais extraire le calendrier annuel de cette page : https://www.europeantour.com/european-tour/schedule/2020/

J’ai besoin d’aide …. merci

Répondre


Brice 3 février 2020 à 14 h 30 min

tu as besoin d’aide ? ou bloques-tu ?

Répondre


Julien H. 9 janvier 2020 à 17 h 58 min

Bonjour,

J’ai une liste de X URL de site e-commerce et j’aimerai via google sheet ou autre extraire les url de la page contenant par Linkedin.

Je n’arrive pas à le faire massivement car tout le monde n’a malheureusement pas la même manière de structurer leur page.

Des idées?

Répondre


Brice 3 février 2020 à 14 h 40 min

tu cherches les urls linkedin c’est bien ca ? dans ce cas tu devrais chercher dans la page les liens qui contiennent « linkedin.com/company ». tu as chercher quelle etait le xpath pour trouver une chaine de caractere dans un lien ?

Répondre


Abdelouahed 14 avril 2020 à 15 h 04 min

Bonjour,

Je souhaite récupérer des prix qui changent chaque jour (heure) sur un site. En utilisant importHtml, à chaque fois la donnée est ecrasée par la suivante. As tu une astuce pour incrémenter la cellule, où je récupère une donnée, à chaque le trigger est activé? Comme ça je garde un historique dans mon spreadsheet?

Merci d’avance pour ta réponse

Répondre


Brice 3 juillet 2020 à 9 h 07 min

Le mieux dans ce cas serait de créer tes propres fonctions google sheet en utilisant google script, on a un tuto pour ca ici: Google Script : Boostez Google Sheet en créant vos propres fonctions !

Répondre


Guillaume 21 mai 2020 à 9 h 14 min

Bonjour,

Merci pour cet article, il m’a bien aidé, mais je bloque encore sur une extraction avec importxml d’un lien d’une image d’un site WordPress

Je trouve le xpath : //*[@id= »innermain »]/div/div/div[2]/div/article/figure/img

ça me donne #error avec

=importxml(« site », »//*[@id= »innermain »]/div/div/div[2]/div/article/figure/img xpath »)

j’ai essayé avec fullxpath : /html/body/div[2]/div[2]/div/div/div/div[2]/div/article/figure/img

ça me donne #N/A avec

=importxml(« site », »/html/body/div[2]/div[2]/div/div/div/div[2]/div/article/figure/img xpath »)

Merci pour votre aide

Répondre


Brice 3 juillet 2020 à 9 h 06 min

Ca dépend du site, difficile de te répondre sans détails 😉

Répondre


Lionel 17 juin 2020 à 9 h 16 min

Hello brice,

J’espère que tu vas bien?

Depuis : https://dictionary.cambridge.org/fr/dictionnaire/anglais/prior

J’essaie d’extraire la prononciation UK à travers le Xpath suivant : =IMPORTXML(URL; »//span[@class=’pron dpron’] »).

Le résultat recherché est : /praɪər/ mais il me renvoie : ERROR.😢

Merci de ton aide.

Lionel

Répondre


Extrayez des milliers de résultats Google dans votre feuille de calcul Google

Le grattage, c'est-à-dire l'extraction de données à partir de sites Web, est l'une des techniques les plus utilisées sur le Web. Les usages sont innombrables: analyse des concurrents, de son positionnement SEO, génération de contenu, suivi des influenceurs, etc., etc., etc.

Une fois les données extraites, il faut les traiter, et là, rien de tel que notre bon vieux tableur… Bref, Scraper + Google Sheets est le paradis des marketeurs

L'un des sites de grattage les plus convoités est bien sûr notre cher Google. Le grattage de Google permet de:

  • Connaître la position de votre site par rapport à plusieurs mots clés
  • Comprendre votre environnement en analysant les sites les mieux classés et suivre les positions des concurrents
  • Analysez le contenu le plus efficace
  • Comprendre les mots clés et les formulations de phrases qui fonctionnent le mieux

Voici donc le guide ultime pour générer un tableau de plus de 500 résultats Google dans Google Sheets. Vous êtes alors libre d'utiliser le contenu selon vos besoins….

Ce que vous apprendrez…

  • l'utilisation de base d' ImportFromWeb
  • comment renvoyer plusieurs informations à partir d'une requête Google
  • Comment renvoyer plusieurs pages de résultats avec plusieurs mots clés dans un seul tableau

Grattez les titres d'une recherche

Les bases du scraping incluent une URL et un chemin d'accès à l'élément de la page à extraire

L'URL

Pour notre plus grand bonheur (et parfois le malheur), Google fait souvent bien les choses! Ainsi, l'URL d'une recherche est facilement modifiable pour l'adapter à nos besoins.

Pas besoin d'analyser tous les paramètres optionnels ici, qui sont également disponibles ici car nous nous concentrerons sur 3 paramètres:

  • q = mot-clé + clé, indiquant la demande
  • hl = fr, indiquant la langue des résultats
  • num = 100, le nombre de résultats à renvoyer. Par défaut, la valeur est 10

Allez, essayons-les sur un mot-clé qui fera du bien à notre planète…

https://www.google.com/search?q=bamboo+toothbrush&hl=en&num=100://www.google.com/search?q=bamboo+toothbrush&hl=en&num=100

Le chemin de l'élément avec XPath

La deuxième étape est la description de notre élément! Pas besoin d'un Master en ingénierie ici, mais vous devez avoir des connaissances de base en HTML.

XPath est un langage pour décrire un élément d'un script XML. Et la bonne nouvelle est que, HTML étant dérivé de XML, XPaths s'applique également à nos pages Web bien-aimées.

Un exemple simple: // h1 indique tous les titres de la page, la double barre oblique indiquant que le chemin est relatif, donc pas nécessairement un enfant direct de la racine du document.

Dans notre cas, le XPath sera un peu plus complexe:

// div [@ class = "g"] // h3

Pour vous aider à écrire vos XPath, installez XPath Helper pour Chrome. Mon article vous aidera à démarrer avec XPaths

//div[@class="g"]indique tous les éléments wrapper pour chaque résultat. Autrement dit, tous les «div» de la classe «g»

Avec XPath Helper:

Et en ajoutant //h3, nous saisissons le titre de chaque conteneur

Me suivez-vous toujours? Maintenant, compilons cela dans notre fonction Google Sheets

Installons d'abord l'addon IMPORTFROMWEB à partir de G Suite Marketplace

Ouvrez une feuille de calcul…

Pss… un autre secret au fait, dans votre barre d'adresse Chrome, tapez simplement les feuilles.

Rechargez votre feuille. Dans le menu, recherchez Modules complémentaires> IMPORTFROMWEB> Activer le module complémentaire.

Tapez ensuite

UNE

B

1

https://www.google.com/search?q=bamboo+toothbrush&hl=en&num=100

2

// div [@ class = ”g”] // h3

3

4

= IMPORTFROMWEB (A1, A2 )

Attendez un instant que les données se chargent…

Remarque: Google et de nombreux sites ne facilitent pas toujours la vie des outils de grattage.

Le moteur derrière IMPORTFROMWEB trouvera généralement un moyen de charger la page en moins de 20 secondes, mais dans certains cas, plus de temps est nécessaire.

Si vous voyez #PENDING_REQUESTS, ouvrez la barre latérale du module complémentaire via le menu: Modules complémentaires> IMPORTFROMWEB> Ouvrir la barre latérale, puis appuyez sur le bouton "Actions" en bas et enfin cliquez sur "Actualiser les demandes en attente"

Vous devriez maintenant voir quelque chose comme ceci:

Importez les descriptions et les liens de résultats

IMPORTFROMWEB a la particularité d'accepter des plages de cellules à la place du sélecteur, permettant ainsi de renvoyer plus d'informations sur nos résultats de recherche.

En utilisant la formule précédente:

UNE

B

C

1

https://www.google.com/search?q=bamboo+toothbrush&hl=en&num=100

2

// div [@ class = ”g”] / / h3

//div[@class="g ]////h3/../@href@class

// div [@ = ”g”] // div [@ class = ”slpf”]

3

4

= IMPORTFROMWEB (A1, A2: C2 )

L'option baseSelector

IMPORTFROMWEB accepte un 3ème paramètre. Il s'agit d'une gamme de cellules contenant des options, ce qui rend la fonction plus puissante et plus flexible.

La liste des options est disponible ici .

Dans notre exemple, nous aurons besoin de baseSelector.

Pour compléter notre tableau, supposons que nous voulons renvoyer la note donnée à certains résultats.

Nous pourrions ajouter le XPath à notre gamme de sélecteurs, comme ceci:

Malheur! Comme tous les résultats n'ont pas de score, les cellules ne sont plus synchronisées. Par exemple, le score en D4 ne correspond pas au résultat de la ligne 4.

L'option baseSelector est notre remède!

UNE

B

C

1

https://www.google.com/search?q=brosse+%C3%A0+dent+bambou&hl=en&num=100

2

// h3

//h3/../@href

// span [@ class = ”st”]

// div [child :: g-review-stars]

3

baseSelector @ class

// div [@ class = ”g”]

4

= IMPORTFROMWEB (A2, A3: D3, A3: B3 )

En modifiant chaque XPath et en passant // div [@ class = ”g”] au baseSelector, nous demandons à la fonction de rechercher à l'intérieur des éléments décrits par le baseSelector.

Voyons cela en action…

Comme vu précédemment, //div[@class="g"]décrit en fait les conteneurs pour chaque résultat.

Par conséquent, après avoir exécuté la fonction, nous avons à nouveau tous les éléments en place:

Renvoyer les résultats de plusieurs mots clés

Quant aux sélecteurs, le paramètre URL accepte également une plage de cellules.

Voici comment obtenir en quelques clics les 100 premiers résultats de plusieurs mots clés!

Modifions légèrement notre feuille de calcul pour générer une liste d'URL à partir de la recherche Google

UNE

B

1

brosse à dents en bambou

= ARRAYFORMULA ("https://www.google.com/search?q=" & SUBSTITUTE ( A1: A5 , "", "+") & "& hl = en & num = 100 ″)

2

abonnement à une brosse à dents en bambou

3

brosse à dents en bambou pas cher

Examen de la brosse à dents en bambou

4

Acheter une brosse à dents en bambou

Ce qui devrait résulter comme suit:

Faisons maintenant référence à la plage d'URL dans notre fonction

= IMPORTFROMWEB ( B1: B5 , A9: D9, A10: B10)

Et voici le résultat:

Tous les résultats pour chaque XPath sont désormais concentrés dans une cellule! En effet, IMPORTFROMWEB traite désormais une table en 3 dimensions.

Nous devrons ajouter une autre option: stackPages.

En basculant stackPages sur TRUE, nous indiquons à la fonction que les pages Google sont une seule séquence de résultats et, par conséquent, elles doivent être empilées dans le même tableau.

Comme notre feuille devient un peu plus complexe, je l'ai réorganisée pour plus de clarté. Voici le résultat:

Désormais, nous ne savons pas à quel mot clé chaque ligne fait référence.

Une autre option nous aidera ici: showUrls.

Avec showUrls défini sur TRUE, une nouvelle colonne apparaîtra pour rappeler l'URL de la page pour chaque ligne.

En utilisant une bonne vieille méthode de recherche matricielle (RECHERCHEV, FILTRE, INDEX ET MATCH), nous pouvons retourner les mots-clés pour chaque résultat. Vérifiez la colonne A!

Voici le résultat final:

Obtenez la feuille de calcul de travail ici:

https://docs.google.com/spreadsheets/d/1kujVAMLe7i7JzIGjTfDHdWS2qW0jJM-PehjIqqI20Ss


JSON à partir d'une URL

Copiez et collez une URL pointant vers un JSON dans votre feuille de calcul et appelez = IMPORTJSON (ref_to_your_id)

Exemple avec la fantastique API Rest Countries

https://restcountries.eu/rest/v2

JSON à partir d'un document Drive

  • Téléchargez un document votre fichier dans un dossier Drive.

L'extension de fichier n'a pas d'importance. Cependant, le fichier ne doit contenir qu'un objet JSON valide.

  • Faites un clic droit sur le fichier, sélectionnez «Partager» et assurez-vous que n'importe qui peut voir le fichier.
  • Copiez le lien et extrayez uniquement la partie id du lien:

Exemple:

dans , extrairehttps://drive.google.com/file/d/1PtwQTmBhoFOU0wy70XNdL7yH4J-s3dQk/view?usp=sharing1PtwQTmBhoFOU0wy70XNdL7yH4J-s3dQk

  • Collez l'id dans votre feuille de calcul et appelez = IMPORTJSON (ref_to_your_id)

JSON à partir d'une requête cUrl

Bien que de plus en plus d'API n'aient besoin que d'une URL pour récupérer des données, d'autres ont besoin de plus d'informations contenues dans une demande plus complexe

Le format cUrl est idéal car il contient toutes les informations nécessaires.

Nous n'avons rien à savoir sur cUrl pour utiliser ImportJSON car, en général, les fournisseurs d'API fournissent la demande cUrl dans leur documentation.

Pour utiliser ImportJSON avec une requête cUrl, copiez et collez-le simplement dans votre cellule et appelez la fonction dessus

Filtration

Un JSON est un arbre d'informations, ce qui signifie qu'il a plusieurs dimensions.

Par conséquent, il rend sa manipulation fastidieuse sans connaissances techniques.

La plupart des outils permettant de naviguer dans un JSON permettent d'étendre et de contracter la branche de l'arborescence. Même si cela facilite la visualisation des informations, cela ne nous aide pas à les manipuler .

Les feuilles de calcul, cependant, sont l'outil le plus flexible pour manipuler les données, mais les feuilles de calcul sont bidimensionnelles par définition: des lignes et des colonnes!

Afin de tenir dans une feuille de calcul, ImportJSON aplatit l’arbre entier en déplaçant chaque élément d’information dans une même dimension

Par exemple, le «prix» dans preOpenMarket> preopen> 0 sera appelé preOpenMarket/preopen/0/price

ImportJSON permet de filtrer l'arborescence pour récupérer uniquement les informations de certaines branches en utilisant un filtre

Exemple

= IMPORTJSON (url, "preOpenMarket / preopen / 0")

Il est également possible d'ajouter plus de filtres en séparant chaque filtre par une virgule

Pivotant

Dans notre exemple précédent, la branche preopen contient un tableau d'éléments qui ont les mêmes propriétés: price, buyQty, sellQty

Il est logique de placer les éléments de ce tableau dans une deuxième dimension. Heureusement, ImportJSON est assez intelligent pour le faire automatiquement!

Par conséquent, chaque fois que la fonction constate que tous les éléments retournés font partie d'un tableau, elle fait pivoter les données dans des colonnes.

Pour créer une table à partir d'un tableau, il suffit de filtrer notre JSON à la racine de notre tableau en utilisant preOpenMarket/preopen

Et voici le résultat:

Les options

Si vous êtes habitué à ImportFromWeb , vous utilisez peut-être le troisième paramètre pour les options . La même logique s'applique à ImportJSON.

Le paramètre options est facultatif et doit pointer vers une plage de deux colonnes. La colonne de gauche définit les noms des options et la deuxième colonne contient les valeurs correspondantes.

Exemple:

Notez que vous pouvez également écrire si vous ne souhaitez pas filtrer le JSON=IMPORTJSON(A1,,A3:B3)

Les filtres disponibles sont

hideHeaders

Masquez les en-têtes de lignes et les en-têtes de colonnes. défaut à faux

hideColumnsHeaders

Masquez les en-têtes des colonnes (en-tête supérieur). défaut à faux

hideRowsHeaders

Masquez les en-têtes des lignes (en-tête de gauche). défaut à faux


+30 formules sur Excel / Google Sheets — Conseils, Astuces & Cas Pratique

Corentin Robert

Corentin Robert

Follow

Feb 10 · 16 min read

Découvrez +30 formules Google Sheet intéressantes à utiliser pour améliorer sa productivité.

+30 formules Excel / Google Sheets — Conseils, Astuces & Cas Pratique

+30 formules Excel / Google Sheets — Conseils, Astuces & Cas Pratique

Si vous avez une tâche à effectuer au travail, il existe probablement un outil qui vous aidera à la mener à bien et cet outil, il y a de fortes chances que ce soit sur une feuille de calcul (ou spreadsheet ou tableur) Google Sheet.

Pourquoi Google Sheet? C’est un outil polyvalent, gratuit, qui améliore la productivité et tout le monde peut apprendre à utiliser les formules de bases.

En connaissant quelques astuces, vous serez plus efficace et vous aurez l’air plus « cool » lorsque vous ferez une démonstration à vos amis ou collègues.

Après avoir travaillé depuis plusieurs années sur Google Sheet, je vous présente, sous forme de guide, +30 formules intéressantes à connaître pour toutes les personnes qui utilisent cet outil au quotidien.

p.s. toutes les formules citées ci-dessous sont en anglais et ne sont pas triées par ordre de difficultés. Des formules équivalentes existent en français.

⚠️ Dans ce guide, se cache un cas pratique sur TripAdvisor. Vous allez découvrir comment capter simplement les données d’une page d’un restaurant (même l’adresse e-mail!).

📧 Si vous avez des questions ou que vous souhaitez faire une formation sur Excel / Google Sheet de ~1h, n’hésitez pas à m’envoyer un e-mail!

👨‍💻 Télécharger le guide complet en pdf, cliquez-ici.


#1 Sheets.new: Formule magique pour ouvrir une nouvelle feuille de calcul.

Beaucoup de gens ne le savent mais si vous tapez “sheets.new” dans votre navigateur et que vous appuyez sur la touche “Entrée”, vous créez une toute nouvelle feuille Google. Cela fonctionne aussi pour Google Docs, Slides & Forms!

Si vous êtes paresseux, connaître ce raccourci est extrêmement satisfaisant et permet de gagner un temps fou (c’est beaucoup trop long d’écrire sheets.google.com dans un navigateur, n’est-ce pas? 😉 )!

#2. IMPORTRANGE: Lier les données de vos documents sur une seule feuille de calcul.

Si vous n’avez besoin de réunir les données de plusieurs documents sur une seule feuille de calcul, la fonction IMPORTRANGE est formidable.

=IMPORTRANGE(“lien_url_du_ spreadsheet”;”nom_de_l onglet!plage_de_la_case_a_importer”)

Il m’a fallu de long mois avant de découvrir la fonction IMPORTRANGE dans Google Sheet. Auparavant, je devais constamment copier-coller les données d’une feuille de calcul à l’autre pour des rapports personnels ou pour des clients.

À l’aide de IMPORTRANGE, vous pouvez connecter les informations vos tableurs entre eux. Cela m’a permis de gagner de précieuses heures chaque mois sur le transfert d’informations et de diminuer les risques d’erreurs. Ecrivez cette formule une seule fois et elle fonctionnera partout! Cela change vraiment la donne, je vous assure.

#3. YAMM: pour gagner du temps (et de l’argent) lors de vos campagnes d’emailing.

Lors de mon stage chez Airbnb, j’ai découvert YAMM (= Yet Another Mail Merge) et cela a complètement modifié mon approche des campagnes d’emailing. Ce module complémentaire, que vous pouvez installer sur Google Sheet, permet d’envoyer à vos prospects, listés sur votre feuille de calcul, un mail que vous avez pré-rédigé sur Gmail.

En utilisant YAMM, vous gagnez du temps et évitez d’utiliser des outil d’emailing coûteux. De plus, l’outil propose d’intégrer des champs dynamiques (éléments qui changent en fonction des informations présentes sur le spreadsheet) à votre e-mail.

Vous avez forcément besoin de YAMM dès maintenant ;)

Pour faire simple, vous utilisez votre feuille de calcul comme base de données en intégrant des champs dynamiques (uniquement si vous le souhaitez). Vous rédigé votre mail, sur Gmail, que vous laissez en brouillon. Une fois prêt, vous lancez votre campagne d’emailing et obtenez un rapport complet sur le taux d’ouverture, de clics et de mails erronés. Cela vous permettra d’économiser beaucoup d’argent dans des outils comme Buzzstream, Woodpecker ou autres.

Pricing: gratuit pour l’envoi de 50 mails / jour, ~10€/an pour envoyer 400 mails / jour avec un nom de domaine associé et 5€/mois pour envoyer 1500 mails / jour avec un nom de domaine associé à G-Suite.

Si vous avez des difficultés à l’utiliser, n’hésitez pas à m’envoyer un email.

#4. VLOOKUP: la formule à connaître.

VLOOKUP est aujourd’hui l’une des formules que j’utilise le plus régulièrement. La formule permet combiner plusieurs sources de données sur une même feuille de calcul.

Elle est peut être un peu effrayante à apprendre mais une fois qu’elle est maîtrisée, vous allez vous en servir très régulièrement.

=VLOOKUP(valeur_de_recherche,tableau_de_recherche,numéro_de_colonne_, type_de_correspondance)

Voici un exemple de VLOOKUP:

  • Exporter l’ensemble des données à propos des achats clients (panier, CA, nombre d’articles, catégories…) dans un onglet.
  • Matcher les catégories d’articles avec différents univers dans un second onglet.
  • Utiliser VLOOKUP pour combiner les données.
  • On obtient alors un onglet complet avec l’ensemble des informations sur les achats clients + les différents univers. Génial!

#5. Détecter & traduire automatiquement vos documents.

À l’aide de la formule ci-dessous, vous pouvez automatiquement détecter puis la traduire dans la langue de votre choix:

=GOOGLETRANSLATE(valeur_de_recherche; DETECTLANGUAGE(valeur_de_recherche); “fr”)

J’ai utilisé cette formule régulièrement lors de la création de l’application MapHero (sans une ligne de code!) pour laisser le choix aux utilisateurs de leur langue avant de finalement tout traduire en anglais, pour simplifier mes feuilles de calcul.

Cette formule est intéressante à utiliser lorsque l’on importe les données d’un site via la formule IMPORTXML ou IMPORTFROMWEB (voir point 9).

De plus, si vous souhaitez uniquement détecter la langue du texte, décomposé cette formule et utilisez uniquement la seconde partie:

=IFERROR(DETECTLANGUAGE(valeur_de_recherche),””)

#6. IMPORTFEED: Espionner vos concurrents directs.

Afin de faire une veille concurrentielle sur les articles que publient vos concurrents, il est intéressant d’utiliser la formule IMPORTFEED après avoir récupérer le flux RSS. Par exemple, vous pouvez suivre et être tenu au courant dès que je publie un article sur Médium avec la formule ci-dessous.

=IMPORTFEED(“https://medium.com/feed/@corent1robert")

Si vous ne savez pas comment obtenir le flux RSS d’un site internet, cet article l’explique très bien.

#7. IMAGE: Sublimer vos feuilles de calcul.

Ajouter une image sur un Google Sheet est simple. Il suffit d’entrer =IMAGE(“URL”) et de remplacer “URL” par l’URL de votre image, et le tour est joué ! N’hésitez pas à ajouter votre logo lorsque vous partagez votre document avec des clients, cela personnalise encore un peu plus la relation.

=IMAGE(“https://cocobay.io/img/consultant-social-media-strategy-background-image.png")

Voici comment ça fonctionne réellement en vidéo:

#8. UNIQUE: Supprimer toutes les données inutiles.

Pour obtenir une feuille de calcul avec une liste de caractères sans doublons, j’utilise UNIQUE. Cela me donne la possibilité de supprimer rapidement toute donnée inutile.

=UNIQUE(valeur_de_recherche)

Le module “Supprimer les doublons” (Données > Supprimer les doublons) fonctionne également très bien.

#9. IMPORTFROMWEB: Scrapper les données d’un site internet (Cas pratique TripAdvisor).

IMPORTFROMWEB vous donne la possibilité, après l’avoir télécharger en tant que module complémentaire, de capter les données de +150 pages de site internet instantanément!

=IMPORTFROMWEB(url_a_scrapper;fonction_xpath)

Voyons l’intérêt d’utiliser cette formule autour d’un cas pratique: celui d’obtenir les données d’une page d’un restaurant TripAdvisor (avec l’adresse mail 😀).

  1. Identifier l’URL du restaurant qui nous intéresse: https://www.tripadvisor.fr/Restaurant_Review-g187147-d10025887-Reviews-Enclos_De_La_Croix-Paris_Ile_de_France.html
  2. Recueillir les xpath du restaurant qui nous intéressent afin de voir répertorier les informations souhaitées sur notre feuille de calcul:
  • Nom du restaurant: //h1[@class=”ui_header h1"]
  • Nombre d’étoiles en moyenne: //span[@class=”restaurants-detail-overview-cards-RatingsOverviewCard__overallRating — nohTl”]
  • Catégorie du restaurant et le prix moyen: //div[@class=”header_links”]
  • Adresse postale: //span[@class=”restaurants-detail-overview-cards-LocationOverviewCard__detailLinkText — co3ei”]
  • Numéro de téléphone: //div[@class=”restaurants-detail-overview-cards-LocationOverviewCard__detailLink — iyzJI”]/a
  • Adresse e-mail: //div[@class=”restaurants-detail-overview-cards-LocationOverviewCard__detailLink — iyzJI restaurants-detail-overview-cards-LocationOverviewCard__contactItem — 1flT6"]/span/a/@href
  • Site Internet: //script[contains(text(),’”website”:”http’)] & (?<=”website”:”)http(.*?)(?=”)

3. Copier l’URL dans un onglet et les xpath dans un autre. Appliquer la formule citée ci-dessus et vous obtenez les informations suivantes. Magie!

4. Répétez le processus sur plusieurs URLs et vous obtiendrez une base de données solides pour contacter de nombreux restaurateurs.

“Si rencontrez une difficultés pour appliquer la méthode ou que vous ne savez pas comment obtenir la liste de toutes les URLs disponibles sur TripAdvisor, n’hésitez pas à me contacter par email. Une heure de formation par téléphone est envisageable.”

#10. Raccourcis clavier: débarrassez-vous de votre souris!

Apprendre les raccourcis claviers est essentiel si vous souhaitez gagner en productivité. Voici une liste des dix raccourcis claviers que j’utilise le plus régulièrement sur Google Sheet:

⌘ + x/v/c: couper/coller/copier.

⌘ + a: pour saisir toutes les cases de l’onglet.

⌘ + z: retour en arrière (si erreur).

⌘ + f: recherche d’un élément dans la feuille de calcul.

⌘ + MAJ + ↓: pour saisir toutes les cases en bas de la colonne sélectionnée.

⌘ + ⌥ + m: insérer un commentaire.

⌘ + MAJ + e: pour aligner le texte au centre.

⌘ + ⌥ + 9: pour masquer la colonne/ligne sélectionnée.

⌘ + k: insérer un lien.

⌥ + ↓: pour passer sur l’onglet suivant.

Si vous souhaitez aller plus loin et découvrir d’autres raccourcis clavier, Google les référence tous dans cet article.

#11. Partager une copie de votre feuille de calcul

En ajoutant /copy à la fin de l’url de votre feuille de calcul que vous partagez, vous donnez la possibilité à d’autres de copier votre document et d’y avoir accès facilement pour faire des modifications.

#12. Collaborer efficacement avec son équipe

Vues filtrées:

Lorsque je travail sur un document partagé avec différents onglets et des filtres appliqués, j’utilise toujours l’option “vue filtrée” afin que chacun puisse voir les données qu’il souhaite sans impacter le reste de l’équipe.

Données > Vues Filtrées > Créer une vue filtrée

Commentaires:

Afin que la communication soit simple et ciblée entre les membres d’une équipe, j’ajoute des commentaires, en taggant les personnes concernées (+), sur des éléments que je ne comprends pas ou manquants.

Ces derniers reçoivent immédiatement une notification par mail pour les prévenir et ils peuvent interagir aux éléments du message soit directement depuis Gmail soit sur la feuille de calcul.

Ajouter “+” dans l’espace commentaire (⌘ + ⌥ + m) pour mentionner la personne de votre choix.

#13. CONCATENATE: relier plusieurs chaînes de caractères dans une seule cellule.

J’ai utilisé cette formule de nombreuses fois lorsque je travaillais sur InstaNinja ou durant ma mission de consultant en marketing stratégique afin de relier plusieurs hashtags dans une même cellule et ainsi pouvoir facilement mettre en place la stratégie de hashtags que j’explique dans ce guide.

=CONCATENATE(valeur_de_recherche)

Pour résumer, cette formule permet d’accoler plusieurs données afin de former un groupe de mot ou phrase dans une même cellule. Cette formule est très utile lorsque vous cherchez à créer des liens de suivi “UTM”.

#14. Historique des versions: restaurer la version précédente

En collaborant à plusieurs ou par inadvertance, il n’est pas rare de voir certaines formules modifiées, des résultats faussés, ou des informations supprimés. Si vous êtes dans ce cas, Google Sheet vous donne la possibilité de restaurer votre document avec une version précédente, qui peut dater de plusieurs semaines.

Voici comment faire:

#15. ZAPIER: connecter différentes plateformes à votre spreadsheet.

Comme expliqué dans l’article “Zapier pour automatiser son business”, vous pouvez vous servir de Zapier afin de connecter différentes plateformes web entre elles. Voici quelques exemples d’usage en connectant d’autres plateformes à Google Sheet.

Stripe-Sheet:

Pour mieux gérer ses finances, je vous invite à créer ce Zap qui connecte Stripe à Google Sheet. Le principe est simple, dès que vous obtenez un nouveau paiement, une nouvelle ligne de calcul se crée. Cela permet, de suivre et mettre à jour automatiquement son rapport financier mensuel.

Twitter-Sheet:

Identifiez rapidement les discussions Twitter sur lesquelles vous êtes en mesure d’apporter de la valeur et interagissez avec cette audience. Vous pouvez gagner de nombreux nouveaux clients avec cette méthode.

Et bien d’autres… comme Sheet-Trello, Gmail-Sheet, Mailchimp-Sheet, etc.

#16. SPARKLINE: analyser & visualiser

La fonction SPARKLINE me permet de traduire rapidement les rangées de chiffres qui se trouvent sur ma feuille de calcul en graphique linéaire, minuscule et dynamique. Créer un graphique pour chaque rangées aurait comme désavantage d’encombrer mon tableur.

=SPARKLINE(valeur_de_recherche)

Je me sers de cette formule pour observer les courbes de progression:

  • des abonnés d’un compte Instagram.
  • de la progression du nombre de publications sur des hashtags.
  • de l’augmentation de visiteurs sur mon blog.

À noter que la courbe est facilement customisable, on peut passer d’un simple graphique linéaire à un graphique en barre avec cette formule:

=SPARKLINE(C:C;{“charttype”;”column”})

Toutes les informations pour modifier et améliorer le visuel des graphiques se trouve ici.

#17. Figer et filtrer pour organiser sa feuille de calcul.

Pour garder un en-tête identifiable lors de la navigation du fichier, je vous invite à figer la première ligne de votre feuille de calcul. J’utilise systématiquement cette astuce pour faciliter les analyses de données.

Saisir la première ligne > “Afficher” > “Figer” > “Première ligne”

En complément de cette astuce, j’active le filtre en première ligne pour, quand j’en ai besoin, mettre en avant uniquement les données qui me sont intéressantes.

Saisir la première ligne > “Données” > “Activer le filtre”

#18. ISEMAIL: adresse email valide?

Avant chaque campagne d’emailing, je vérifie toujours que la structure des adresses mails est correcte à l’aide de la fonction ISEMAIL. Cela ne me permet pas de savoir si le message sera bien délivré, en revanche, cela me permet d’identifier les adresses mails rejetés (comme celles auxquelles il manque le “@” ou le “.com”).

=ISEMAIL(adresse_email)

#19. Créer un code barre.

La fonction “créer un code barre” est peut être la moins connue de cette liste mais elle est incroyablement utile pour créer des codes promos, partager le mot de passe du wifi ou encore partager des informations sur un évènement.

Voici la formule pour générer ce code barre:

=IMAGE(“https://chart.googleapis.com/chart?chs=200x200&cht=qr&chl="&valeur_de_recherche&"")

J’ai aussi utilisé cette formule pour partager un numéro de téléphone, un lien url ou encore une photo.

#20. UPPER, LOWER, TRIM: pour un format de texte cohérent.

Lorsque les textes de votre feuille de calcul sont mal “formatés” avec des minuscules, majuscules et / ou des espaces un peu partout, vous avez la possibilité de les transformer pour obtenir un format de texte cohérent.

=LOWER(valeur_de_recherche) pour obtenir un texte uniquement en minuscule.

=UPPER(valeur_de_recherche) pour obtenir un texte uniquement en majuscule.

=TRIM(valeur_de_recherche) pour supprimer les espaces inutiles.

Vous pouvez combiner LOWER/UPPER avec TRIM:

=TRIM(lower(valeur_de_recherche))

#21. Le mot clé est-il présent dans la cellule?

Lorsque j’ai développé InstaNinja, j’ai rapidement eu besoin de développer ma base de clients. Pour les contacter, je devais simplement récolter les adresses mails présents sur leur profil Instagram et envoyer des mails uniquement à ceux qui avaient certains mots clés dans leur biographie. Voici la formule que j’ai utilisé pour trier les profils collectés.

=SUMPRODUCT( — ISNUMBER(SEARCH({“tatoua*”;”salon”;”mp”;”message”;”tatto*”},valeur_de_recherche)))>0

Plus vous allez ajouter de mots clés à rechercher dans la formule, plus vous avez de chance de tomber sur le mot que vous cherchez. Les “*” permettent de trouver tous les éléments qui ont comme racine commune les caractères de mots devant et/ou derrière.

#22. Extraire la donnée dans une chaîne de caractères.

Adresse e-mail:

Une fois les mots clés de la biographie identifiés et pour continuer sur le .21 ci-dessus, j’ai dû collecter les adresses mails présentes dans les biographies. Ces dernières sont souvent au milieu d’une chaîne de caractères. Pour les répertorier proprement, j’ai utilisé cette formule:

=TRIM(RIGHT(SUBSTITUTE(LEFT(valeur_de_recherche;FIND (“ “;valeur_de_recherche&” “;FIND(“@”;valeur_de_recherche))-1);” “; REPT(“ “;LEN(valeur_de_recherche))); LEN(valeur_de_recherche)))

Complexe et longue à rédiger, cette formule permet d’isoler parfaitement l’adresse mail présent au milieu d’une chaîne de caractères.

Nom de domaine:

Une fois les adresses e-mail isolées, il peut être intéressant de collecter les nom de domaine de ces dernières. Pour cela, voici la formule (la plus simple) avec la fonction SPLIT qui indique que l’on souhaite récupérer toutes informations après le “@”;

=index(split(valeur_de_recherche;”@”);2)

Si vous maitrisez REGEXEXTRACT, cette formule fonctionne aussi bien:

=REGEXEXTRACT(valeur_de_recherche;”^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+)”)

Hashtag:

Pour finir, dans la biographie ou dans les publications que vous collectez, il y a surement des hashtags intéressants, voici la formule pour les isoler avec Google Sheet:

=REGEXREPLACE(valeur_de_recherche, “((^|\s)[^#]\S*)|([^#\w\s]\S*)”, “”)

#23. Passer d’un chiffre au mois.

Sachez qu’il existe plusieurs formules lorsque obtenez une date 05–01–2020 et que vous souhaitez déterminer la mois. Voici la formule la plus simple:

=TEXT(“date”;”mmmm”)

J’ai eu recours à cette fonction lors de ma mission en Marketing Stratégique chez Hemblem pendant que je travaillais sur l’identification des alarmes déclenchées à cause d’un nombre insuffisant de posts publiés par semaine.

#24. Rechercher & remplacer: manipuler la donnée.

Si vous avez, dans votre feuille de calcul, un “.” à la place d’une “,” un espace supplémentaire que vous voulez supprimer ou une chaîne de caractères incorrect sachez que vous pouvez les modifier en trois clics.

  1. Recherchez l’élément incorrect dans la feuille de calcul avec ⌘ + f
  2. Cliquez sur les ⁝ sur le côté, à droite.
  3. Indiquez le terme de recherche avec lequel vous souhaitez remplacer l’élément incorrect.
  4. Cliquez sur “Tout remplacer” et ça fonctionne!

La fonction REGEXREPLACE permet d’obtenir les mêmes résultats mais elle est plus complexe à prendre en main. Pour l’exemple ci-dessous, la formule aurait été cell-ci:

=REGEXREPLACE(valeur_de_recherche;”léa”;”corentin”)

#25. COUNTIF: ne plus jamais compter les cellules manuellement.

La formule COUNTIF indique combien de cellules dans une plage donnée répondent aux critères que vous avez spécifiés. Grâce à cette formule, vous n’aurez plus jamais à compter manuellement les cellules.

=COUNTIF(plage,valeur_de_recherche)

J’ai utilisé cette formule de nombreuses fois lors de campagnes d’emailing pour m’assurer de ne pas envoyer de messages à des personnes ayant déjà reçu mon email!

#26. ARRAYFORMULA: efficace & automatique.

Plus besoin de copier-coller une formule, de la tirer pour l’appliquer sur les champs suivants ou encore de voir ralentir son Google Sheet à un cause d’un nombre trop important de formules. ARRAYFORMULA est une fonction unique, présente dans une seule cellule mais qui permet de s’appliquer automatiquement aux données des champs suivants.

Pour la création de Maphero (sans une ligne de code, uniquement avec Google Sheet!), j’ai utilisé ARRAYFORMULA de nombreuses fois pour appliquer la formule à l’ensemble des champs suivant et gagner du temps.

#27. IMPORTXML: importer sitemap + la balise title et la meta description de chaque page d’un site!

IMPORTXML fonctionne sur le même principe que IMPORTFROMWEB mais celle-ci correspond à une formule intégré à l’environnement Google Sheet (pas besoin de télécharger un module complémentaire). Seule différence, il n’y a pas d’interface explicative ludique avec des templates pour IMPORTXML. Plus compliqué quand on découvre!

Pour cette exemple, on va prendre le blog cocobay.io et voir comment, en quelques secondes et avec Google Sheet, importer le sitemap, la balise title et la meta description de chaque page. Je trouve ces formules hyper utiles quand on veut faire une analyse du site et identifier les éléments manquants pour améliorer la structure et son SEO.

Importer le sitemap:

=IMPORTXML(“https://cocobay.io/sitemap.xml","//*[local-name() =’url’]/*[local-name() =’loc’]”)

J’obtiens les URL des 16 pages présentes sur mon blog!

Pour rappel, le sitemap d’un site est une page simple qui permet d’indiquer aux robots de Google & co. quelles pages peuvent être explorés sur votre site.

Importer la balise “title”:

IMPORTXML(“Page web correspondante au sitemap”, “//title/text()”))

J’obtiens le titre de chaque page initialement indiquée par le sitemap.

Importer la meta description:

=IMPORTXML(“Page web correspondante au sitemap”, “/html/head/meta[@name=’description’]/@content”)

J’obtiens la meta description de chaque page initialement indiquée par le sitemap.

#28. Mise en forme conditionnelle et validation de données.

Il est important de connaître les deux fonctions que je vais vous présenter ci-dessous. Elles permettent de réaliser des tableurs qui soit à la fois esthétiques et simples à utiliser pour gagner en efficacité et mettre en évidence les données importantes.

Mise en forme conditionnelle:

J’apprécie utiliser la mise en forme conditionnelle pour rendre les données accessibles et compréhensibles.

Par exemple, lors de ma mission chez Hemblem, j’ai utilisé la mise en forme conditionnelle pour mettre en évidence la croissance du nombre d’abonnés, d’abonnements et du nombre de publications effectués par mois.

Pour mettre en place cette fonction:

Sélectionnez la / les colonne(s) que vous souhaitez mettre en forme > “Format” > “Mise en forme conditionnelle” > Vous choisissez l’option qui vous correspond le mieux.

Validation des données:

Ajouter une liste déroulante, ou menu déroulant, permet d’ordonner ces feuilles de calcul et de créer différentes thématiques qui peuvent varier dans le temps.

Par exemple, lorsque je bossais en freelance pour Hemblem, la feuille de calcul principal comportait une colonne avec une liste d’éléments déroulants variant en fonction du statut du client (valid, pending, stopped…).

Pour créer ce menu déroulant, voici la méthode:

“Données” > “Validation des données” > “Critère: Liste d’éléments” > Ajout des différents éléments avec une “,” comme séparateur

#29. Utiliser l’IA de GS pour créer des dashboard personnalisés.

À l’aide de l’intelligence artificiel, Google propose de vous créer des graphiques en fonction des données que vous sélectionnez sur votre tableau.

Sélectionnez vos données > “Explorer” (en bas à droite de votre écran) > Différents graphiques apparaissent, sélectionnez celui que vous souhaitez.

Je me sers beaucoup de cette fonction pour créer des dashboard personnalisé et dynamique pour mes clients lorsque je travail en freelance. Il est également possible de créer des dashboard à partir de tableaux croisés dynamiques (Pivot table).

#30. LEN: déterminer le nombre de caractères dans une cellule.

La fonction LEN est une formule simple et basique qui permet de déterminer le nombre de caractères dans une cellule. Je l’ai utilisé notamment lorsque j’ai créé +250 comptes Instagram où je collectais et publiés uniquement les citations avec <= 300 caractères.

=LEN(P17)

Cette fonction peut être associé à LEFT ou RIGHT pour ne sélectionner que les éléments voulus d’une case.

➕ Bonus: bientôt.

Right / Left — Max / Min / Avg — Pivot Table — Merge All — Query — Split — Créer une checklist — Avoir une feuille de calcul “design” — Publier sur le Web — Addons / Modules complémentaires — Macros / VBA


Les macros google spreadsheet

Dernière mise à jour : mercredi 02 mai 2018 à 17h17

Lecture zen

Auteur :

Catégories :

Bureautique et rédaction et Autres (informatique)

Temps de lecture estimé : 13 minutes

Google vous propose parmi tous les services de son drive un logiciel de tableur nommé « Google Spreadsheet ».

Comme beaucoup de tableurs, ce dernier permet d’automatiser les tâches via des macros. C’est ce que nous allons voir dans ce tutoriel.

J’ai tenté de rendre ce tutoriel le plus accessible possible aux utilisateurs de base de Spreadsheet : les personnes qui font de la bureautique ou des formulaires de sondage. Néanmoins, pour votre confort, avoir déjà vu un petit code et en avoir compris le fonctionnement en gros est conseillé.

L’objectif de ce tutoriel est qu’à la fin vous puissiez rapidement faire un petit script qui vous permette de vous faire gagner du temps lorsque vous utilisez ce tableur.

Pour obtenir de l’aide, le forum « Programmation » vous est ouvert, utilisez le tag « Google Spreadsheets » pour donner plus de visibilité à votre message.

Une macro, pour quoi faire ?

Lorsque vous utilisez un logiciel de tableur, qu’il s’agisse des classiques Excel ou Classeur1, ou bien d’une application web telle que Google SpreadSheet ou encore Ethercalc, vous arriverez un jour face à cette problématique :

Je suis en train de faire quelque chose de très répétitif mais il n’existe aucune formule pour le faire à ma place.

Cette situation n’est pas très agréable, et le sera encore moins lorsque votre feuille de calcul sera très longue (ou très large), qu’il faudra beaucoup scroller et que le moindre copier/coller sera sujet à des blocages de l’interface graphique.

Les développeurs sont souvent confrontés à ce problème et, dès lors, ils ont une solution : ils arrêtent de faire le travail eux-même pendant quelque temps et en profitent pour coder un programme –on parle aussi de script – qui fera la tâche à leur place.

efficacité du programmeur en fonction du temps2

Cette idée a été reprise dans les grands logiciels de tableur via le concept de macro. Il s’agit d’un script, créé dans un langage souvent simplifié possédant plein d’outils et qui permet d’automatiser les tâches répétitives tout en les intégrant à l’interface graphique (ajout de bouton, de menu).

Google Spreadsheet ne coupe pas à cette logique. La seule différence c’est que les feuilles de calculs sont exécutées et gérées par votre navigateur. Du coup, pour créer ses macros, Google a choisi le langage JavaScript3.


  1. Pour rappel, Excel est le tableur-grapheur édité par Microsoft dans sa suite Office (et office 365). Classeur est le nom francophone du tableur-grapheur de Libre Office, le fork le plus actif de Open Office. Je ne résiste pas à l’envie de vous donner ce lien de téléchargement.
  2. Notons que ce graphique marche aussi bien en étant lu « nombre d’opérations réalisées en fonction du temps » que « litres de café ingurgités en fonction du temps ».
  3. C’est un des langages du web qui a permis de dynamiser les sites. Si vous voulez voir l’étendue de ses possibilités en dehors de Google SpreadSheet, vous pouvez jeter un coup d’œil ici 

Manipuler la table de données

Les débuts de notre macro

Pour créer votre script, allez dans « Outils » puis « Éditeur de script ».

Vous arrivez sur une nouvelle page (attention, si vous fermez ou actualisez avec F5 votre feuille de calcul, il arrive que cette page se ferme automatiquement).

Un bout de code est écrit sur cette page :

1

2

3

function myFunction() {

}

La fonction de base

Si vous avez déjà programmé dans votre vie, ce bout de code ne devrait pas vous effrayer. Sinon, imaginez simplement qu’il s’agit ici d’un modèle à respecter : le mot function est là pour dire que vous aller définir un ensemble d’actions à exécuter. Le mot myFunction est simplement le nom de votre macro. D’ailleurs, si vous regardez la barre d’outils de votre éditeur de script, l’interface vous propose de sélectionner cette fonction. Si vous changez le nom et que vous sauvegardez (CTRL + S) le nom changera.

Sélectionnez votre macro.

Dans vos fonctions, vous avez droit à plusieurs objets globaux dont Browser et SpreadsheetApp. Le premier permet d’interagir avec l’utilisateur (avec une inputBox par exemple), le second de contrôler ce que vous faites dans votre feuille de calcul.

Notons juste que du point de vue de Google, tout est organisé selon trois niveaux de hiérarchie :

  • La SpreadsheetApp qui contient l’ensemble des objets que vous manipulez. En fait, vous pouvez contrôler toutes les SpreadsheetApp des documents tableur qui sont dans votre drive.
  • La Spreadsheet : c’est le document de tableur dans sa globalité. Il possède par défaut une feuille de calcul (Sheet). Chaque document peut en contenir plusieurs qui sont accessibles via les onglets en bas de page. Accéder aux différentes feuilles de calcul.
  • Le Range : c’est une plage de cellules (une cellule est vue par Google comme un Range de 1 sur 1).

Exécuter une macro demande certaines autorisations. Cette politique de sécurité implique qu’il est impossible de mettre des scripts sur des feuilles publiques. Préférez un partage privé pour cela.

Ecrire et lancer une macro

Jouons avec nos spreadsheets

La première chose à faire, est donc se savoir quelle est la SpreadsheetSheet que nous allons manipuler.

Pour cela, il faut piocher dans les fonctions de SpreadsheetApp et aller trouver getActiveSpreadsheet.

Notre premier défi consistera à afficher son nom. C’est dans Browser que nous trouverons la solution.

En effet, comme nous l’avons précisé auparavant, ce dernier permet d’interagir avec l’utilisateur. Commençons par simplement afficher une boîte à message contenant le titre du document courant.

1

2

3

4

function myFunction() {

  var document = SpreadsheetApp.getActive();

  Browser.msgBox(document.getName());

}

Afficher le nom dans une msgbox.

Il ne reste plus qu’à lancer notre macro. Pour cela : appuyez sur le petit triangle « play » dans l’éditeur de script. Vous devriez obtenir un message lorsque vous affichez votre feuille de calcul.

Affichons notre message.

On peut observer que c’est le titre du document (Spreadsheet) qui est affiché et non le titre de la feuille (Sheet qui s’appelle Feuille 1 par défaut). Pour obtenir le nom de la feuille courante, il faut faire getSheetName à la place de getName.

Maintenant, créons une seconde feuille dans notre document. Pour pouvoir naviguer entre les feuilles, il vous suffira de connaître leur nom.

1

2

3

4

5

6

7

8

9

function myFunction() {

  var document = SpreadsheetApp.getActive();

  var sheet = document.getSheetByName("Feuille 1");

  document.setActiveSheet(sheet);

  Browser.msgBox(document.getSheetName());

  sheet = document.getSheetByName("Feuille 2");

  document.setActiveSheet(sheet);

  Browser.msgBox(document.getSheetName());

}

Le code change de page et affiche leur nom.

Obtenir les données d’une sélection

Pour que votre macro travaille sur des données, vous pouvez

  • renseigner en dur la plage d’action ;
  • sélectionner la plage à la main avant d’activer la macro.

Dans le premier cas, la fonction à aller chercher est SpreadsheetApp.getRange("plage de cellule"). Vous utilisez les plages comme d’habitude (par exemple A1:B2 est une plage carrée de quatre cases en partant d’en haut à gauche). Vous pouvez aussi définir la plage avec des entiers (sachant que les indices commencent à 1, vous auriez donc SpreadsheetApp.getRange(1, 1, 2, 2)). Une fois que vous avez obtenu votre plage, il faut aller chercher les valeurs grâce à la fonction getValues() qui renverra un tableau Javascript (indicé à partir de 0 !) à deux dimensions, le premier indice correspondant à la ligne, le second à la colonne.

Les tableau de javascript sont indicés à partir de 0.

1

 2

 3

 4

 5

 6

 7

 8

 9

10

function maMacro(){

    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

    var range = spreadsheet.getRange("A1:B10");

    var values = range.getValues();

    var s = 0;

    for(var i=0; i<values.length; i++){

         s += values[i][1];

    }

    Browser.msgBox("le premier titre est " + values[0][0] + "la somme est de " + s);

}

Fait la somme de la seconde colonne d’une plage.

Dans le second cas, la procédure est la même, mais avec SpreadsheetApp.getActiveRange().

Exécutez la macro. Retournez sur votre feuille, et s’il y avait de bonnes données, vous devriez avoir un beau message qui apparaît.

Plus loin : plusieurs tableurs, partage…

Un cas qui pourra vous permettre d’utiliser au maximum les possibilités des scripts est le suivant :

  1. Vous avez une feuille avec beaucoup de données détaillées.
  2. Tous les mois, vous aimeriez qu’une synthèse vous soit envoyée sans les détails trop précis.

La macro devra, comme précédemment, aller chercher toutes les données qui l’intéressent. Puis, il vous faudra créer la nouvelle feuille grâce à la méthode create.

Tout de suite après cela, vous voudrez sûrement partager la feuille, les fonctions addEditors et addViewers sont là pour ça.

1

2

3

var sheet = SpreadsheetApp.create("Nouvelle synthèse"); //on crée

sheet.addEditors(["[email protected]", "[email protected]"]); //on partage

sheet.appendLine(["titre1", "titre2"]); //on met des titres

Partager un nouveau tableur

Enfin, vous allez placer les données. Et là mon conseil, c’est d’y aller ligne par ligne. D’une part parce que l’API est plus utilisable dans ce sens (appendRow permet d’ajouter des données, alors que insertColumn ne fait que mettre des cellules vides) mais aussi parce que ça vous permettra de mieux séquencer votre script.

Lancer une macro automatiquement

Nous avons vu comment lancer notre macro/script directement via l’éditeur. Mais avouons que cela n’est pas pratique si nous devons toujours ouvrir un deuxième onglet pour pouvoir exécuter le code qu’on a produit.

Les déclencheurs

Pour cela Google vous fournit un nouvel outil : les déclencheurs (trigger en anglais). Ces outils réagissent à un événement et déclenchent votre macro.

Les événements disponibles sont assez basiques :

  • régulièrement dans le temps (toutes les heures, tous les jours…),
  • lorsque la page s’ouvre,
  • lorsque la feuille est modifiée,
  • lorsqu’un utilisateur valide le Google Form qui est associé à la feuille (uniquement lorsque vous utilisez Google Form)

Pour ajouter un déclencheur, il vous suffit d’aller dans le menu « Édition » puis « Tous les déclencheurs ». Dans la fenêtre qui apparaît, cliquez sur le lien « Ajouter un nouveau déclencheur » et configurez-le comme vous le désirez.

Ajouter un nouveau déclencheur

Mettre une macro dans un menu

Comme nous avons pu le remarquer, les déclencheurs ne permettent pas nativement de dire « lorsque j’appuie sur un bouton, lance ma macro ». Une technique existe néanmoins qui vous permettra d’arriver à ce résultat.

Elle consiste à ajouter un menu à la barre d’outils et une fois le menu ajouté le lien entre la macro et le clique sur le menu est automatique.

Pour ajouter le menu, nous allons faire une macro qui appelle certaines fonctions de SpreadsheetApp, puis nous allons simplement lier cette macro au déclencheur « À partir de la feuille de calcul » => « À l’ouverture ».

C’est pour ça que par convention on aime bien appeler la macro qui génère le menu onOpen.

Dans la fonction onOpen(), nous allons demander à l’interface graphique de notre SpreadsheetApp de créer un menu et d’y insérer notre macro.

1

 2

 3

 4

 5

 6

 7

 8

 9

10

11

12

function laMacroQuiVeutUnBouton(){

}

function onOpen() {

  var ui = SpreadsheetApp.getUi();

  ui.createMenu('Macros') // ce qui est vu dans la barre d'outils

      .addItem('Appliquer ma macro', 'laMacroQuiVeutUnBouton') // le deuxième paramètre fait le lien entre le clique sur le menu et la macro.

      .addToUi();

}

`


Et voilà, maintenant vous êtes capable de créer votre script. S’il vous manque des fonctions, je vous donne une dernière astuce : à partir de l’objet le plus logique pour la fonction recherchée (par exemple, pour gérer les titres, SpreadsheetApp est indiqué alors que pour gérer les valeurs, c’est sur un Range qu’il faut travailler) mettez un « . » puis appuyez sur CTRL + ESPACE et la liste des fonctions disponibles apparaîtra.

Icône distribuée par wikimedia sous licence CC-BY-SA

16 commentaires

anonyme

12/06/17 à 17h12

Merci. :)

+0

-0

bongar

14/06/17 à 03h58

Bonjour, bonsoir communauté, j’ai un problème et je ne trouve pas encore la solution. N’étant pas assez familier avec la programmation, je vous lance mon idée. j’ai une feuille de calcul avec des informations provenant d’un formulaire (je voulais utiliser Googleform afin de récupérer les infos et pouvoir retourner ce que le participant avait donné comme réponses). Dans mon formulaire, il y a un endroit pour le courriel d’un participant. Je voudrais trouver le moyen de retourner les informations soumises par l’individu. Exemple de question du formulaire: combien de tour en 5 minutes. Le participant inscrit 20. Dans la feuille de calcul, il y a 20. Ce 20 correspond au chiffre 100, si c’est 15, ça correspond à 80, ect… Je voudrais que le participant reçoive la réponse qu’il avait donné soit 20 et qu’il reçoive l’autre information de la cellule calculée selon une formule qui donne dans ce cas-ci 100. Il y a d’autres questions dans le formulaire et chacune avec un nombre selon la réponse donnée. J’ai essayé avec importrange dans le la feuille de calcul, dans un autre onglet, mais ça ne fonctionne pas pour envoyer les informations ajoutées.

J’espère avoir été clair, Au plaisir

+0

-0

anonyme

17/07/17 à 14h11

@bongar fait un sujet sur le forum. ;)

+0

-0

ArnaudSiebering

27/11/17 à 09h32

Bonjour, Merci beaucoup pour ce tuto très intéressant. :) Avez vous des liens vers d’autres tutoriels de ce type ou vers des sites qui permettent d’en apprendre plus ? En effet, lorsque l’on a pour habitude de travailler avec vba, il est difficile, de passer à javascrpipt… Y a t il un moyen de convertir vba vers javascript? Merci. ;)

+0

-0

ali.sahouane

24/01/18 à 08h47

Bonjour, Merci beaucoup pour ce tuto très intérresant, j’ai toutefois une petite question et surtout besoin d’un peu d’aide, savez vous si il est possible avec l’éditeur de script d’atacher des libélés sur un nuage de point dans google sheet? j’ai déjà fait une marco sous Excel qui fonctionne très bien mais je n’y arrive pas dans Google sheet. par avance merci beaucoup de votre aide.

+0

-0

runochka

13/03/18 à 12h49

Bonjour, je cherchais un moyen d’automatiser le processus de transformation de chiffres en toutes lettres dans google spreadsheet et je suis tombée sur un javascript… Malheureusement pour moi je ne m’y connais pas en javascript. Je voudrais savoir si le code dessous est utilisable en tant que macro de google et comment l’utiliser sans passer par la publication sur Google Apps Market… Merci par avance de votre aide.

 1

  2

  3

  4

  5

  6

  7

  8

  9

 10

 11

 12

 13

 14

 15

 16

 17

 18

 19

 20

 21

 22

 23

 24

 25

 26

 27

 28

 29

 30

 31

 32

 33

 34

 35

 36

 37

 38

 39

 40

 41

 42

 43

 44

 45

 46

 47

 48

 49

 50

 51

 52

 53

 54

 55

 56

 57

 58

 59

 60

 61

 62

 63

 64

 65

 66

 67

 68

 69

 70

 71

 72

 73

 74

 75

 76

 77

 78

 79

 80

 81

 82

 83

 84

 85

 86

 87

 88

 89

 90

 91

 92

 93

 94

 95

 96

 97

 98

 99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<title>Nouvelle page 1</title>

<script type="text/javascript">

var res, plus, diz, s, un, mil, mil2, ent, deci, centi, pl, pl2, conj;

var t=["","Un","Deux","Trois","Quatre","Cinq","Six","Sept","Huit","Neuf"];

var t2=["Dix","Onze","Douze","Treize","Quatorze","Quinze","Seize","Dix-sept","Dix-huit","Dix-neuf"];

var t3=["","","Vingt","Trente","Quarante","Cinquante","Soixante","Soixante","Quatre-vingt","Quatre-vingt"];

window.onload=calcule

function calcule(){

    document.getElementById("t").onkeyup=function(){

        document.getElementById("lettres").firstChild.data=trans(this.value)

    }

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// traitement des deux parties du nombre;

function decint(n){

    switch(n.length){

        case 1 : return dix(n);

        case 2 : return dix(n);

        case 3 : return cent(n.charAt(0)) + " " + decint(n.substring(1));

        default: mil=n.substring(0,n.length-3);

            if(mil.length<4){

                un= (mil==1) ? "" : decint(mil);

                return un + mille(mil)+ " " + decint(n.substring(mil.length));

            }

            else{  

                mil2=mil.substring(0,mil.length-3);

                return decint(mil2) + million(mil2) + " " + decint(n.substring(mil2.length));

            }

    }

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// traitement des nombres entre 0 et 99, pour chaque tranche de 3 chiffres;

function dix(n){

    if(n<10){

        return t[parseInt(n)]

    }

    else if(n>9 && n<20){

        return t2[n.charAt(1)]

    }

    else {

        plus= n.charAt(1)==0 && n.charAt(0)!=7 && n.charAt(0)!=9 ? "" : (n.charAt(1)==1 && n.charAt(0)<8) ? " et " : "-";

        diz= n.charAt(0)==7 || n.charAt(0)==9 ? t2[n.charAt(1)] : t[n.charAt(1)];

        s= n==80 ? "s" : "";

        return t3[n.charAt(0)] + s + plus + diz;

    }

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// traitement des mots "cent", "mille" et "million"

function cent(n){

return n>1 ? t[n]+ " Cent" : (n==1) ? " Cent" : "";

}

function mille(n){

return n>=1 ? " Mille" : "";

}

function million(n){

return n>=1 ? " Millions" : " Million";

}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// conversion du nombre

function trans(n){

    // vérification de la valeur saisie

    if(!/^\d+[.,]?\d*$/.test(n)){

        return "L'expression entrée n'est pas un nombre."

    }

    // séparation entier + décimales

    n=n.replace(/(^0+)|(\.0+$)/g,"");

    n=n.replace(/([.,]\d{2})\d+/,"$1");

    n1=n.replace(/[,.]\d*/,"");

    n2= n1!=n ? n.replace(/\d*[,.]/,"") : false;

    // variables de mise en forme

    ent= !n1 ? "" : decint(n1);

    deci= !n2 ? "" : decint(n2);

    if(!n1 && !n2){

        return  "Entrez une valeur non nulle!"

    }

    conj= !n2 || !n1 ? "" : "  et ";

    euro= !n1 ? "" : !/[23456789]00$/.test(n1) ? " Euro" : "s Euro";

    centi= !n2 ? "" : " centime";

    pl=  n1>1 ? "s" : "";

    pl2= n2>1 ? "s" : "";

    // expression complète en toutes lettres

    return (" " + ent + euro + pl + conj + deci + centi + pl2).replace(/\s+/g," ").replace("cent s E","cents E") ;

}

</script>

</head>

<body>

<input type='texte' id='t' />

<div id='lettres' style='font-family:verdana; font-size:11px;'>&nbsp</div>

</body>

</html>

+0

-0

anonyme

13/03/18 à 14h39

Je vous invite à faire un sujet sur le forum, vous aurez beaucoup plus de réponses.

+1

-0

Ema1901

12/06/18 à 11h26

Bonjour, où puis-je trouver une "liste" des fonctions qui existent pour programmer des macros? Merci d’avance

+0

-0

serge.gaub

18/07/18 à 11h03

Bonjour, Je début dans google sheets. A l’ouverture la feuille ce position par défaut en haut à gauche du tableau, ce qui a pour conséquence de décourager les utilisateurs.

Je souhaite qu’a l’ouverture de la feuille le tableau se recentre sur la cellule de la colonne B qui contient la date du jour

Je ne sais pas écrire le code.

Pouvez vous m’aider.

+0

-0

Sandy

28/11/18 à 17h40

Bonjour tout le monde, je suis nouvelle ici et novice aussi… Je ne saiq pas si quelqu’un peu 'aider mais bon je tente !!! J’ai un fichier sheets dans lequel on retrouve plusieur feuilles ( environs 30 ) dans lesquelles on retrouve une liste de produits avec des code articles dans la colonne A, l’intitulé du produit colonne B, la date de péremption colonne C. Je voudrais créer un script qui me permettrais d’envoyé sur une feuille nommée "synthese" toutes les dates ( avec le code articles et libellés )de toutes les feuilles, qui vont de la date ou j’ouvrirai le fichier exemple (15 novembre 2018 ) jusqu’à 30 jours après ( 15 décembre ) Est ce possible ???

+0

-0

Chriss

14/01/19 à 15h32

Bonjour,

Je viens vers vous car j’ai réaliser une macro toute simple qui me renvoie vers la feuille 2, j’ai une cellule sur la feuille 1 qui doit être remplie avant d’exécuter le script. Mais comment faire pour lui dire que "si la cellule A8 est vide arrêter le script"

Merci de votre aide.

+0

-0

gombert.david1

27/05/19 à 13h52

Bonjour J’ai créer une macro pour faire un classement de mes donnés de la feuille 1 ( mon classeur contient 8 feuilles ). Cependant impossible de faire fonctionner cette macro que sur la feuille un, des que je modifie une donnée des autres feuilles il m’exécute la macro sur la feuille active.

Comment je peux faire ?

Merci d’avance

+0

-0

PaulHodel

08/01/20 à 23h45

Javascript spreadsheet plugin https://bossanova.uk/jexcel/v3

+0

-0

zockdanielle

28/01/20 à 11h45

Bonjour, Je souhaiterai convertir une macro excel en macro sur googlesheet. Je ne sais pas comment procéder. Je vous mets la macro de base :

Sub DeplacerPaye()

Dim Lig As Long Dim Col As Byte Dim NbrLig As Long Dim NumLig As Long Col = 1 NumLig = Sheets("5 - Bilan Financier").Range("A18").End(xlDown).Row + 1 ' Numéro de la 1ère ligne disponible où on copie

NbrLig = Sheets("4 - Mon prévisionnel").Cells(18, Col).End(xlDown).Row ' Récupère le numéro de la dernière ligne contenant une valeur For Lig = 18 To NbrLig If Sheets("4 - Mon prévisionnel").Cells(Lig, Col).Value = "Payé" Then Worksheets("4 - Mon prévisionnel").Range("A" & Lig & ":K" & Lig).Cut Worksheets("5 - Bilan financier").Range("A" & NumLig) NumLig = NumLig + 1 End If Next

End Sub

Merci d’avance pour votre aide.

+0

-0

max60fr

27/03/20 à 12h06

Bonjour , Je ne réussi pas à trouver le moyen d’empêcher un "dessin" placé dans une cellule appartenant à une ligne figée , de bouger à la réouverture du fichier … Pour + de clarté :

  • Mise en place dessin inséré dans sheet : Ok
  • Ajustement dessin dans cellule : Ok
  • Fermeture fichier Sheets : Ok
  • Réouverture Fichier Sheets : NOk => Le dessin s’est déplacé dans la cellule inférieure ! A noter aussi que deux autres cellules , situées sur la même ligne figée , contiennent elles des dessins qui , eux ne bougent pas ! Je n’est pas réussi à trouver ce qui différencie les deux situations … Un avis ?

Merci par avance. Max.

+0

-0

f.doc1

19/04/20 à 14h17

Bonjour, j’ai fait un fichier Google Sheets qui possède des macros, puis j’ai généré un lien pour que des collègues puissent y accéder. Si on accède au fichier par le lien, les macros sont alors inopérantes, un message invite à se connecter sur le compte Google Drive. Est-il possible que mes collègues puissent disposer des macros par le lien ? Merci Didier

+0


Exemples de feuille de calcul Javascript

Implémentation de React
Un exemple complet sur la façon d'intégrer jExcel à React

Implémentation de VUE
Un exemple complet sur la façon d'intégrer jExcel avec Vue

Implémentation angulaire
Un exemple complet sur la façon d'intégrer jExcel avec Angular

Implémentation de Jquery
Un exemple complet sur la façon d'intégrer jExcel à Jquery

Recherche et pagination
Exemple de feuille de calcul complète avec recherche et pagination pour apporter une grande compatibilité à ceux qui aiment les tables de données.

Types de colonnes
En savoir plus sur les types de colonnes puissants. Cet exemple présente tous les types de colonnes natives et explique comment créer votre propre type personnalisé.

Liste déroulante avancée
Exemples complets sur la façon de gérer les listes déroulantes simples, avancées, multiples, à saisie semi-automatique et conditionnelles. Créez des tableaux javascript incroyables en utilisant des catégories et des images dans vos listes déroulantes.

Sélecteur
de date et d'heure Exemple d'utilisation de l'agenda de base à avancé, sélecteur de date et d'heure

Images
Cet exemple montre comment intégrer et télécharger des images dans votre feuille de calcul

Met à jour par programme
Comment mettre à jour votre feuille de calcul et ses données par javascript

Style de tableau
Apportez une touche très spéciale à vos applications en personnalisant votre feuille de calcul javascript.

Script de table
Personnalisez le comportement de la table à l'aide de javascript

Événements
Apprenez à gérer les événements sur jExcel

Importation de données
Comment importer des données à partir d'un fichier CSV externe, json ou XLSX.

Formules
Libérez la puissance de vos tableaux en apportant des formules et des méthodes javascript personnalisées sur votre feuille de calcul jExcel.

Barres d'outils personnalisées
Exemple complet sur la façon d'activer ou de personnaliser votre barre d'outils de feuille de calcul javascript.

Commentaires sur la colonne
Autorisez les commentaires dans votre feuille de calcul de tableau.

En-têtes En-têtes
imbriqués activés dans votre feuille de calcul et découvrez comment définir ou obtenir des valeurs d'en-tête

Traductions
Comment traduire les messages par défaut de jExcel

Méta-informations
Gardez des informations cachées sur vos cellules en utilisant des méthodes de méta-informations

Cellules fusionnées
Exemple complet sur la façon de gérer les cellules de fusion dans vos tables javascript.

Tri des colonnes
Exemple comment trier le tableau par colonne via javascript.

Colonnes
en lecture seule Exemple de configuration des cellules en lecture seule

Chargement paresseux
Cet exemple apporte une fonctionnalité très intéressante pour gérer des jeux de données de grande table.

Menu contextuel personnalisé
Comment personnaliser le menu contextuel jexcel

Débordement de table
Comment définir une largeur et une hauteur pour les tables de jexcel.


This blog post is actually just a Google Doc! Create your own blog with Google Docs, in less than a minute.