back to top

Comment Intégrer l’API CoinMarketCap à Google Sheets pour Suivre le Prix des Cryptos Gratuitement

Suivre ses investissements en crypto n’est jamais simple. Un wallet par-ci, un autre par-là…
J’ai choisi de tout répertorier dans un fichier Google Sheets, pratique pour voir d’un coup d’œil l’ensemble de mes placements.

Pratique, oui… sauf qu’il y a une tâche fastidieuse : mettre à jour les prix des cryptos.

Comment automatiser le rafraîchissement de ces données pour ne pas avoir à le faire manuellement à chaque fois… et ce, gratuitement ?
Suivez le guide !

Ne vous inquiétez pas, ce guide est destiné aux débutants. Vous n’avez pas besoin de connaissances techniques.

CoinMarketCap et son API

CoinMarketCap est un site web de suivi des prix des crypto-monnaies et propose une API complète qui fournit des données en temps réel… chouette !
Il ne reste plus qu’à trouver comment lier CoinMarketCap à mon Google Sheet.

Pré-requis

Pour intégrer l’API de CoinMarketCap à Google Sheets, vous aurez besoin :
⸱ Une clé API CoinMarketCap : vous devrez vous inscrire au site CoinMarketCap pour obtenir votre clé API gratuite qui permettra de faire communiquer les 2 services ensemble.
⸱ Google Sheets : le tableur en ligne de Google, gratuit, accessible de partout.
⸱ Google Apps Script : c’est la plateforme de scripting développée par Google qui nous servira à créer notre script (elle est intégrée à Google Sheet).

Une fois connecté à votre compte CoinMarketCap, vous pouvez copier votre clé en cliquant ici.

Le script

Maintenant que vous avez votre clé API, nous allons créer le script.
Dans Google Sheets, cliquez sur « Extensions » puis « Apps Script ».

Cliquez sur « Éditeur » à gauche, dans la sidebar. Cliquez sur le « (+) » et « Script »

Vous pouvez maintenant copier / coller ce code :

function CRYPTO(cryptoName) {
  // URL de l'API CoinMarketCap
  var url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/quotes/latest";

  // Votre clé API CoinMarketCap
  var apiKey = 'VOTRE CLÉ API COINMARKETCAP'; // Remplacez par votre clé API

  // Vérifiez que le symbole est valide
  if (!cryptoName || typeof cryptoName !== 'string') {
    Logger.log("Erreur : Symbole invalide ou manquant");
    return "Erreur : Entrez un symbole ou un nom valide (ex: BTC)";
  }

  // Nettoyez le symbole pour ne garder que des caractères alphanumériques
  var cleanedSymbol = cryptoName.toUpperCase().replace(/[^A-Z0-9,]/g, '');

  // Vérifiez que le symbole nettoyé est toujours valide
  if (cleanedSymbol === '') {
    Logger.log("Erreur : Symbole nettoyé invalide");
    return "Erreur : Symbole invalide après nettoyage";
  }

  // Configuration des headers pour l'API
  var headers = {
    "X-CMC_PRO_API_KEY": apiKey,
    "Accept": "application/json"
  };

  // Paramètres pour la requête
  var parameters = {
    "symbol": cleanedSymbol
  };

  try {
    // Construction de l'URL avec les paramètres
    var query = Object.keys(parameters)
      .map(key => key + '=' + encodeURIComponent(parameters[key]))
      .join('&');

    // Requête vers l'API CoinMarketCap
    var response = UrlFetchApp.fetch(url + "?" + query, {
      'headers': headers,
      'muteHttpExceptions': true // Permet d'examiner les réponses avec erreurs
    });

    // Parsez la réponse JSON
    var json = JSON.parse(response.getContentText());

    // Gestion des erreurs API
    if (json.status && json.status.error_message) {
      Logger.log("Erreur API : " + json.status.error_message);
      return "Erreur API : " + json.status.error_message;
    }

    // Extraire le prix en USD
    if (json.data && json.data[cleanedSymbol]) {
      var price = json.data[cleanedSymbol].quote.USD.price;
      Logger.log("Prix trouvé pour " + cleanedSymbol + " : " + price);
      return price;
    } else {
      Logger.log("Erreur : Symbole non trouvé dans la réponse API");
      return "Erreur : Symbole non trouvé";
    }
  } catch (e) {
    // Capture et retour de l'erreur
    Logger.log("Erreur système : " + e.message);
    return "Erreur : " + e.message;
  }
}

Tout est quasiment prêt !
Vous vous souvenez de la clé API que nous avons fait plus tôt ? Il faut la renseigner à la ligne 6 du code.

D’une manière générale, les clés API ne sont pas considérées comme sécurisées.
Gardez la secrète !

Afin de peaufiner l’automatisation, il faut définir a quel interval le script s’exécutera. Pour cela nous allons aller dans les « Déclencheurs » (le symbole de réveil dans la sidebar).

Nous avons plusieurs options ; on peut très bien lui dire de mettre à jour nos crypto automatiquement toutes les heures, toutes les 4 heures, 1 fois par jour ou lorsque l’on ouvre notre Google Sheet.
C’est un choix personel, faites en fonction de ce qui vous arrange, tout en gardant en tête qu’il y a un quota de requêtes API disponible.
Avec un compte gratuit, CoinMarketCap limite ce nombre à 10000 par mois (vous pouvez vérifier le nombre de requête disponible sur votre compte).

Par exemple : si nous lançons notre script à l’ouverture de notre Google Sheets et que nous avons 10 cryptos à surveiller, ça représente 10 requêtes / ouverture (1 crypto = 1 requête).

10000 requêtes ÷ 31 jours = 322 requêtes / jour.
322 requêtes ÷ 10 cryptos = 32 ouverture de fichier / jour.

Utilisation

Maintenant que tout est paramétré, comment utilise-t-on concrétement le script ?

Entrez dans une cellule le sumbole d’une crypto-monnaie (par exemple BTC).
Dans une autre cellule, utilisez la formule personnalisée :
=CRYPTO(B3)
B3 contient le symbole ou le nom de la crypto.

Vous avez désormais le prix en USD dynamiquement dans Google Sheets.
A vos tableaux croisés dynamique !