Le scraping par langage 7 min de lecture

Extraction de données web dans Google Sheets : formules IMPORT et Apps Script

L'extraction de données directement dans Google Sheets : IMPORTXML, IMPORTHTML, Apps Script — les limites des formules et que faire quand elles ne suffisent pas.

ÉW
Équipe Web-Scraping.fr
Collecte de données pour votre activité
Publié le: 12 mars 2025

Si le parsing via Excel / VBA est la voie « de bureau », où les données sont tirées par un script directement dans le classeur, Google Sheets propose quelque chose qu'Excel n'a pas d'origine : des formules-parseurs intégrées. Ici, dans bien des cas, pas besoin d'écrire une seule ligne de code — il suffit d'insérer une fonction dans une cellule, et la feuille charge elle-même les données du site et les met à jour.

Et quand les formules ne suffisent plus, Google Apps Script prend le relais — l'équivalent cloud de VBA, en langage JavaScript. Il sait exécuter des requêtes HTTP, analyser du JSON et travailler selon un calendrier, le tout tournant sur les serveurs de Google et non sur votre ordinateur.

Dans cet article, nous parcourons les deux niveaux : d'abord les formules pour un parsing rapide sans code, puis Apps Script pour les tâches complexes.

Ce qui distingue Google Sheets d'Excel / VBA

La comparaison aide à choisir l'outil selon la tâche :

Critère Excel / VBA Google Sheets
Parsing par formule, sans code Seulement Power Query IMPORTXML, IMPORTHTML, etc.
Langage de script VBA Apps Script (JavaScript)
Lieu d'exécution Sur votre PC Dans le cloud Google
Exécution planifiée Planificateur Windows + macro Déclencheurs d'origine
Travail collaboratif Par fichier Temps réel, par lien
Données financières prêtes Non GOOGLEFINANCE intégrée
Limites de requêtes Pratiquement aucune Quotas Google

Conclusion principale : pour un parsing léger ou moyen, Google Sheets est souvent plus rapide, car la moitié des tâches se règle en une seule formule. Pour les scénarios lourds et non standard, la logique est la même qu'en VBA — seule la syntaxe change.

Niveau 1. L'extraction par formules

IMPORTHTML — tableaux et listes

La fonction la plus simple. Elle extrait un tableau ou une liste en entier, par numéro :

code
=IMPORTHTML("https://example.com/page"; "table"; 1)

Arguments : l'URL, le type d'élément ("table" ou "list") et son numéro d'ordre sur la page. S'il y a plusieurs tableaux sur la page, essayez les indices (1, 2, 3...) jusqu'à trouver le bon. Le résultat « se déverse » automatiquement dans les cellules voisines.

IMPORTXML — extraction ciblée par XPath

Le plus puissant des outils par formule. Il prend une URL et une requête XPath — une expression qui adresse un élément précis du balisage :

code
=IMPORTXML("https://example.com"; "//h1")
=IMPORTXML("https://example.com"; "//div[@class='price']")
=IMPORTXML("https://example.com"; "//span[@id='total']/text()")

Quelques gabarits XPath utiles :

Tâche XPath
Tous les titres h2 //h2
Élément par classe //div[@class='value']
Élément par id //*[@id='price']
Un attribut (par exemple un lien) //a/@href
Le texte dans une balise //span[@class='cur']/text()
N-ième élément d'une liste (//li)[3]

Le plus simple pour trouver un XPath, c'est le navigateur : ouvrir les outils de développement (F12), repérer l'élément voulu, clic droit → Copy → Copy XPath.

IMPORTDATA — CSV et TSV

Si la source fournit un fichier CSV ou TSV prêt, on le tire directement :

code
=IMPORTDATA("https://example.com/data.csv")

La fonction répartit elle-même les valeurs en colonnes. Idéal pour les jeux de données ouverts et les exports.

IMPORTFEED — RSS et Atom

Pour les fils d'actualités et les blogs :

code
=IMPORTFEED("https://example.com/rss")

GOOGLEFINANCE — la finance sans parsing du tout

Mention à part pour GOOGLEFINANCE — la source intégrée de données boursières et de change. C'est le cas où il n'y a rien à parser : Google a déjà tout collecté pour vous.

code
=GOOGLEFINANCE("NASDAQ:AAPL"; "price")
=GOOGLEFINANCE("CURRENCY:USDEUR")
=GOOGLEFINANCE("NASDAQ:GOOGL"; "price"; DATE(2024;1;1); DATE(2024;12;31); "DAILY")

Premier exemple — le cours actuel d'une action, deuxième — le taux d'une paire de devises, troisième — l'historique des cotations sur une période. Si votre besoin tient dans ce que couvre GOOGLEFINANCE, c'est la voie la plus fiable : aucun blocage ni balisage cassé. Le parsing de sites tiers n'est utile que là où ces données manquent ou lorsqu'une source non standard est requise.

Niveau 2. Google Apps Script

Les formules sont pratiques, mais elles ont un plafond : elles ne savent pas s'authentifier, contourner une protection complexe, analyser le JSON imbriqué d'une API ni exécuter une logique conditionnelle. C'est là que commence Apps Script.

Ouvrez la feuille → Extensions → Apps Script — et vous voilà dans l'éditeur de code cloud. C'est l'équivalent direct de l'éditeur VBA de l'article sur Excel, mais en JavaScript.

Requête HTTP : UrlFetchApp

Requête de base vers une page ou une API :

javascript
function getResponse(url) {
  const options = {
    method: 'get',
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
    },
    muteHttpExceptions: true   // ne pas échouer sur les codes 4xx/5xx
  };

  const response = UrlFetchApp.fetch(url, options);

  if (response.getResponseCode() === 200) {
    return response.getContentText();
  }
  return 'ERROR: ' + response.getResponseCode();
}

Comparez avec la fonction GetResponse de l'article sur VBA — la logique est identique : ouvrir la requête, poser le User-Agent, vérifier le code de réponse. Seul l'emballage change : au lieu de MSXML2.XMLHTTP, ici c'est UrlFetchApp.

L'analyse du JSON — native

L'avantage principal d'Apps Script sur VBA : le JSON s'analyse avec une seule commande intégrée, sans fonctions maison ni modules tiers.

javascript
function getPrice(symbol) {
  const url = 'https://example-api.com/quote?symbol=' + symbol;
  const json = getResponse(url);

  const data = JSON.parse(json);   // une ligne au lieu d'ExtractJsonValue
  return data.price;
}

En VBA, il fallait pour cela écrire l'analyse de la chaîne à la main ou brancher VBA-JSON. Ici — JSON.parse, et on travaille aussitôt avec l'objet.

Écrire le résultat sur la feuille

On écrit les données dans les cellules via l'objet feuille :

javascript
function writeQuotes() {
  const tickers = ['AAPL', 'MSFT', 'GOOGL', 'TSLA'];
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // En-têtes
  sheet.getRange(1, 1, 1, 3).setValues([['Ticker', 'Prix', 'Heure']]);

  const rows = [];
  const now = new Date();

  tickers.forEach(function (ticker) {
    const price = getPrice(ticker);
    rows.push([ticker, price, now]);
    Utilities.sleep(1000);   // pause de 1 s entre les requêtes
  });

  // On écrit tout en un seul appel — c'est plus rapide
  sheet.getRange(2, 1, rows.length, 3).setValues(rows);
}

Le principe « accumuler dans un tableau et écrire en un seul appel » compte ici autant pour la vitesse qu'en VBA : setValues sur toute la plage est plusieurs fois plus rapide que l'écriture cellule par cellule en boucle.

Le parsing HTML dans Apps Script

Avec l'analyse HTML intégrée, c'est plus compliqué : Apps Script n'a pas de vrai parseur DOM comme le HTMLDocument de VBA. En pratique, on utilise soit les expressions régulières, soit l'extraction de texte entre des marqueurs :

javascript
function extractByRegex(text, pattern) {
  const re = new RegExp(pattern);
  const match = text.match(re);
  return match ? match[1] : '';
}

// Exemple : extraire le prix de "<span class='price'>152.34</span>"
// const price = extractByRegex(html, "class='price'>([\\d.]+)<");

Pour un balisage complexe, on branche parfois des bibliothèques tierces (par exemple Cheerio via un service d'enrobage), mais dans la plupart des tâches, les regex ou la formule XPath IMPORTXML suffisent.

Une fonction personnalisée pour la cellule

Apps Script permet de créer sa propre formule, appelable directement depuis la feuille comme une fonction intégrée :

javascript
/**
 * Renvoie le prix pour un ticker.
 * @customfunction
 */
function MYPRICE(symbol) {
  return getPrice(symbol);
}

Après l'enregistrement, =MYPRICE("AAPL") fonctionne dans la cellule. VBA offre une possibilité proche via les UDF, mais ici la fonction est aussitôt disponible pour tous ceux qui ont accès à la feuille.

Mise à jour automatique planifiée

En VBA, l'exécution régulière exige le planificateur externe de Windows. Dans Google Sheets, le calendrier est intégré — ce sont les déclencheurs (triggers).

Dans l'éditeur Apps Script : l'icône d'horloge (Déclencheurs) → Ajouter un déclencheur → choisir la fonction, l'événement « Temporel » et l'intervalle (toutes les heures, tous les jours, etc.).

Ou par programme :

javascript
function setupTrigger() {
  ScriptApp.newTrigger('writeQuotes')
    .timeBased()
    .everyHours(1)
    .create();
}

Le script s'exécutera sur les serveurs de Google, même quand votre ordinateur est éteint et la feuille fermée. Pour un parseur VBA, c'est inaccessible sans une machine allumée en permanence.

Limites et pièges

L'approche cloud a son prix — les quotas Google :

  • Les formules IMPORT... se rafraîchissent périodiquement (environ une fois par heure) et sont mises en cache. Pour une actualité à la seconde près, elles ne conviennent pas.
  • UrlFetchApp a un plafond quotidien d'appels (selon le type de compte — généralement quelques milliers de requêtes par jour en gratuit).
  • Le temps d'exécution du script est limité (environ 6 minutes par lancement pour les comptes gratuits). Un parsing long devra être découpé en morceaux.
  • #N/A et Loading... dans les formules signifient souvent que la source n'a pas fourni les données, a changé son balisage ou a bloqué la requête venant des serveurs de Google.

Ces restrictions sont la raison principale pour laquelle le parsing lourd et fréquent revient parfois sur le rail « de bureau » de l'article sur Excel / VBA, où les limites de requêtes n'existent pour ainsi dire pas.

Que choisir : Sheets ou Excel / VBA

Petit mémo :

  • Vite et sans code, données dans une feuille, travail d'équipe → Google Sheets et les formules.
  • Cours de bourse et cotations → d'abord GOOGLEFINANCE, et seulement si elle ne suffit pas — le parsing.
  • Mise à jour automatique sans PC allumé → Google Sheets avec déclencheurs.
  • Gros volumes, requêtes fréquentes, pas de limites, analyse HTML complexeExcel / VBA.
  • Environnement d'entreprise sans cloud, données locales → Excel / VBA.

En résumé

Google Sheets couvre deux niveaux de parsing avec un seul outil. Les formules IMPORTHTML, IMPORTXML, IMPORTDATA et GOOGLEFINANCE règlent les tâches courantes sans une seule ligne de code, tandis qu'Apps Script, avec UrlFetchApp et le JSON.parse natif, prend en charge les cas complexes — dans le cloud, selon un calendrier, sans votre ordinateur.

Par rapport à l'approche de l'article sur Excel / VBA, la logique reste la même — requête, analyse, écriture, gestion des erreurs — mais la syntaxe est plus simple, le JSON se décode d'origine et l'automatisation n'exige aucun planificateur externe. Le prix de ce confort, ce sont les quotas de Google : quand vous les atteignez, il est raisonnable de revenir à la solution VBA de bureau. Les deux outils ne sont pas concurrents mais complémentaires — choisissez selon la tâche concrète.