Live release feed
Sub-second macro releases for FX backtests
Point-in-time history
Official CPI, jobs, GDP, and central-bank events with point-in-time history.
$25/month 14-day free trial
Start Free Trial
How to Pull Macro Data into Excel / Google Sheets image
Share headline card X LinkedIn Email
Download

Implementation

How-To Guides

How to Pull Macro Data into Excel / Google Sheets

Step-by-step guide to pulling live macroeconomic data from FXMacroData into Excel via Power Query or VBA, and into Google Sheets via Apps Script — with automatic refresh and clean row formatting.

Juga tersedia dalam English
Share article X LinkedIn Email

Spreadsheet tetap menjadi alat yang paling umum untuk analisis makro. Apakah Anda lebih suka Excel atau Google Sheets, menarik data bank sentral dan indikator ekonomi langsung ke dalam sel daripada menyalin nilai dengan tangan mengubah tabel statis menjadi bantuan keputusan yang memperbarui diri. Panduan ini menunjukkan kepada Anda cara menghubungkan FXMacroData ke kedua platform: Power Query dan VBA untuk Excel, dan Aplikasi Script untuk Google Sheet. Pada akhirnya, setiap nomor makro yang Anda pedulikan akan diperbarui secara otomatis tanpa meninggalkan spreadsheet Anda.

Apa yang akan Anda bangun

  • Excel Power Query sebuah query yang mengambil indikator apa pun ke dalam tabel terstruktur dengan satu klik
  • Excel VBA makro yang menulis nilai langsung ke dalam sel yang diberi nama, siap untuk rumus dan grafik
  • Google Apps Script sebuah skrip yang menulis baris ke tab Sheets dan menyegarkan pada pemicu yang didorong waktu

Persyaratan

  • Kunci API FXMacroData daftar di /langganan; kunci tingkat bebas mencakup banyak titik akhir indikator
  • Excel 2016+ (untuk Power Query) atau Excel 365/Online Power Query dibangun di Windows / Mac dan tersedia secara online
  • Akun Google akun dengan akses ke Google Sheets dan Apps Script (tidak diperlukan perangkat lunak tambahan)
  • Keterampilan dasar dengan rumus Excel atau Google Sheets tidak perlu latar belakang pemrograman untuk bagian Power Query

BAGIAN 1 EXCEL

Bagian 1 Excel

Excel menawarkan dua rute untuk data API hidup: Power Query (tidak ada kode, bagus untuk analis) dan VBA (berbasis kode, paling baik ketika Anda perlu menulis nilai ke dalam sel tertentu atau memicu logika dari tombol atau acara).

- Langkah 1 -

Langkah 1 Memahami bentuk titik akhir API

Setiap indikator FXMacroData mengikuti pola REST yang sama.

GET https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01

Tanggapan JSON adalah objek datar dengan data array:

{
  "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" }
  ]
}

Setiap rekaman membawa date (YYY-MM-DD), sebuah angka val, dan jika tersedia UTC tingkat dua announcement_datetimeKarena setiap indikator endpoint berbagi bentuk ini, satu fungsi Power Query atau satu pembantu VBA dapat melayani mereka semua. Dokumen API.


- Langkah 2 -

Langkah 2 Excel Power Query: impor melalui konektor Web

Power Query terintegrasi. Dari Web konektor dapat mengkonsumsi setiap titik akhir JSON REST tanpa kode sama sekali.

  1. Di Excel, klik Data → Dapatkan Data → Dari Sumber Lain → Dari Web.
  2. Tempelkan URL Anda ke dialog ganti YOUR_API_KEY dengan kunci sebenarnya:
    https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
  3. Klik Baiklah.. Power Query Navigator dibuka menunjukkan struktur JSON.
  4. Klik data Catat di navigator untuk memperluasnya, lalu klik Mengkonversi ke TabelBaiklah..
  5. Gunakan Memperluas kolom tombol (ikon panah ganda) pada Column1 header untuk membongkar catatan bersarang ke kolom datar: dateAku akan pergi. valAku akan pergi. announcement_datetime.
  6. Klik Tutup & Muat untuk menulis tabel ke dalam lembar baru.

Tip: Perbarui secara otomatis

Klik kanan pada tabel yang dimuat → Tabel → Properti Data Eksternal → memungkinkan Perbarui data saat membuka file dan mengatur Perbarui setiap N menit interval. Tabel makro Anda akan tetap saat ini setiap kali Anda membuka buku kerja.


- Langkah 3 -

Langkah 3 Excel Power Query: parameterisasi dengan fungsi yang dapat digunakan kembali

Setelah Anda memiliki kueri indikator tunggal bekerja, meningkatkannya ke fungsi M yang dapat digunakan kembali sehingga Anda dapat menarik kombinasi mata uang / indikator tanpa mengulangi langkah-langkah konektor Web.

  1. Di Query Editor, klik kanan pada query Anda di panel kiri → Buat FungsiAku tidak tahu.
  2. Sebutkan saja. FetchMacroDataAku tidak tahu.
  3. Mengganti tubuhnya dengan kode M di bawah ini:
// 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
  1. Tutup editor fungsi. Sekarang buat yang baru pertanyaan kosong untuk setiap indikator yang Anda butuhkan:
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")

Setiap query memuat ke dalam tabelnya sendiri. Fungsi ini menangani panggilan HTTP, JSON parse, kolom rename, dan konversi tipe. Untuk menambahkan indikator baru, tambahkan satu query kosong tidak perlu wizard konektor. Cari slug indikator pada Dokumen API untuk pasangan mata uang apapun.


- Langkah 4 -

Langkah 4 Excel VBA: tulis nilai langsung ke dalam sel

VBA lebih cocok ketika Anda perlu menempatkan nilai ke dalam sel bernama tertentu, menghubungkannya ke rumus yang ada, atau memicu refresh dari tombol atau buku kerja-buka acara.

Buka editor VBA (Alt+F11), memasukkan modul baru (Masukkan → Modul), dan tempelkan:

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

Bagaimana cara menghubungkan ini ke tombol

Di lembar kerja, pergi ke Masukkan → Bentuk, menggambar persegi panjang bulat, klik kanan → Atur Makro → pilih RefreshMacroDashboard. Satu klik memperbarui setiap indikator di dasbor Anda. Anda juga dapat mengeksekusi secara otomatis pada file terbuka dengan memanggilnya dari Workbook_Open() di ThisWorkbook Modul kode.


BAGIAN 2 GOOGLE SHEETS

Bagian 2 Google Sheets

Google Apps Script adalah runtime JavaScript yang tertanam langsung ke dalam Google Workspace. UrlFetchApp dan menulis hasil ke spreadsheet dengan SpreadsheetApp. Pemicu yang didorong waktu memungkinkan Anda menjadwalkan pembaruan otomatis .

- Langkah 5 -

Langkah 5 Buka editor skrip Aplikasi

  1. Buka. sheets.google.com dan membuat spreadsheet kosong baru.
  2. Klik Ekstensi → Aplikasi ScriptAku tidak tahu.
  3. Mengganti nama proyek menjadi FXMacroData Loader (bidang kiri atas).
  4. Hapus default myFunction() tempat penjaga.

Simpan kunci API Anda dengan aman

Pergilah ke Pengaturan Proyek → Properti Skrip → Tambahkan propertiTambahkan properti bernama FXMACRODATA_API_KEY dan paste kunci Anda sebagai nilai. kode di bawah ini membacanya pada saat runtime melalui PropertiesService.getScriptProperties() Kunci Anda tidak pernah muncul dalam file skrip.


- Langkah 6 -

Langkah 6 Tulis bantuan mengambil dan sheet writer

Tempelkan kode berikut di Code.gsTiga fungsi menangani mengambil, normalisasi, dan menulis:

// ── 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);
}

- Langkah 7 -

Langkah 7 Jalankan dan verifikasi

  1. Klik Simpan ikon (floppy disk) di toolbar editor.
  2. Pilih refreshMacroData di fungsi dropdown di sebelah Run tombol (▶).
  3. Klik Larilah. Jalan pertama meminta izin untuk mengakses spreadsheet dan membuat permintaan HTTP eksternal klik Periksa izin → IzinkanAku tidak tahu.
  4. Pindah kembali ke spreadsheet. tab baru yang disebut MakroData seharusnya sekarang berisi baris seperti:
Mata uang Indikator Tanggal Nilai Pengumuman Tanggal Waktu
USD kebijakan_tingkat 2025-03-19 4,25 2025-03-19T18:00:00Z
USD inflasi 2025-03-12 2.8 2025-03-12T12:30:00Z
USD pengangguran 2025-03-07 4.1 Pengobatan 2025-03-07T13:30:00Z

- Langkah 8 -

Langkah 8 Jadwalkan pembaruan otomatis dengan pemicu

Sebuah pemicu yang dikendalikan waktu memanggil. refreshMacroData pada jadwal tanpa tindakan manual.

  1. Di editor skrip aplikasi, klik Pemicu ikon (jam) di bilah sisi kiri.
  2. Klik + Tambahkan Trigger (di kanan bawah).
  3. Siap Pilih fungsi yang akan dijalankanrefreshMacroDataAku tidak tahu.
  4. Siap Pilih sumber acaraWaktu yang didorongAku tidak tahu.
  5. Siap Pilih jenis pemicu berbasis waktuWaktu siang hariAku tidak tahu.
  6. Siap Pilih waktu hari → misalnya 7am 8am (sebelum European Open).
  7. Klik Simpan. pemicu muncul dalam daftar pemicu.

Tip: pemicu setiap jam untuk pemantauan hari rilis

Pada hari dengan rilis dampak tinggi US CPI, NFP, atau keputusan bank sentral beralih pemicu ke Jam timer → setiap jam sehingga lembar menangkap pembacaan baru segera setelah API diperbarui (biasanya dalam hitungan detik dari rilis resmi). inflasi Dan daftar gaji non-pertanian titik akhir membawa tingkat kedua announcement_datetime nilai sehingga Anda dapat menentukan persis kapan setiap pembacaan dipublikasikan.


- Langkah 9 -

Langkah 9 Tarik nilai terbaru ke dalam sel dengan fungsi khusus

Tambahkan fungsi di bawah ini ke Code.gs jika Anda ingin merujuk nilai makro langsung dalam rumus sel seperti GOOGLEFINANCE() tapi untuk data bank sentral:

/**
 * 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;
}

Setelah menyimpan, ketik =FXMD("usd","policy_rate") Sheets memanggil fungsi, mengambil dari API, dan mengembalikan nilai saat ini. menggabungkannya dengan label mata uang di sel yang berdekatan untuk membangun panel ringkasan yang kompak.

Indikator yang didukung

Setiap slug indikator dari katalog FXMacroData bekerja policy_rateAku akan pergi. inflationAku akan pergi. unemploymentAku akan pergi. gdpAku akan pergi. pmiAku akan pergi. retail_sales, dan banyak lagi. Dokumen API untuk daftar lengkap per mata uang, atau gunakan Dashboard FX untuk mengeksplorasi indikator secara visual.


- Ringkasan -

Ringkasan

Anda telah menghubungkan FXMacroData ke Excel dan Google Sheets:

  • Excel Power Query fungsi M yang dapat diparameterkan yang memuat indikator apa pun ke dalam tabel terstruktur dan memperbarui file terbuka.
  • Excel VBA makro yang menulis nilai terbaru dari setiap indikator ke dalam sel yang diberi nama, dapat ditugaskan ke tombol.
  • Google Apps Script a refreshMacroData() fungsi yang membangun tab MacroData penuh, ditambah =FXMD() Rumus khusus untuk pencarian per sel, keduanya diperbarui secara otomatis pada pemicu yang didorong waktu.

Dari sini, pertimbangkan lapisan dalam indikator lebih misalnya, menambahkan inflasi inti di samping inflasi, atau menarik PMI Untuk memperbandingkan momentum pertumbuhan di berbagai wilayah. bentuk titik akhir yang konsisten berarti setiap penambahan adalah perubahan satu baris ke INDICATORS array atau panggilan fungsi M.

Blogroll

AI Answer-Ready

Key Facts

Page
How To Macro Data Excel Google Sheets
Section
Articles
Canonical URL
https://fxmacrodata.com/id/articles/how-to-macro-data-excel-google-sheets
Source
FXMacroData editorial and official publisher references
Last Updated
2026-06-15 11:06 UTC

Provenance And Trust

Cite the canonical URL and source field above. Where available, this page maps to official publisher releases and timestamped updates.

Quick Q&A

What is this page about? This page explains How To Macro Data Excel Google Sheets with directly usable context for trading, research, and API workflows.

What source should be cited? Use the canonical URL and the listed source field; cite official publisher references when available.

How fresh is this content? The last updated value above reflects the page metadata or latest available data timestamp.

Can this be used in AI assistants? Yes. This section is intentionally structured for retrieval and citation in chat assistants.

Prompt Packs

Use these in ChatGPT, Claude, Gemini, Mistral, Perplexity, or Grok for consistent source-aware outputs.