Les feuilles de calcul restent l'outil le plus courant pour l'analyse macro. Que vous préfériez Excel ou Google Sheets, tirer des données en direct de la banque centrale et des indicateurs économiques directement dans une cellule plutôt que de copier les valeurs à la main transforme une table statique en une aide à la décision auto-mise à jour. Ce guide vous montre comment connecter FXMacroData aux deux plateformes: Power Query et VBA pour Excel, et Apps Script pour Google Sheet. À la fin, chaque numéro de macro que vous aimez se rafraîchira automatiquement sans quitter votre feuille de calcul.
Ce que vous allez construire
- Question de puissance dans Excel une requête qui récupère n'importe quel indicateur dans un tableau structuré en un clic
- Excel VBA est en cours de développement une macro qui écrit des valeurs directement dans des cellules nommées, prêtes pour les formules et les graphiques
- Le script de Google Apps est en cours de développement un script qui écrit des lignes dans un onglet Fiches et se rafraîchit sur un déclencheur basé sur le temps
Pré-requis
- Clé de l'API FXMacroData inscrivez-vous à / souscrivez; les clés de niveau libre couvrent de nombreux indicateurs
- Excel 2016+ est disponible (pour la requête de puissance) ou Le nombre de pages Power Query est intégré sur Windows/Mac et disponible en ligne
- Compte Google tout compte ayant accès à Google Sheets et Apps Script (pas de logiciel supplémentaire requis)
- Familiarité de base avec les formules Excel ou Google Sheets aucune formation en programmation nécessaire pour la section Power Query
PARTIE 1 EXCEL
Partie 1 Excel
Excel offre deux voies pour les données API en direct: Recherche de puissance (pas de code, parfait pour les analystes) et VBA (code-driven, idéal lorsque vous devez écrire des valeurs dans des cellules spécifiques ou déclencher la logique à partir d'un bouton ou d'une action).
- Passe 1 - Passez à la première étapeÉtape 1 Comprendre la forme du point final de l'API
Chaque indicateur FXMacroData suit le même schéma REST. Une demande pour le taux directeur américain ressemble à ceci:
GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
La réponse JSON est un objet plat avec un data - Je ne sais pas .
{
"data": [
{ "date": "2025-03-19", "val": 4.25, "announcement_datetime": "2025-03-19T18:00:00Z" },
{ "date": "2025-01-29", "val": 4.25, "announcement_datetime": "2025-01-29T19:00:00Z" },
{ "date": "2024-12-18", "val": 4.25, "announcement_datetime": "2024-12-18T19:00:00Z" }
]
}
Chaque disque porte un date (ANAN-MM-DD), un chiffre val, et le cas échéant un UTC de deuxième niveau announcement_datetime. Comme tous les indicateurs partagent cette forme, une fonction Power Query ou un assistant VBA peut les servir tous. Documents de l'APIJe suis désolé .
- Passe 2 - Je suis désolé
Étape 2 Excel Power Query: importation par connecteur Web
La source d'énergie est intégrée. D'après le Web connecteur peut consommer n'importe quel point de terminaison JSON REST sans aucun code.
- Dans Excel, cliquez sur Données → Obtenez des données → D'autres sources → Du WebJe suis désolé .
-
Collez votre URL dans la boîte de dialogue remplacer
YOUR_API_KEYavec votre clé réelle:
https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01 - Cliquez Ça va.. Power Query Navigator s'ouvre avec la structure JSON.
- Cliquez sur le données enregistrer dans le navigateur pour l'agrandir, puis cliquez Conversion vers le tableau Je suis désolé. Ça va.Je suis désolé .
-
Utilisez le Élargir la colonne bouton (icône à flèche double) sur le
Column1En tête pour décomposer les enregistrements imbriqués en colonnes plates:dateJe suis désolé .valJe suis désolé .announcement_datetimeJe suis désolé . - Cliquez Fermer et charger Pour écrire la table dans une nouvelle feuille.
Conseil: Récupérer automatiquement
Cliquez avec le bouton droit sur la table chargée → Tableau → Propriétés des données externes → activer Ressouffler les données lors de l'ouverture du fichier et de mettre un Récupérer toutes les N minutes Votre table de macro restera à jour chaque fois que vous ouvrez le classeur.
- Pas 3 - Je suis désolé
Étape 3 Excel Power Query: paramétrer avec une fonction réutilisable
Une fois que vous avez la requête d'indicateur unique fonctionnant, le promouvoir à une fonction M réutilisable de sorte que vous pouvez tirer n'importe quelle combinaison de monnaie / indicateur sans répéter les étapes de connecteur Web.
- Dans l'éditeur de requêtes, cliquez avec le bouton droit de votre requête dans le panneau de gauche → Créer une fonctionJe suis désolé .
- Nomme-le .
FetchMacroDataJe suis désolé . - Remplacer le corps par le code M ci-dessous:
// FetchMacroData — reusable Power Query function
// Parameters: currency (e.g. "usd"), indicator (e.g. "policy_rate"), apiKey, startDate
(currency as text, indicator as text, apiKey as text, startDate as text) =>
let
url = "https://fxmacrodata.com/api/v1/announcements/"
& currency & "/" & indicator
& "?api_key=" & apiKey
& "&start=" & startDate,
raw = Json.Document(Web.Contents(url)),
records = raw[data],
tbl = Table.FromList(records, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
expand = Table.ExpandRecordColumn(tbl, "Column1",
{"date", "val", "announcement_datetime"},
{"Date", "Value", "AnnouncementDatetime"}),
typed = Table.TransformColumnTypes(expand, {
{"Date", type date},
{"Value", type number}
})
in
typed
- Fermez l'éditeur de fonctions. requête vide pour chaque indicateur dont vous avez besoin:
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")
Chaque requête se charge dans sa propre table. La fonction gère l'appel HTTP, l'analyse JSON, le renom de colonne et la conversion de type. Pour ajouter un nouvel indicateur, ajoutez une requête vide aucun assistant de connecteur n'est nécessaire. Trouvez des slugs d'indicateur sur le Documents de l'API pour n'importe quelle paire de devises.
- Passe 4 - Passez à la première étape
Étape 4 Excel VBA: écrire des valeurs directement dans les cellules
VBA est mieux adapté lorsque vous devez placer des valeurs dans des cellules nommées spécifiques, les lier à des formules existantes ou déclencher la mise à jour à partir d'un bouton ou d'une activation de livre de travail.
Ouvrez l' éditeur VBA (Alt+F11), insérer un nouveau module (Insérer → Module), et coller ce qui suit:
Option Explicit
' ─────────────────────────────────────────────────────────────────
' FetchLatestIndicator
' Returns the most recent val for a given currency/indicator.
' Requires a reference to "Microsoft XML, v6.0" (VBA Editor →
' Tools → References → tick "Microsoft XML, v6.0").
' ─────────────────────────────────────────────────────────────────
Function FetchLatestIndicator(currency As String, indicator As String, _
apiKey As String) As Variant
Dim http As New MSXML2.XMLHTTP60
Dim url As String
Dim json As String
Dim dataArr As Variant
Dim parsed As Object
url = "https://fxmacrodata.com/api/v1/announcements/" & _
LCase(currency) & "/" & LCase(indicator) & _
"?api_key=" & apiKey & "&limit=1"
http.Open "GET", url, False
http.setRequestHeader "Accept", "application/json"
http.Send
If http.Status <> 200 Then
FetchLatestIndicator = CVErr(xlErrValue)
Exit Function
End If
' ── Minimal JSON parser (no external library needed) ──────────
' Locate the first "val": number pattern after "data":[{
Dim pos As Long
Dim valStr As String
json = http.responseText
pos = InStr(json, """val"":")
If pos = 0 Then
FetchLatestIndicator = CVErr(xlErrNA)
Exit Function
End If
pos = pos + Len("""val"":")
valStr = Mid(json, pos, 20)
' Trim to the actual number (stop at comma, space, or brace)
valStr = Split(Trim(valStr), ",")(0)
valStr = Split(valStr, "}")(0)
valStr = Trim(valStr)
FetchLatestIndicator = CDbl(valStr)
End Function
' ─────────────────────────────────────────────────────────────────
' RefreshMacroDashboard
' Writes the latest value of several indicators into named cells.
' Define Named Ranges (Formulas → Name Manager) matching the keys
' used in the pairs array below.
' ─────────────────────────────────────────────────────────────────
Sub RefreshMacroDashboard()
Dim apiKey As String
apiKey = "YOUR_API_KEY" ' ← replace with your key
Dim pairs(5, 1) As String
pairs(0, 0) = "usd" : pairs(0, 1) = "policy_rate"
pairs(1, 0) = "eur" : pairs(1, 1) = "policy_rate"
pairs(2, 0) = "gbp" : pairs(2, 1) = "policy_rate"
pairs(3, 0) = "usd" : pairs(3, 1) = "inflation"
pairs(4, 0) = "usd" : pairs(4, 1) = "unemployment"
pairs(5, 0) = "usd" : pairs(5, 1) = "gdp"
Dim i As Integer
Dim val As Variant
Dim nm As String
For i = 0 To 5
val = FetchLatestIndicator(pairs(i, 0), pairs(i, 1), apiKey)
nm = UCase(pairs(i, 0)) & "_" & pairs(i, 1)
On Error Resume Next
ThisWorkbook.Names(nm).RefersToRange.Value = val
On Error GoTo 0
Next i
MsgBox "Dashboard updated — " & Now(), vbInformation, "FXMacroData"
End Sub
Comment brancher ça à un bouton ?
Dans la feuille de calcul, allez à Insérer → Formes, dessinez un rectangle arrondi, cliquez dessus →
Assigner une macro → sélectionnez RefreshMacroDashboard. Un clic rafraîchit tous les indicateurs de votre tableau de bord. Vous pouvez également l'exécuter automatiquement sur le fichier ouvert en l'appelant à partir de
Workbook_Open() Dans le ... ThisWorkbook module de code.
PARTIE 2 feuilles de calcul de Google
Partie 2 Google Sheets
Google Apps Script est un runtime JavaScript intégré directement dans Google Workspace. Il fonctionne côté serveur sur l'infrastructure de Google, donc il n'y a rien à installer. Vous appelez FXMacroData via
UrlFetchApp et écrire les résultats sur la feuille de calcul avec SpreadsheetAppLes déclencheurs basés sur le temps vous permettent de planifier des mises à jour automatiques.
Étape 5 Ouvrez l'éditeur de scripts Apps
- Ouvrez . Les données sont fournies par le service de gestion des données. et créer une nouvelle feuille de calcul vierge.
- Cliquez Les extensions → les applicationsJe suis désolé .
- Renommer le projet en Le chargeur de FXMacroData (en haut à gauche).
- Supprimez le paramètre par défaut .
myFunction()le détenteur de place.
Stockez votre clé API en toute sécurité
Allez voir . Paramètres du projet → Propriétés du script → Ajouter une propriétéAjouter une propriété nommée
FXMACRODATA_API_KEY Le code ci-dessous le lit à l'exécution via PropertiesService.getScriptProperties() votre clé n'apparaît jamais dans le fichier de script.
- Pas 6 - Je suis désolé
Étape 6 Écrire l'aide à la recherche et l'écrivain de feuille
Insérez le code suivant dans Code.gsLes trois fonctions gèrent la récupération, la normalisation et l'écriture:
// ── Config ──────────────────────────────────────────────────────
const BASE_URL = 'https://fxmacrodata.com/api/v1';
// List of {currency, indicator} pairs to load.
// Add or remove rows to customise your dashboard.
const INDICATORS = [
{ currency: 'usd', indicator: 'policy_rate' },
{ currency: 'usd', indicator: 'inflation' },
{ currency: 'usd', indicator: 'unemployment' },
{ currency: 'eur', indicator: 'policy_rate' },
{ currency: 'gbp', indicator: 'policy_rate' },
{ currency: 'aud', indicator: 'policy_rate' },
];
// ── Fetch helper with retry ─────────────────────────────────────
/**
* Fetches the latest N records for a currency/indicator pair.
* Retries up to maxRetries times with exponential back-off.
*
* @param {string} currency - e.g. 'usd'
* @param {string} indicator - e.g. 'policy_rate'
* @param {string} apiKey
* @param {number} limit - number of records to return (default 12)
* @param {number} maxRetries
* @returns {Array} array of {date, val, announcement_datetime} objects
*/
function fetchIndicator(currency, indicator, apiKey, limit = 12, maxRetries = 3) {
const url = `${BASE_URL}/announcements/${currency}/${indicator}`
+ `?api_key=${apiKey}&limit=${limit}`;
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const resp = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
if (resp.getResponseCode() === 200) {
return JSON.parse(resp.getContentText()).data || [];
}
} catch (e) {
if (attempt < maxRetries - 1) {
Utilities.sleep(Math.pow(2, attempt) * 1000); // 1 s, 2 s, 4 s
}
}
}
return [];
}
// ── Sheet writer ────────────────────────────────────────────────
/**
* Writes all indicator rows to a sheet named 'MacroData'.
* Creates the sheet if it does not exist; clears it on each run
* so stale rows are removed.
*/
function refreshMacroData() {
const apiKey = PropertiesService.getScriptProperties()
.getProperty('FXMACRODATA_API_KEY');
if (!apiKey) {
throw new Error('FXMACRODATA_API_KEY script property is not set.');
}
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('MacroData');
if (!sheet) {
sheet = ss.insertSheet('MacroData');
}
sheet.clearContents();
// Header row
const headers = ['Currency', 'Indicator', 'Date', 'Value', 'AnnouncementDatetime'];
sheet.appendRow(headers);
// Style header
const headerRange = sheet.getRange(1, 1, 1, headers.length);
headerRange.setBackground('#1e3a5f');
headerRange.setFontColor('#ffffff');
headerRange.setFontWeight('bold');
// Data rows
INDICATORS.forEach(({ currency, indicator }) => {
const records = fetchIndicator(currency, indicator, apiKey);
records.forEach(r => {
sheet.appendRow([
currency.toUpperCase(),
indicator,
r.date,
r.val,
r.announcement_datetime || ''
]);
});
});
// Auto-resize columns for readability
sheet.autoResizeColumns(1, headers.length);
}
- Pas 7 - Je suis désolé
Étape 7 Exécuter et vérifier
- Cliquez sur le Enregistrer icône (disque dur) dans la barre d'outils de l'éditeur.
- Sélectionnez
refreshMacroDatadans le menu déroulant de la fonction à côté du bouton Exécuter (▶). - Cliquez On court !. La première exécution demande l' autorisation d' accéder à la feuille de calcul et de faire des demandes HTTP externes cliquez Examiner les autorisations → AutoriserJe suis désolé .
- Revenez à la feuille de calcul. Les données macro devrait maintenant contenir des lignes comme:
| Monnaie | Indicateur | Date de la mise en service | Valeur | Annonce Date et heure |
|---|---|---|---|---|
| USD | taux de référence | Le 19 mars 2025 | 4,25 | Je suis désolé. |
| USD | inflation | Le 12 mars 2025 | 2.8 | Je suis désolé. |
| USD | le chômage | Le 5 mars | 4.1 Les produits | Je suis désolé. |
- Passe 8 - Je suis désolé
Étape 8 Planifier la mise à jour automatique avec un déclencheur
Une détente à commande temporelle . refreshMacroData sur un calendrier sans aucune action manuelle.
- Dans l'éditeur de scripts Apps, cliquez sur le Les déclencheurs l'icône (horloge) dans la barre latérale gauche.
- Cliquez + Ajouter le déclencheur (en bas à droite).
- Je suis prêt . Choisissez la fonction à exécuter Je suis désolé.
refreshMacroDataJe suis désolé . - Je suis prêt . Sélectionnez la source d'événement Je suis désolé. Le temps qui passeJe suis désolé .
- Je suis prêt . Sélectionnez le type de déclencheur basé sur le temps Je suis désolé. Températeur de jourJe suis désolé .
- Je suis prêt . Sélectionnez l' heure de la journée → par exemple 7h à 8h (avant le tournoi européen).
- Cliquez EnregistrerLe déclencheur apparaît dans la liste des déclenchements.
Conseil: déclenchement horaire pour la surveillance du jour de sortie
Les jours où les émissions ont un impact important Indice de consommation des États-Unis, PNB ou décision de la banque centrale éteignez le déclencheur sur
Télécommande à l'heure → toutes les heures La feuille de calcul capture la nouvelle lecture dès que l'API est mise à jour (généralement quelques secondes après la sortie officielle).
inflation Je suis désolé .
les effectifs non agricoles
les terminaux transportent le deuxième niveau announcement_datetime Les valeurs sont calculées en fonction des données de base, afin que vous puissiez déterminer exactement quand chaque lecture a été publiée.
- Pas 9 - Je suis désolé .
Étape 9 Extraire la dernière valeur dans n'importe quelle cellule avec une fonction personnalisée
Ajouter la fonction ci-dessous à Code.gs si vous voulez référencer les valeurs macro directement dans les formules de cellules comme GOOGLEFINANCE() mais pour les données de banque centrale:
/**
* Custom Sheets function: returns the latest value for a currency/indicator.
*
* Usage in a cell: =FXMD("usd","policy_rate")
*
* @param {string} currency e.g. "usd"
* @param {string} indicator e.g. "policy_rate"
* @customfunction
*/
function FXMD(currency, indicator) {
const apiKey = PropertiesService.getScriptProperties()
.getProperty('FXMACRODATA_API_KEY');
const records = fetchIndicator(currency, indicator, apiKey, 1);
if (!records || records.length === 0) return null;
return records[0].val;
}
Après enregistrement, tapez =FXMD("usd","policy_rate") dans n'importe quelle cellule. Sheets appelle la fonction, récupère de l'API, et renvoie la valeur actuelle. Combinez-la avec les étiquettes de devises dans les cellules adjacentes pour créer un panneau de résumé compact.
Indicateurs soutenus
Toutes les balises d'indicateur du catalogue FXMacroData fonctionnent policy_rateJe suis désolé .
inflationJe suis désolé . unemploymentJe suis désolé . gdpJe suis désolé . pmiJe suis désolé .
retail_sales, et bien d'autres.
Documents de l'API pour la liste complète par monnaie, ou utilisez le
Tableau de bord FX Pour explorer visuellement les indicateurs.
- Résumé
Résumé
Vous avez connecté FXMacroData à Excel et à Google Sheets:
- Question de puissance dans Excel une fonction M paramétrable qui charge tout indicateur dans un tableau structuré et le rafraîchit sur le fichier ouvert.
- Excel VBA est en cours de développement une macro qui écrit la dernière valeur de chaque indicateur dans des cellules nommées, attribuables à un bouton.
- Le script de Google Apps est en cours de développement Je suis désolé .
refreshMacroData()fonction qui crée un onglet complet de MacroData, plus un=FXMD()formule personnalisée pour les recherches par cellule, toutes deux actualisées automatiquement sur un déclencheur basé sur le temps.
À partir de là, envisagez de superposer plus d'indicateurs par exemple, en ajoutant
inflation de base
l'inflation globale, ou la baisse de la
PMI La forme cohérente du point d'extrémité signifie que chaque addition est un changement d'une ligne à la croissance de la population. INDICATORS l'appel de la fonction M.