Comment utiliser la fonction IMPORTHTML pour extraire des données d’un site web vers Google Sheets

Video google sheet import html

Imaginez que vous êtes tombé sur un tableau intéressant sur un site web et que vous souhaitez extraire ces données tabulaires dans votre feuille de calcul pour les analyser. Vous pouvez essayer de le copier-coller manuellement, mais ce n’est pas très efficace. Heureusement, Google Sheets dispose d’une fonction pratique, IMPORTHTML, qui vous permet de le faire facilement. Elle importera le tableau et actualisera vos données à intervalles réguliers pour les maintenir à jour.

Comment fonctionne la fonction IMPORTHTML dans Google Sheets ?

La fonction IMPORTHTML de Google Sheets recherche un tableau HTML ou une liste spécifique et en extrait les données. Vous pouvez l’utiliser pour extraire du texte à partir d’un tableau ou d’une liste. Un tableau HTML est défini par la balise <table>, tandis qu’une liste est définie par les balises <ul> (pour les listes non ordonnées) et <ol> (pour les listes ordonnées).

Comment utiliser la formule IMPORTHTML dans Google Sheets

Avant d’utiliser la formule IMPORTHTML, comprenons sa syntaxe.

=IMPORTHTML(URL, type_de_requête, index)

  • URL : L’URL de la page, y compris le protocole (http:// ou https://). Assurez-vous d’encadrer l’URL entre guillemets doubles.
  • type_de_requête : Utilisez “table” si vous voulez importer un tableau, sinon “list” si vous voulez importer une liste.
  • index : L’index du tableau ou de la liste sur la page web. Il commence à 1. Un tableau avec index = 1 signifie que c’est le premier tableau, index = 2 signifie que c’est le deuxième tableau, et ainsi de suite.

Importer des données d’un site web vers Google Sheets avec IMPORTHTML

Comment obtenir les index des tableaux/listes pour extraire des données d’un site web vers Google Sheets à l’aide de la fonction IMPORTHTML

Une page peut contenir un ou plusieurs tableaux et/ou listes. Si vous ne savez pas comment trouver les index des tableaux sur une page HTML, suivez les étapes ci-dessous :

Étape 1

Ouvrez la « Console des développeurs » de votre navigateur. Pour la plupart des navigateurs sur Windows, vous pouvez ouvrir la console en appuyant sur F12. Si vous utilisez un Mac, utilisez Cmd+Opt+J pour Chrome et Cmd+Opt+C pour Safari. Notez que, pour Safari, vous devrez d’abord activer le menu “Développer”.

Google Chrome Developer console

L’apparence précise dépendra de la version de Google Chrome que vous utilisez. Elle peut changer de temps à autre, mais devrait être similaire.

Étape 2

Copiez et collez le code suivant dans la console pour obtenir les index de tous les tableaux :

var index = 1;
[].forEach.call(document.getElementsByTagName("table"), function(elements) {
    console.log("Index: " + index++, elements);
});

Si vous recherchez plutôt tous les index des listes, vous devez obtenir tous les éléments avec les balises <ul> ou <ol>. Le code suivant peut vous être utile :

var index = 1;
[].forEach.call(document.querySelectorAll("ul,ol"), function(elements) {
    console.log("Index: " + index++, elements);
});

Étape 3

Appuyez sur « Entrée ». Vous verrez des nombres qui représentent les index affichés dans les résultats. Déplacez votre curseur sur les éléments du résultat jusqu’à ce que le tableau/liste que vous souhaitez afficher soit mis en évidence.

Comme vous pouvez le voir sur la capture d’écran ci-dessus, le tableau mis en évidence a un index égal à 6.

Comment importer un tableau HTML dans Google Sheets

Voyons comment nous pouvons importer un tableau HTML. Nous allons extraire les derniers taux de change des devises du site web Yahoo! Finance vers Google Sheets. La page ne contient qu’un seul tableau, nous utiliserons donc 1 pour la valeur de l’index.

Créez une nouvelle feuille de calcul vierge dans Google Sheets et donnez-lui un nom, par exemple « Devises ». Ensuite, copiez et collez la formule suivante dans la cellule « A1 ».

=IMPORTHTML("https://finance.yahoo.com/currencies","table",1)

Ensuite, appuyez sur « Entrée » et attendez que le tableau complet soit rempli dans la feuille de calcul.

Dans l’image ci-dessus, nous pouvons voir que la fonction IMPORTHTML a réussi à extraire les dernières données des taux de change dans Google Sheets.

Vous pouvez être intéressé par le suivi des données de taux de change. Dans ce cas, vous voudrez peut-être consulter notre tutoriel sur la façon de créer un suivi des taux de change dans Google Sheets sans programmation.

Comment importer une liste dans Google Sheets

Vous pouvez importer une liste en utilisant la même méthode. La seule différence serait de remplacer le mot “table” par “list” dans le paramètre. Les étapes suivantes expliquent comment extraire des données d’une liste contenant des langages de programmation commençant par la lettre “C”.

Créez une nouvelle feuille de calcul vierge dans Google Sheets et donnez-lui un nom. Ensuite, copiez et collez la formule suivante dans la cellule « C1 » :

=IMPORTHTML("https://en.wikipedia.org/wiki/List_of_programming_languages","list",7)

Appuyez sur « Entrée » et attendez que les données soient extraites, comme le montre la capture d’écran suivante :

Importation d'une liste dans Google Sheets à l'aide de la formule IMPORTHTML

Autres options pour extraire des données dans Google Sheets

Si vous cherchez une autre méthode pour récupérer des données à partir d’une structure différente des tableaux et des listes HTML, voici quelques fonctions Google Sheets que vous voudrez peut-être essayer :

Fonction Description
IMPORTXML Importer des données à partir de fichiers XML et de pages web
IMPORTRANGE Importer des données à partir d’une autre feuille de calcul
IMPORTJSON Importer des données JSON à partir d’une URL
IMPORTDATA Importer des données externes sous forme de texte brut
IMPORTFEED Importer le contenu d’un flux d’actualités RSS ou Atom

Si vous souhaitez importer des données à partir d’autres sources et applications, ou même pouvoir charger des données via des API sans programmation, vous pouvez essayer Coupler.io.

Coupler.io est une solution d’intégration de données pour automatiser les exportations de données à partir de :

  • Applications de comptabilité telles que Xero et QuickBooks
  • CRM comme Pipedrive et HubSpot
  • Bases de données telles que MySQL et BigQuery
  • De nombreuses autres applications et sources, notamment Microsoft Excel, Clockify, Shopify, Airtable, etc.

En plus de cela, Coupler.io offre une intégration JSON pour extraire des données via des API dans Google Sheets sans programmation du tout ! Essayez Coupler.io avec une version d’essai gratuite de 14 jours.

Comment référencer une cellule dans IMPORTHTML dans Google Sheets

Vous voudrez peut-être mettre l’URL et les autres paramètres dans des cellules, puis y faire référence lors de l’utilisation de la formule IMPORTHTML. Dans ce cas, vous pouvez modifier plus facilement les paramètres en modifiant les valeurs des cellules.

Voici un exemple :

Référence de cellule dans la formule IMPORTHTML

Tous les paramètres pour l’URL, la requête et l’index sont placés dans les cellules B1, B2 et B3. Ainsi, vous pouvez facilement écrire la formule IMPORTHTML comme suit :

=IMPORTHTML(B1,B2,B3)

Maintenant, ajoutons la formule ci-dessus dans la cellule A3 :

Ajout de la formule IMPORTHTML à une cellule référencée

Si vous souhaitez récupérer des données historiques plus récentes pour la paire de devises EUR/USD à partir de cette page : https://finance.yahoo.com/quote/EURUSD%3DX/history?p=EURUSD%3DX, vous pouvez placer la chaîne EURUSD dans une cellule – par exemple, B1. Dans ce cas, si vous souhaitez extraire d’autres données de devises, il vous suffit de modifier la valeur de B1. Voici un exemple de la façon de faire référence à la cellule B1 dans la formule IMPORTHTML de Google Sheets :

=IMPORTHTML("https://finance.yahoo.com/quote/" & B1 & "%3DX/history?p=" & B1 & "%3DX", "table", 1)

Maintenant, ajoutons la formule ci-dessus dans la cellule A3 :

Référence à une cellule dans la formule IMPORTHTML

Si vous souhaitez extraire des données historiques pour AUD/USD, modifiez la valeur de B1 en AUDUSD, et vos données se mettront automatiquement à jour.

Conseil : Vous pouvez éviter de taper plusieurs fois B1 en utilisant la fonction SUBSTITUTE. Voici à quoi ressemble la formule mise à jour :

=IMPORTHTML(SUBSTITUTE("https://finance.yahoo.com/quote/{{CURRENCY}}%3DX/history?p={{CURRENCY}}%3DX", "{{CURRENCY}}", B1), "table", 1)

Comment utiliser IMPORTHTML pour importer une partie des données d’un tableau dans Google Sheets

Vous souhaitez extraire uniquement quelques colonnes ? Ou filtrer uniquement les lignes présentant des critères spécifiques ? Vous pouvez réaliser ces opérations en utilisant la fonction QUERY en combinaison avec IMPORTHTML.

IMPORTHTML : Importation de colonnes spécifiques

Supposons que vous disposez d’une feuille de calcul avec une fonction IMPORTHTML qui extrait les dernières données de taux de change EUR/USD d’un site web vers Google Sheets.

Maintenant, vous ne voulez récupérer que les colonnes “Date” et “Clôture”, qui correspondent aux 1re et 5e colonnes. Pour ce faire, vous pouvez combiner votre formule existante avec la fonction QUERY. Voici un exemple :

=QUERY(IMPORTHTML("https://finance.yahoo.com/quote/EURUSD%3DX/history?p=EURUSD%3DX", "table", 1), "SELECT Col1, Col5")

En définissant “SELECT Col1, Col5” dans la fonction QUERY, vous obtiendrez ce résultat :

Récupération uniquement des colonnes Date et Clôture

IMPORTHTML : Importation de lignes spécifiques

Vous pouvez également récupérer des lignes spécifiques. Par exemple, voici comment ajouter un filtre à notre formule précédente pour récupérer uniquement les données avec des valeurs de “Clôture” supérieures à 1,2250 :

=QUERY(IMPORTHTML("https://finance.yahoo.com/quote/EURUSD%3DX/history?p=EURUSD%3DX", "table", 1), "SELECT Col1, Col5 WHERE Col5 > 1.2250")

Maintenant, ajoutons un autre filtre pour récupérer uniquement les 3 meilleurs taux. Voici la formule :

=QUERY(IMPORTHTML("https://finance.yahoo.com/quote/EURUSD%3DX/history?p=EURUSD%3DX", "table", 1), "SELECT Col1, Col5 WHERE Col5 > 1.2250 ORDER BY Col5 DESC LIMIT 3")

Récupération des 3 meilleurs taux

Comment définir un intervalle personnalisé pour actualiser automatiquement IMPORTHTML dans Google Sheets

Par défaut, l’intervalle de rafraîchissement de IMPORTHTML dans Google Sheets est d’une heure. Cependant, vous pouvez accélérer l’intervalle de rafraîchissement si vous le souhaitez. Comme la formule est recalculée lorsque ses arguments changent, vous pouvez l’utiliser pour forcer l’intervalle de rafraîchissement. L’idée est de concaténer l’URL d’origine avec une chaîne de requête qui change périodiquement en fonction du temps que nous définissons, par exemple toutes les 5 minutes. Voici les étapes :

Tout d’abord, ajoutez une chaîne de requête dans l’URL d’origine

Supposons que nous ayons les valeurs suivantes dans B1-B5. La formule IMPORTHTML est définie dans B5. Remarquez qu’une chaîne de requête “?refresh=” & B4 est ajoutée à l’URL d’origine.

Ajout d'une chaîne de requête à l'URL

Nous n’avons pas fini. Passons à l’étape suivante.

Ensuite, utilisez un script et un déclencheur pour automatiser le rafraîchissement

Nous allons actualiser la valeur de B4 toutes les 5 minutes à l’aide d’un script et d’un déclencheur. Par conséquent, la formule IMPORTHTML de Google Sheets sera également actualisée au même intervalle. Suivez ces instructions :

Étape 1

Accédez à l’éditeur de scripts (soit Outils > Éditeur de scripts, soit Extensions > App Script).

Éditeur de scripts

Étape 2

Copiez et collez le code suivant dans le « Code.gs ». Ensuite, enregistrez vos modifications en cliquant sur l’icône de disquette dans la barre d’outils.

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.getRange("B4");
  var refresh = parseInt(cell.getValue().toString());
  var increment = refresh + 1;
  cell.setValue(increment);
}

Code pour modifier la valeur de B4

Étape 3

Ouvrez le menu « Déclencheurs » à gauche, puis cliquez sur le bouton « Ajouter un déclencheur ».

Ouverture du menu Déclencheurs

Étape 4

Définissez un déclencheur pour myFunction afin qu’il s’exécute toutes les 5 minutes. Vous pouvez éventuellement définir les paramètres de notification en cas d’échec sur « Me notifier immédiatement » afin de recevoir une notification immédiate en cas d’erreur.

Ajout d'un nouveau déclencheur

Étape 5

Cliquez sur le bouton « Enregistrer ». Si on vous demande d’autoriser le script à accéder à vos données, accordez l’autorisation.

Étape 6

Exécutez votre script pour la première fois.

Maintenant, vous pourrez voir les données de votre feuille se rafraîchir toutes les 5 minutes. Même lorsque votre feuille de calcul Google est fermée, elle continuera à se rafraîchir.

Combien d’IMPORTHTML Google Sheets peut-il gérer ?

Vous pouvez utiliser IMPORTHTML dans une feuille de calcul Google autant de fois que vous le souhaitez. Auparavant, la limite était de 50 pour les données externes par feuille de calcul Google, mais Google a supprimé cette limitation en 2015. Comme Google Sheets est basé sur le web, vous pouvez constater une baisse de la vitesse si vous avez un grand nombre de formules IMPORTHTML dans votre feuille de calcul, surtout si votre connexion Internet est lente.

Comment extraire des données non publiques d’un site web vers Google Sheets à l’aide de la fonction IMPORTHTML

Vous pouvez vouloir extraire des données d’une URL non publique d’un site web vers Google Sheets. Malheureusement, vous ne pouvez pas le faire à l’aide de la fonction IMPORTHTML. Comme le montre la capture d’écran suivante, qui montre ce qui se passe si vous essayez d’extraire votre liste de contacts LinkedIn.

#N/A Erreur - Impossible de récupérer l'URL

La formule ne fonctionne que si la page est publique et ne nécessite pas de connexion pour accéder aux données. Vous obtiendrez un message d’erreur #N/A Could not fetch url pour accéder à des URL non publiques.

Que faire si la formule IMPORTHTML cesse soudainement de fonctionner dans votre feuille de calcul Google Sheets

Si votre formule cesse soudainement de fonctionner, nous vous recommandons de vérifier les éléments suivants :

  • Vérifiez s’il y a eu un changement d’URL. Bien que cela soit rare, il est possible que la page que vous extrayez ait été déplacée vers une autre URL.
  • Vérifiez s’il y a eu un changement de protocole. Par exemple, le site que vous extrayez utilise maintenant https à la place de http, mais la redirection automatique vers https n’est pas encore configurée par le propriétaire du site.
  • Vérifiez s’il y a eu un changement d’index. Le tableau ou la liste avec l’index = 9 pourrait maintenant avoir l’index = 8.

Si vous ne parvenez toujours pas à extraire les données souhaitées, il se peut que le propriétaire du site web bloque désormais les robots/crawlers pour lire le contenu de leur site web. Vérifiez le fichier robots.txt du site web en naviguant vers /robots.txt.

Erreur de chargement des données IMPORTHTML de Google Sheets

Cette erreur de chargement des données est l’un des problèmes les plus courants avec IMPORTHTML. Vous êtes très susceptible de la rencontrer lorsque vous essayez de récupérer des données à partir de sites web qui utilisent de gros scripts. Ces scripts prennent beaucoup de temps à s’exécuter et peuvent donc présenter des risques en termes de sécurité. Cela signifie que vous ne pouvez pas analyser les pages avec JavaScript à l’aide de IMPORTHTML dans Google Sheets.

Dans ce cas, vous pouvez essayer de trouver une autre source avec les données nécessaires ou opter pour une autre option d’importation de données, par exemple via l’API à l’aide de l’importateur JSON de Coupler.io. Bonne chance !

Home

Related posts