Live release feed
Release-timestamped macro data for FX backtests
Point-in-time history
USD 25/month
무료 체험 시작

Implementation

How-To Guides

How to Pull Macro Data into Excel / Google Sheets

파워 쿼리 또는 VBA를 통해 엑셀에 FXMacroData에서 라이브 거시 경제 데이터를 끌어내기 위한 단계별 안내, 자동 갱신 및 깨끗한 행 포맷을 가진 앱 스크립트 () 를 통해 Google 시트를 통해.

다른 언어로도 제공 English
Share article X LinkedIn Email
How to Pull Macro Data into Excel / Google Sheets image

스프레드시트는 매크로 분석의 가장 일반적인 도구로 남아 있습니다. 당신은 엑셀 또는 구글 시트를 선호 여부, 직접 셀에 라이브 중앙 은행 및 경제 지표 데이터를 끌어 손으로 값을 복사하기 보다는 정적 테이블을 자동 업데이트 결정 보조로 전환합니다. 이 가이드에서는 두 플랫폼에 FXMacroData를 연결하는 방법을 보여줍니다: 엑세ルの 파워 쿼리 및 VBA, 구글 시트 응용 프로그램. 끝까지, 당신이 관심있는 모든 매크로의 숫자는 스프레이드시트를 떠나지 않고 자동으로 갱신됩니다.

당신이 무엇을 만들 것인가

  • 엑셀 파워 쿼리 한 번의 클릭으로 구조화된 테이블로 어떤 지표를 가져오는 쿼리
  • 엑셀 VBA 값이 직접 이름 붙여진 셀에 기록되는 매크로, 공식과 차트에 사용할 수 있습니다
  • 구글 앱 스크립트 시트 탭에 줄을 쓰고 시간동력 트리거에 갱신하는 스크립트

필수 조건

  • FXMacroData API 키 등록하세요 / 가입; 자유 계층 키는 많은 지표 최종 지점을 포함합니다.
  • 엑셀 2016+ (파워 쿼리) 또는 엑셀 365/온라인 파워 쿼리는 윈도우/맥에 내장되어 있으며 온라인에서 사용할 수 있습니다
  • 구글 계정 구글 시트와 앱 스크립트 (더 이상의 소프트웨어가 필요하지 않습니다) 에 액세스 할 수있는 모든 계정
  • 엑셀 공식에 대한 기본적인 지식 또는 구글 시트 파워 쿼리 섹션에 프로그래밍 배경이 필요하지 않습니다

PART 1 EXCEL

1부 엑셀

엑셀은 라이브 API 데이터에 대해 두 가지 경로를 제공합니다. 파워 쿼리 (코드가 없으니 분석가들에게 좋은 것) VBA (코드 기반, 특정 셀에 값을 입력하거나 버튼이나 이벤트에서 논리를 트리거해야 할 때 가장 좋습니다.)

- 1단계

단계 1 API 엔드포인트 모양을 이해

모든 FXMacroData 지표는 동일한 REST 패턴을 따르고 있습니다. 미국 정책금리 요청은 이렇게 보입니다:

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

JSON 응답은 와 같은 평면 객체입니다. data 배열:

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

모든 레코드는 date (YYY-MM-DD), 숫자 val, 그리고 가능한 경우 두 번째 수준의 UTC announcement_datetime모든 지표 엔드포인트가 이 모양을 공유하기 때문에, 하나의 파워 쿼리 함수 또는 하나의 VBA 헬퍼가 모두에 서비스를 제공할 수 있습니다. API 문서-


- 2단계

단계 2 엑셀 파워 쿼리: 웹 커넥터로 가져오기

파워 쿼리가 내장되어 있습니다 웹 에서 이 연결기는 어떤 코드도 없이 모든 JSON REST 엔드포인트를 사용할 수 있습니다.

  1. 엑셀에서 클릭합니다. 데이터 → 데이터를 얻으십시오 → 다른 소스에서 → 웹에서-
  2. 대화 상자에 URL을 붙여넣어 replace YOUR_API_KEY 진짜 열쇠로
    https://fxmacrodata.com/api/v1/announcements/usd/policy_rate?api_key=YOUR_API_KEY&start=2020-01-01
  3. 클릭하세요 좋아. 파워 쿼리 네비게이터가 JSON 구조를 보여줍니다.
  4. 클릭하세요 데이터 네비게이터에 기록해서 확장하면 테이블로 변환 - 좋아-
  5. 을 사용하세요 열을 확장 버튼 (두 개의 화살표 아이콘) Column1 장에서 둥근 레코드를 평면 열로 풀기: date val announcement_datetime-
  6. 클릭하세요 닫고 부하 새로운 셰이트에 테이블을 쓰기.

팁: 자동으로 갱신

로드 된 테이블을 오른쪽 클릭 → 테이블 → 외부 데이터 속성 → 활성화 파일을 열 때 데이터를 갱신합니다 그리고 N 분마다 갱신합니다 매크로 테이블은 작업서를 열 때마다 현재 상태로 유지됩니다.


- 3단계

단계 3 엑셀 파워 쿼리: 재사용 함수로 매개 변수를 설정

단일 지표 질의가 작동되면, 웹 연결 단계를 반복하지 않고 통화/지표 조합을 뽑을 수 있도록 재사용 가능한 M 함수로 프로모션합니다.

  1. 쿼리 편집기에서 왼쪽 패널에서 쿼리를 오른쪽 클릭 → 함수를 생성합니다- 그래요
  2. 뭐라든 FetchMacroData- 그래요
  3. 부체는 아래의 M 코드로 교체합니다.
// 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. 함수 편집기를 닫고 새 함수를 만들자 빈 질의 필요한 각 지표에 대해
= FetchMacroData("usd", "inflation", "YOUR_API_KEY", "2022-01-01")
= FetchMacroData("eur", "policy_rate", "YOUR_API_KEY", "2022-01-01")

각 질의는 자신의 테이블에 로드 됩니다. 함수는 HTTP 호출, JSON 분석, 열 명칭 변경 및 타입 변환을 처리 합니다. 새로운 지표를 추가하려면 한 개의 빈 질의 연결 마법사가 필요하지 않습니다. 지표 슬러그를 찾아 API 문서 어떤 통화 쌍이든


4단계

단계 4 Excel VBA: 셀에 값을 직접 입력

VBA는 특정 이름의 셀에 값을 배치하거나 기존 공식과 연결하거나 버튼 또는 작업책 열기 이벤트에서 갱신을 트리거해야 할 때 더 적합합니다.

VBA 편집기를 열어요 (Alt+F11), 새로운 모듈을 삽입합니다 (삽입 → 모듈), 다음을 붙여넣습니다:

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

이 버튼을 연결하는 방법

작업 잎에서, 삽입 → 모양, 둥근 직사각형을 그리고 오른쪽 클릭 → 매크로를 할당 → 선택 RefreshMacroDashboard한 번의 클릭으로 대시보드에서 모든 지표를 갱신합니다. 당신은 또한 파일에서 호출하여 자동으로 실행 할 수 있습니다. Workbook_Open()ThisWorkbook 코드 모듈


2부 GOOGLE SHEETS

2부 구글 시트

구글 앱 스크립트는 구글 워크스페이스에 직접 내장된 자바스크립트 실행 시간입니다. 구글의 인프라에서 서버 측에서 실행되므로 설치할 것이 없습니다. UrlFetchApp 그리고 결과를 스프레드시트에 SpreadsheetApp시간적 트리거를 사용하면 자동 업데이트를 할 수 있습니다.

- 5단계

단계 5 앱 스크립트 편집기를 열고

  1. 열어 sheets.google.com 그리고 새 빈 스프레드시트를 만들죠.
  2. 클릭하세요 확장자 → 앱 스크립트- 그래요
  3. 프로젝트 이름을 바꾸어 FXMacroData 로더 (왼쪽 상단 필드)
  4. 기본을 삭제합니다. myFunction() 위치 유지기

API 키를 안전하게 저장하세요

가자 프로젝트 설정 → 스크립트 속성 → 속성 추가이름인 속성을 추가합니다 FXMACRODATA_API_KEY 그리고 키를 값으로 붙여넣습니다. 아래 코드는 실행 시에 PropertiesService.getScriptProperties() 당신의 열쇠는 스크립트 파일에는 나타나지 않습니다.


- 6단계 -

단계 6 검색 도움말과 시트 작가 작성

다음 코드를 에 붙여주세요 Code.gs세 가지 기능은 검색, 정규화 및 쓰기를 처리합니다.

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

7단계

단계 7 실행 및 확인

  1. 클릭하세요 저장 편집기 도구줄에 있는 아이콘 (플러피 디스크)
  2. 선택하세요 refreshMacroData 실행 버튼 (▶) 옆에 있는 함수 드롭다운에서
  3. 클릭하세요 도망가. 첫 번째 실행은 스프레드시트 접속을 위해 권한을 요청하고 외부 HTTP 요청을 합니다 클릭 권한 검토 → 허용- 그래요
  4. 다시 스프레드시트에 전환합니다. 매크로데이터 이제 다음과 같은 행을 포함해야 합니다:
통화 표시기 날짜 가치 발표 날짜 시간
미국 달러 정책금리 2025-03-19 4.25 2025-03-19T18:00:00Z
미국 달러 인플레이션 2025-03-12 2.8 2025-03-12T12:30:00Z
미국 달러 실업 2025-03-07 4.1 2025-03-07T13:30:00Z

8단계

단계 8 트리거로 자동 갱신 일정을 설정

시간적 트리거 호출 refreshMacroData 수동 작업 없이 일정을 정해 놓습니다.

  1. 앱 스크립트 편집기에서 를 클릭합니다. 발동기 왼쪽 사이드바에 있는 아이콘 (시계)
  2. 클릭하세요 + 트리거 추가 (아래 오른쪽)
  3. 설정 실행할 함수를 선택 - refreshMacroData- 그래요
  4. 설정 이벤트 소스를 선택 - 시간으로 움직이는- 그래요
  5. 설정 시간 기반 트리거의 유형을 선택 - 낮계- 그래요
  6. 설정 시간 선택 → 예를 들어 7시 8시 (유럽 오픈 전에)
  7. 클릭하세요 저장트리거가 트리그 목록에 표시됩니다.

팁: 출시 날 모니터링을 위한 시간별 트리거

높은 영향력 있는 발표가 있는 날에는 미국 CPI, NFP 또는 중앙은행의 결정으로 트리거를 시간계 → 매 시간 그래서 엽서는 API가 업데이트되면 새로운 판독을 캡처합니다. 인플레이션 그리고 농부 외의 임금 두 번째 레벨의 최종 포인트를 운반합니다. announcement_datetime 각 판독이 언제 발표되었는지 정확하게 파악할 수 있도록 값들을 표시합니다.


9단계

단계 9 사용자 정의 함수를 가진 모든 셀에 최신 값을 가져오기

아래의 함수를 로 더하면 Code.gs 만약 매크로 값을 셀 공식에서 직접 참조하고 싶다면 GOOGLEFINANCE() 하지만 중앙은행 데이터에 대해서는:

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

저장 후, 입력 =FXMD("usd","policy_rate") 어떤 셀에도. 셰이트는 함수를 호출하고 API에서 가져와 현재 값을 반환합니다. 콤팩트한 요약 패널을 만들기 위해 인접한 셀의 통화 라벨과 결합합니다.

지원된 지표

FXMacroData 카탈로그에서 어떤 지표 슬러그도 작동합니다. policy_rate inflation unemployment gdp pmi retail_sales그리고 더 많은 것들도 있습니다. API 문서 통화의 전체 목록을 보거나 FX 대시보드 시각적으로 지표를 탐구하기 위해서입니다.


── 요약 ──

요약

당신은 엑셀과 구글 시트 두 가지 모두에 FXMacroData를 연결했습니다:

  • 엑셀 파워 쿼리 매개 변수 설정 가능한 M 함수, 모든 지표를 구조화된 테이블에 로드하고 열린 파일에서 업데이트합니다.
  • 엑셀 VBA 매크로는 각 지표의 최신 값을 이름 붙인 셀에 기록하고 버튼에 할당할 수 있습니다.
  • 구글 앱 스크립트 a refreshMacroData() 더하기 =FXMD() 셀별 검색을 위한 사용자 정의 공식, 둘 다 시간 기반 트리거로 자동으로 갱신됩니다.

여기서 더 많은 지표들을 층으로 나누는 것을 고려해 보세요. 예를 들어, 기본 인플레이션 전체적인 인플레이션과 함께, 또는 끌어당기는 PMI 여러 통화에서 성장 동력을 비교하기 위해 여러 지역 간 비교를 합니다. INDICATORS 배열 또는 M 함수 호출.

Blogroll

AI Answer-Ready

Key Facts

Page
How To Macro Data Excel Google Sheets
Section
Articles
Canonical URL
https://fxmacrodata.com/ko/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.