Retour au blog

Comment Obtenir des Taux de Change en Temps Réel dans Google Sheets (GOOGLEFINANCE, Apps Script et une API de Change)

V
Vlado Grigirov
August 25, 2026
Currency API Exchange Rates Google Sheets Apps Script Tutorial Finexly

Comment Obtenir des Taux de Change en Temps Réel dans Google Sheets (GOOGLEFINANCE, Apps Script et une API de Change)

Obtenir des taux de change en temps réel dans Google Sheets ressemble à un problème résolu. Vous tapez =GOOGLEFINANCE("CURRENCY:USDEUR"), un nombre apparaît, et vous passez à autre chose. Cela fonctionne très bien pour un budget de voyage personnel. Cela cesse de fonctionner dès que la feuille de calcul alimente une facture, une paie, un rapport de chiffre d'affaires ou quoi que ce soit sur quoi un collègue va s'appuyer — à cause d'une restriction de licence, d'une particularité documentée sur les dates et d'une limitation d'Apps Script que presque aucun tutoriel ne mentionne.

Ce guide couvre les trois méthodes concrètes — la fonction native GOOGLEFINANCE, une fonction personnalisée Apps Script adossée à une API de change, et une table de taux planifiée et rafraîchie par un déclencheur temporel — avec les vrais chiffres de quotas, la formulation exacte des mises en garde de Google elle-même, et du code exécutable. Toutes les affirmations ci-dessous sur le comportement de Google sont citées de la documentation de Google, et toutes celles qui ne sont pas documentées sont signalées comme telles.


Les Trois Façons d'Importer des Taux de Change dans Google Sheets

GOOGLEFINANCEFonction personnalisée Apps ScriptTable de taux planifiée
Temps de mise en placeQuelques secondes~10 minutes~20 minutes
Clé d'API nécessaireNonOuiOui
RafraîchissementAutomatique, au recalculAu recalculSur un déclencheur que vous contrôlez
Taux historiquesOui (avec réserves)Selon votre offreOui
Fonctionne dans Apps Script / l'API SheetsHistorique : nonOuiOui
Usage commercial / professionnelRestreint par les conditions de GoogleRégi par les conditions de votre fournisseur d'APIRégi par les conditions de votre fournisseur d'API
Idéal pourConsultations rapides, feuilles personnellesColonnes de conversion ponctuellesTout ce dont quelqu'un d'autre dépend
La plupart des gens devraient commencer par la méthode 1, et basculer vers la méthode 3 dès que la feuille devient critique.


Méthode 1 : GOOGLEFINANCE — Et Ce Que Google en Dit Exactement

La formule de change de base

Le modèle enseigné par tous les tutoriels est un symbole CURRENCY: composé de deux codes devise ISO 4217 concaténés :

=GOOGLEFINANCE("CURRENCY:USDEUR")

Pour convertir un montant situé en cellule A2 :

=A2 * GOOGLEFINANCE("CURRENCY:USDEUR")

Pour construire la paire à partir de deux cellules contenant des codes devise :

=GOOGLEFINANCE("CURRENCY:" & B2 & C2)

Une mise en garde honnête qu'aucun article concurrent ne formule : la forme de symbole CURRENCY:XXXYYY n'apparaît nulle part dans la documentation officielle de Google sur GOOGLEFINANCE. La signature documentée est GOOGLEFINANCE(ticker, [attribute], [start_date], [end_date|num_days], [interval]), et le seul contenu de la page d'aide relatif aux devises est un attribut "currency" (la devise dans laquelle un titre est coté) et un exemple de graphique. La syntaxe de paires CURRENCY: fonctionne, et depuis des années, mais c'est un comportement établi par la communauté, pas un contrat documenté — ce qui veut dire que Google peut le modifier sans préavis d'obsolescence. Google ne publie par ailleurs aucune liste des paires de devises prises en charge, donc tout article qui vous annonce « environ 50 devises » ne fait que deviner.

Taux historiques : la règle d'attribut que tout le monde rate

Passez une date et vous obtenez des données historiques :

=GOOGLEFINANCE("CURRENCY:USDEUR", "close", DATE(2026,1,15))
=GOOGLEFINANCE("CURRENCY:USDEUR", "close", DATE(2026,1,1), DATE(2026,1,31), "DAILY")

Notez l'attribut. Google le documente sans ambiguïté : « Si des paramètres de date sont spécifiés, la requête est considérée comme historique et seuls les attributs historiques sont autorisés. » Les attributs historiques sont open, close, high, low, volume et all — et "price" n'en fait pas partie. "price" est documenté uniquement comme attribut temps réel (« Cotation en temps réel, différée de 20 minutes au maximum »).

Allez regarder maintenant les tutoriels Google Sheets sur les devises les mieux classés : la plupart vous donnent GOOGLEFINANCE("CURRENCY:USDEUR", "price", DATE(...)). Cette combinaison contredit la documentation de Google elle-même. Utilisez "close".

Deux autres comportements documentés qu'il vaut la peine d'intégrer :

  • « Si start_date est spécifié mais pas end_date|num_days, seules les données de ce seul jour sont renvoyées. »
  • « Les résultats en temps réel sont renvoyés sous forme de valeur dans une cellule unique. Les données historiques, même pour une seule journée, sont renvoyées sous forme de plage étendue avec des en-têtes de colonnes. » C'est pour cela qu'une formule historique en apparence correcte déverse deux colonnes et une ligne d'en-tête dans votre mise en page bien rangée, et pourquoi il faut généralement l'entourer d'un INDEX(...,2,2).

Le décalage de midi UTC

Celui-ci corrompt silencieusement les rapports appariés par date. Mot pour mot, de Google :

« Google considère les dates transmises à GOOGLEFINANCE comme correspondant à midi UTC. Les places boursières qui ferment avant cette heure peuvent être décalées d'un jour. »

Si vous rapprochez un grand livre où chaque ligne doit utiliser le taux de sa date de comptabilisation, un décalage d'un jour est une véritable rupture de rapprochement, pas un problème d'arrondi. Si cela décrit votre feuille, lisez notre guide sur les taux de change et la déclaration fiscale avant de considérer une plage déversée par GOOGLEFINANCE comme votre trace d'audit.

Le délai est de 3 minutes, pas de 20

Presque tous les articles sur le sujet vous disent que les taux de change de GOOGLEFINANCE sont « différés jusqu'à 20 minutes ». Ce chiffre de 20 minutes provient de l'avertissement générique sur les cotations de titres attaché à l'attribut "price". La page d'avertissement de Google Finance publie elle-même un tableau des délais par type d'actif, et la ligne Devise — mondiale, fournie par Morningstar — indique 3 minutes. Les cryptomonnaies sont également à 3 minutes.

Les données sont donc plus fraîches que ce que croit Internet. Ce que Google ne publie pas, c'est la fréquence à laquelle Sheets recalcule la formule, et c'est pourtant le chiffre qui vous intéresse vraiment — un taux vieux de 3 minutes logé dans une cellule qui n'a pas recalculé depuis mardi reste un taux de mardi. Quiconque cite un intervalle de recalcul précis cite quelque chose que Google n'a jamais documenté.

À titre de comparaison, Finexly rafraîchit les taux chaque minute et les renvoie à la demande : la fraîcheur dépend donc du moment où vous appelez, et non du moment où la feuille de calcul décide de recalculer. Pour comprendre ce que « temps réel » signifie chez les différents fournisseurs en général, voyez d'où les API de taux de change tirent leurs données.

La restriction d'usage que personne ne cite

C'est le paragraphe le plus important de cet article, et il n'apparaît dans aucun des tutoriels les mieux classés. De la page d'aide Google sur GOOGLEFINANCE, mot pour mot :

« Restrictions d'utilisation : Ces données ne sont pas destinées à un usage professionnel dans le secteur financier, ni à un usage par d'autres professionnels au sein d'entreprises non financières (y compris les entités publiques). Un usage professionnel peut être soumis à des frais de licence supplémentaires auprès d'un fournisseur de données tiers. »

Et de l'avertissement de Google Finance :

« Vous acceptez de ne pas copier, modifier, reformater, télécharger, stocker, reproduire, retraiter, transmettre ou redistribuer les données ou informations présentes ici, ni d'utiliser ces données ou informations dans une entreprise commerciale sans avoir obtenu un consentement écrit préalable. »
« Google ne peut pas garantir l'exactitude des taux de change affichés. Vous devez vérifier les taux en vigueur avant d'effectuer toute transaction susceptible d'être affectée par des variations des taux de change. »

Relisez cela à la lumière de ce que fait réellement votre feuille. Tarifer une facture client, convertir des factures fournisseurs pour la comptabilité ou exporter un chiffre d'affaires converti dans un rapport que vous envoyez à un client, ce n'est manifestement pas « à titre informatif ». Une API de taux de change sous licence supprime la question entièrement, et c'est cela — et non l'exactitude brute — la vraie raison pour laquelle les équipes financières abandonnent GOOGLEFINANCE.

Et le blocage dur

« Les données historiques ne peuvent pas être téléchargées ni consultées via l'API Sheets ou Apps Script. Si vous tentez de le faire, une erreur #N/A s'affichera à la place des valeurs dans les cellules correspondantes de votre feuille de calcul. »

Dès l'instant où vous voulez automatiser quoi que ce soit — un export nocturne, une extraction via l'API Sheets, un script qui capture les taux — les données historiques de GOOGLEFINANCE sont hors jeu, par conception. C'est le mur qui pousse les gens vers la méthode 2.


Méthode 2 : Une Fonction Personnalisée Apps Script Adossée à une API de Change

Une fonction personnalisée est une fonction JavaScript écrite dans Apps Script que vous appelez depuis une cellule comme n'importe quelle fonction native. Google confirme explicitement que cela fonctionne avec des requêtes web : les fonctions personnalisées « ne peuvent appeler que des services qui n'ont pas accès à des données personnelles », et URL Fetch figure sur la liste des services autorisés.

Étape 1 : Obtenir une clé d'API et la stocker correctement

Récupérez une clé gratuite sur le tableau de bord Finexly — 1 000 requêtes par mois, sans carte bancaire. Ensuite, et c'est important : ne l'écrivez pas en dur. Deux des tutoriels Google Sheets sur les devises les plus référencés collent la clé d'API directement dans le script, dans un fichier qui voyage avec la feuille de calcul vers toute personne à qui vous la partagez.

Dans l'éditeur Apps Script (Extensions → Apps Script), exécutez ceci une fois depuis l'éditeur pour stocker la clé dans les propriétés du script :

function storeApiKey() {
  PropertiesService.getScriptProperties()
    .setProperty('FINEXLY_API_KEY', 'YOUR_API_KEY');
}

Supprimez ensuite la valeur littérale du fichier. Notez les limites documentées : la valeur d'une propriété est plafonnée à 9 KB, et un magasin de propriétés à 500 KB au total — largement suffisant pour une clé, mais ce n'est pas un endroit où mettre des données en cache.

Étape 2 : Une fonction personnalisée pour une seule paire

/**
 * Returns the live exchange rate for a currency pair.
 *
 * @param {string} from Base currency code, e.g. "USD".
 * @param {string} to Quote currency code, e.g. "EUR".
 * @return The exchange rate.
 * @customfunction
 */
function FX_RATE(from, to) {
  if (!from || !to) throw new Error('Both currency codes are required.');

  var pair = String(from).toUpperCase() + '_' + String(to).toUpperCase();
  var cache = CacheService.getScriptCache();
  var hit = cache.get(pair);
  if (hit !== null) return Number(hit);

  var key = PropertiesService.getScriptProperties().getProperty('FINEXLY_API_KEY');
  var res = UrlFetchApp.fetch(
    'https://api.finexly.com/v1/rate?from=' + encodeURIComponent(from) +
      '&to=' + encodeURIComponent(to),
    {
      headers: { Authorization: 'Bearer ' + key },
      muteHttpExceptions: true
    }
  );

  var code = res.getResponseCode();
  var body = JSON.parse(res.getContentText());
  if (code !== 200) {
    throw new Error(body.error ? body.error.code + ': ' + body.error.message : 'HTTP ' + code);
  }

  cache.put(pair, String(body.rate), 300); // 5 minutes
  return body.rate;
}

Utilisez-la dans une cellule :

=FX_RATE("USD","EUR")
=A2 * FX_RATE($B$1, $C$1)

Le point de terminaison /v1/rate renvoie {"pair": "USD_EUR", "rate": 0.9215}. La référence complète des paramètres se trouve dans la documentation de l'API Finexly.

Étape 3 : Traiter la plage par lot — la partie que tous les concurrents oublient

Voici le mode de défaillance. Google le documente directement :

« Chaque fois qu'une fonction personnalisée est utilisée dans une feuille de calcul, Sheets effectue un appel distinct au serveur Apps Script. Si votre feuille de calcul contient des dizaines (voire des centaines, ou des milliers !) d'appels à des fonctions personnalisées, ce processus peut être lent. »

Étirez FX_RATE sur 400 lignes et vous avez fait 400 allers-retours. Avec une limite de 30 secondes par exécution sur les fonctions personnalisées, vous obtiendrez #ERROR! accompagné de la note Exceeded maximum execution time (line 0). bien avant d'atteindre le quota de votre API.

La solution que Google recommande est le traitement par lot via des plages : accepter une plage, renvoyer un tableau. Le point de terminaison /v1/convert de Finexly accepte des paires séparées par des virgules, si bien que la colonne entière devient une seule requête HTTP :

/**
 * Converts a column of amounts from one currency to another in a single API call.
 *
 * @param {A2:A400} amounts Range of amounts.
 * @param {string} from Base currency code.
 * @param {string} to Quote currency code.
 * @return {Array} Converted amounts.
 * @customfunction
 */
function FX_CONVERT_RANGE(amounts, from, to) {
  var rate = FX_RATE(from, to);           // one fetch, then cached
  var rows = Array.isArray(amounts) ? amounts : [[amounts]];
  return rows.map(function (row) {
    return row.map(function (v) {
      return (v === '' || v === null) ? '' : Number(v) * rate;
    });
  });
}
=FX_CONVERT_RANGE(A2:A400, "USD", "EUR")

Une formule, un appel réseau, 399 allers-retours en moins. Si vous avez besoin de plusieurs paires d'un coup, appelez /v1/convert?q=USD_EUR,USD_GBP,USD_JPY et lisez body["USD_EUR"].rate.

Ce que Google dit réellement du cache dans les fonctions personnalisées

CacheService est utilisé ci-dessus, mais soyons précis sur la raison. Le guide des fonctions personnalisées de Google qualifie le service Cache de « Fonctionne, mais pas particulièrement utile dans les fonctions personnalisées. » L'avantage du cache n'est réel qu'entre des exécutions distinctes — des recalculs répétés de la même paire — et non au sein d'une même plage déversée. Le traitement par lot est l'optimisation documentée ; le cache n'est qu'un complément utile.

Les limites documentées du cache : des clés jusqu'à 250 caractères, des valeurs jusqu'à 100 KB, un plafond de 1 000 éléments, et une expiration comprise entre 1 seconde et 21 600 secondes (6 heures), avec une valeur par défaut de 600 secondes. Aucun quota journalier n'est publié pour les appels au cache.

Encore un piège documenté, car le contournement circule largement : ajouter NOW() comme argument pour forcer un rafraîchissement casse la fonction. Google : « Les arguments des fonctions personnalisées doivent être déterministes … Si une fonction personnalisée tente de renvoyer une valeur basée sur l'une de ces fonctions natives volatiles, elle affiche Loading... indéfiniment. »


Méthode 3 : Une Table de Taux Planifiée (Le Schéma de Production)

Les fonctions personnalisées recalculent quand Sheets en a envie, ce qui est exactement la mauvaise propriété pour une feuille que quelqu'un d'autre lit. Le schéma robuste consiste à cesser complètement d'interroger l'API depuis les cellules : écrire les taux dans une table selon une planification, puis les consulter avec de simples formules.

Le script de rafraîchissement

var PAIRS = ['USD_EUR', 'USD_GBP', 'USD_JPY', 'USD_CAD', 'USD_AUD', 'USD_CHF'];

function refreshRates() {
  var key = PropertiesService.getScriptProperties().getProperty('FINEXLY_API_KEY');
  var res = UrlFetchApp.fetch(
    'https://api.finexly.com/v1/convert?q=' + PAIRS.join(','),
    { headers: { Authorization: 'Bearer ' + key }, muteHttpExceptions: true }
  );

  if (res.getResponseCode() !== 200) {
    console.error('Finexly refresh failed: ' + res.getContentText());
    return; // keep yesterday's rates rather than blanking the sheet
  }

  var data = JSON.parse(res.getContentText());
  var stamp = new Date();
  var rows = PAIRS.map(function (p) {
    return [p, p.split('_')[0], p.split('_')[1], data[p].rate, stamp];
  });

  var sheet = SpreadsheetApp.getActive().getSheetByName('Rates') ||
              SpreadsheetApp.getActive().insertSheet('Rates');
  sheet.clear();
  sheet.getRange(1, 1, 1, 5)
       .setValues([['Pair', 'From', 'To', 'Rate', 'Updated (UTC)']])
       .setFontWeight('bold');
  sheet.getRange(2, 1, rows.length, 5).setValues(rows);
}

Deux détails distinguent ce script de ceux que vous trouverez ailleurs. D'abord, un seul appel à setValues(), et non un par cellule — les écritures groupées sur une plage sont nettement plus rapides. Ensuite, une requête en échec sort immédiatement au lieu d'effacer la table : un hoquet du fournisseur laisse donc des taux périmés mais datés, plutôt qu'une feuille pleine de cellules vides qui transformerait silencieusement chaque total en aval en zéro.

Créer le déclencheur

function installTrigger() {
  ScriptApp.getProjectTriggers().forEach(function (t) {
    if (t.getHandlerFunction() === 'refreshRates') ScriptApp.deleteTrigger(t);
  });
  ScriptApp.newTrigger('refreshRates').timeBased().everyHours(1).create();
}

Google documente que les déclencheurs temporels peuvent s'exécuter « aussi fréquemment que chaque minute ou aussi rarement qu'une fois par mois », et que l'heure de déclenchement est volontairement approximative : « si vous créez un déclencheur récurrent à 9 h, Apps Script choisit une heure entre 9 h et 10 h. » Si vous utilisez everyMinutes(n), n doit valoir 1, 5, 10, 15 ou 30 — aucune autre valeur n'est acceptée.

Lire les taux

=XLOOKUP("USD_EUR", Rates!A:A, Rates!D:D)
=A2 * XLOOKUP($B$1 & "_" & $C$1, Rates!A:A, Rates!D:D)

Toutes les conversions du classeur se résolvent désormais instantanément depuis des cellules locales, utilisent un taux unique et cohérent, et portent un horodatage visible. Ce dernier point est celui sur lequel les auditeurs vous interrogent.


Quotas et Limites Que Vous Atteindrez Vraiment

Voici les chiffres Apps Script publiés par Google — utiles à connaître avant de concevoir autour d'eux :

LimiteCompte particulier (gmail.com)Compte Google Workspace
Appels URL Fetch20 000 / jour100 000 / jour
Temps d'exécution total des déclencheurs90 min / jour6 h / jour
Lectures/écritures de propriétés50 000 / jour500 000 / jour
Temps d'exécution des fonctions personnalisées30 s / exécution30 s / exécution
Temps d'exécution des scripts6 min / exécution6 min / exécution
Déclencheurs par utilisateur et par script2020
Longueur d'URL pour URL Fetch2 KB / appel2 KB / appel
Ce plafond d'URL de 2 KB est la limite pratique du nombre de paires que vous pouvez faire tenir dans un seul lot ?q= — largement plus d'une centaine, mais pas illimité.

Côté API, l'offre gratuite de Finexly autorise 1 000 requêtes par mois à raison de 10 requêtes par minute. Un déclencheur horaire consomme environ 730 requêtes par mois — dans l'offre gratuite, avec de la marge. Ajoutez une poignée d'appels ponctuels à des fonctions personnalisées et l'offre Starter deviendra peut-être intéressante ; les paliers actuels figurent sur la page tarifs. Notez que les taux historiques nécessitent une offre payante : si vous avez besoin de taux antidatés et d'un budget nul, GOOGLEFINANCE reste la réponse honnête pour un usage personnel et non professionnel.

Chaque réponse comporte les en-têtes X-RateLimit-Limit, X-RateLimit-Used et X-RateLimit-Units, ce qui vous permet de journaliser la consommation depuis res.getAllHeaders() et de voir venir une limite.


Erreurs Courantes et Comment les Corriger

Ce que vous voyezCauseCorrection
#N/A renvoyé par GOOGLEFINANCEPaire non prise en charge ou mal saisie, ou données historiques demandées via Apps Script / l'API SheetsVérifiez les deux codes ISO ; pour l'automatisation, utilisez plutôt une API
#ERROR! avec « Exceeded maximum execution time (line 0). »Trop d'appels individuels à des fonctions personnaliséesPassez au schéma par lot FX_CONVERT_RANGE
Loading... à l'infiniNOW(), RAND() ou une autre fonction volatile passée en argument d'une fonction personnaliséeRetirez-la — Google documente cela comme non pris en charge
401 UNAUTHORIZED / invalid tokenClé d'API manquante ou erronéeVérifiez que la propriété du script est définie et que l'en-tête indique Bearer <key>
429 RATE_LIMIT_EXCEEDEDPlafond par minute ou mensuel atteintAllongez le TTL du cache, groupez plus de paires par appel, ou passez à une offre supérieure
You do not have permission to call X service.Une fonction personnalisée a appelé un service nécessitant une autorisationDéplacez cette logique dans une fonction exécutée par un déclencheur
La formule historique déverse des colonnes supplémentairesComportement documenté — les résultats historiques arrivent sous forme de plage avec en-têtesEntourez d'un INDEX(..., 2, 2)
Pour des schémas plus poussés sur les nouvelles tentatives, le backoff et l'invalidation de cache en production, voyez notre guide sur le cache et la gestion des erreurs des API de change.


Quelle Méthode Choisir ?

  • Feuille personnelle, consultation rapide, aucun enjeu financier : GOOGLEFINANCE. C'est gratuit, immédiat, et la restriction de licence ne vous concerne pas.
  • Une colonne de conversion dans une feuille de travail : la fonction personnalisée Apps Script avec traitement par lot. Source de données prévisible, aucune ambiguïté de licence, un appel par plage.
  • Tout ce qu'un collègue, un client ou un auditeur consulte : la table de taux planifiée. Un taux par cycle de rafraîchissement, un horodatage visible, et aucune dépendance au moment où Sheets décide de recalculer.

Vous travaillez plutôt dans Excel ? Les méthodes équivalentes — Power Query, WEBSERVICE et le type de données Devises — sont traitées dans comment obtenir des taux de change en temps réel dans Excel. Si vous en êtes encore à évaluer les fournisseurs, notre comparatif des API de change expose les différences, et vous pouvez vérifier n'importe quel taux avec le convertisseur de devises Finexly.


Questions Fréquentes

Comment obtenir gratuitement des taux de change en temps réel dans Google Sheets ?

=GOOGLEFINANCE("CURRENCY:USDEUR") ne coûte rien et ne demande aucune configuration. Gardez à l'esprit la restriction d'usage énoncée par Google — les données « ne sont pas destinées à un usage professionnel dans le secteur financier, ni à un usage par d'autres professionnels au sein d'entreprises non financières » — et le fait que les valeurs historiques ne peuvent pas être lues via Apps Script ou l'API Sheets. Pour une alternative sous licence à coût nul, une offre d'API gratuite de 1 000 requêtes par mois couvre confortablement un rafraîchissement horaire (environ 730 appels).

À quelle fréquence GOOGLEFINANCE met-il à jour les taux de change ?

Le tableau de l'avertissement Google Finance indique un délai de 3 minutes pour les données de devises, issues de Morningstar — et non les 20 minutes couramment répétées en ligne, qui correspondent au chiffre générique des cotations de titres rattaché à l'attribut "price". Par ailleurs, Google n'a jamais publié à quelle fréquence Sheets recalcule la formule : l'ancienneté du nombre affiché dans votre cellule n'est donc pas une donnée sur laquelle vous pouvez compter.

Puis-je utiliser GOOGLEFINANCE dans Apps Script ?

Pas pour les données historiques. Google l'indique : « Les données historiques ne peuvent pas être téléchargées ni consultées via l'API Sheets ou Apps Script. Si vous tentez de le faire, une erreur #N/A s'affichera. » Il n'existe par ailleurs aucune méthode GOOGLEFINANCE dans aucun service Apps Script — un script ne peut lire qu'une valeur déjà calculée par une cellule. Si vous avez besoin de taux dans du code, appelez une API de change avec UrlFetchApp.

Pourquoi ma formule de change Google Sheets est-elle lente ou affiche-t-elle #ERROR! ?

Chaque appel à une fonction personnalisée est un aller-retour distinct vers le serveur Apps Script, et chaque exécution est plafonnée à 30 secondes. Des centaines d'appels individuels finiront en dépassement de délai. Acceptez une plage et renvoyez un tableau pour qu'un seul appel couvre toute la colonne, mettez le taux en cache, et pour tout ce qui est planifié, déplacez la requête dans un déclencheur temporel plutôt que dans une cellule.

Puis-je obtenir des taux de change historiques dans Google Sheets ?

Oui, de deux façons. GOOGLEFINANCE("CURRENCY:USDEUR", "close", DATE(2026,1,1), DATE(2026,1,31), "DAILY") renvoie une série quotidienne — utilisez "close", puisque "price" n'est pas un attribut historique valide, et rappelez-vous que Google traite les dates comme midi UTC, ce qui peut décaler une valeur d'un jour. Ou bien récupérez les taux historiques depuis une API avec une offre payante et écrivez-les dans une feuille via un déclencheur : c'est la seule voie qui survit à l'automatisation.


Prêt à mettre des taux de change sous licence, rafraîchis à la minute, dans votre feuille de calcul ? Obtenez votre clé d'API Finexly gratuite — sans carte bancaire. Commencez avec 1 000 requêtes par mois sur plus de 170 devises, et passez à l'offre supérieure quand vos feuilles auront dépassé ce cadre.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →

Partager cet article