Tutorial/Google Sheets 快速入門

喺 Google Sheets 攞即時匯率

用 Apps Script 將 exchangerate.dev 接落自訂函數 =FXRATE(),連快取同錯誤處理。免費方案:每月 10,000 次呼叫,唔使信用卡。

ERexchangerate.dev·Jun 29, 2026·5 分鐘閱讀

要喺 Google Sheets 攞即時匯率,貼一段細小嘅 Apps Script 自訂函數,用 Authorization 標頭帶住你個 key 去呼叫 /v1/latest/{base},然後喺任何儲存格打 =FXRATE("USD","EUR")。免費 key 每月涵蓋 10,000 次呼叫,唔使信用卡。下面條函數會快取十分鐘,亦處理咗你真係會撞到嘅兩個錯誤。呢個就係你放喺 Sheets 嘅模型或者儀表板嘅即時外匯輸入。

Key points
自訂函數令你喺任何儲存格都可以用 =FXRATE("USD","JPY") — 唔使裝任何附加元件。
一次 /v1/latest/{base}?symbols={quote} 呼叫就返回你要嘅貨幣對。
Key 以 Authorization: Bearer exr_live_... 傳送;CacheService 幫你留喺配額入面。
免費方案係每月 10,000 次呼叫、每分鐘 12 次請求,唔使信用卡。
匯率係指示性 — 為模型、分析同顯示而設,唔係用嚟結算交易。

攞一個免費 API key

exchangerate.dev/signup 註冊。確認電郵之後,儀表板會顯示一個以 exr_live_ 開頭嘅 key。複製佢 — 下一步就會貼落 Apps Script。免費方案每月 10,000 次呼叫,唔使信用卡。

喺你張試算表開 Apps Script

開啟任何一張 Google 試算表。喺選單撳 擴充功能 → Apps Script。會開一個新分頁,入面有預設嘅 function myFunction() {}。刪走佢啲內容 — 下一步會換走。

貼上 FXRATE 函數

將編輯器嘅內容換成呢條函數。佢會呼叫 exchangerate.dev,用 CacheService 將每個貨幣對快取十分鐘,遇到你會撞到嘅兩個錯誤(401 同 429)就返回一個易讀嘅標記。

Code.gscopy
// google-sheets: Apps Script Code.gs
// Replace API_KEY with your exchangerate.dev key from /signup

const API_KEY = 'exr_live_replace_with_your_key_here';
const CACHE_TTL = 600; // seconds — FX moves slower than equities; 10 min is plenty

function FXRATE(from, to) {
  from = (from || 'USD').toString().toUpperCase();
  to = (to || 'EUR').toString().toUpperCase();

  const cacheKey = `fx_${from}_${to}`;
  const cache = CacheService.getScriptCache();
  const cached = cache.get(cacheKey);
  if (cached) return Number(cached);

  const url = `https://api.exchangerate.dev/v1/latest/${from}?symbols=${to}`;
  const resp = UrlFetchApp.fetch(url, {
    headers: { Authorization: `Bearer ${API_KEY}` },
    muteHttpExceptions: true,
  });

  const code = resp.getResponseCode();
  if (code === 401) return '#AUTH_ERROR';
  if (code === 429) return '#RATE_LIMIT';
  if (code !== 200) return '#ERROR';

  const data = JSON.parse(resp.getContentText());
  const rate = data.rates && data.rates[to];
  if (rate == null) return '#NO_PAIR'; // unknown currency code
  cache.put(cacheKey, String(rate), CACHE_TTL);
  return Number(rate); // coerce so cells sum and sort
}

喺任何儲存格用 =FXRATE()

返返去張試算表,喺一個空白儲存格打 =FXRATE("USD","EUR")。大約一秒之後,儲存格就會顯示當前匯率。同一條函數適用於任何支援嘅貨幣對 — 換咗兩個貨幣代碼就得:

Sheets formula · pairscopy
// Euro per US dollar
=FXRATE("USD", "EUR")        // 0.9245

// Japanese yen per US dollar
=FXRATE("USD", "JPY")        // 157.32

// British pound per euro
=FXRATE("EUR", "GBP")        // 0.8531

// Indonesian rupiah per US dollar
=FXRATE("USD", "IDR")        // 16285.0

底層每次呼叫都會返回基準貨幣、你篩選咗嘅貨幣對,同兩個新鮮度欄位 — sourcemarket_session — 所以你永遠知道個數字有幾新:

GET /v1/latest/USD?symbols=JPYcopy
{
  "result": "success",
  "base": "USD",
  "source": "live",
  "market_session": "open",
  "timestamp": "2026-06-29T09:14:02Z",
  "data_updated_at": "2026-06-29T09:14:00Z",
  "rates": { "JPY": 157.32 },
  "sources": { "JPY": "live" },
  "notice": "Indicative rates, not for settlement."
}
用緊 AI 助手砌呢個?
exchangerate.dev 發佈咗 MCP 伺服器同 llms.txt,所以 Claude、Cursor 或者 ChatGPT 可以讀到即時 schema 幫你寫呢條函數。你可以咁叫佢:「砌一個叫 FXRATE 嘅 Google Sheets 自訂函數,收 from 同 to 貨幣,返回 exchangerate.dev 嘅即時匯率,快取十分鐘」。詳情睇 MCP 指南

更新頻率同免費方案嘅配合

Apps Script 唔會自己用計時器重新執行自訂函數。想定期更新就加一個時間驅動觸發器:喺 Apps Script 左邊嘅欄撳 觸發條件 → 新增觸發條件,揀 FXRATE,來源揀 時間驅動,再揀 分鐘計時器。十分鐘快取加上寬鬆嘅配額,就算好繁忙嘅試算表都夠用:

  • 每月 10,000 次呼叫、每分鐘 12 次請求、唔使信用卡
  • CacheService 會喺 10 分鐘內返回快取匯率,所以不停編輯都唔會用額外配額
  • 如果一張有好多貨幣對嘅試算表快要掂到每分鐘上限,就調高 CACHE_TTL
  • 涵蓋 /v1/latest/v1/convert/v1/range/v1/{date}/{base}
代碼症狀解決方法
401儲存格顯示 #AUTH_ERRORKey 缺咗或者無效。喺儀表板重新複製,貼返落 Code.gs 最上面嘅 API_KEY
429儲存格顯示 #RATE_LIMIT超過咗每分鐘上限。正常情況快取會擋住;調高 CACHE_TTL,或者去 /pricing 升級。
儲存格顯示 #NO_PAIR回應入面冇報價貨幣。檢查下個代碼係咪支援嘅 ISO 貨幣(例如 JPY,唔係 JYP)。
儲存格卡喺 Loading…Apps Script 需要外部連線授權。喺編輯器工具列執行一次條函數,等提示彈出,然後接受。
指示性匯率,唔可以用嚟結算
呢啲匯率係為模型、分析同顯示而發佈。佢哋唔係交易報價 — 唔可以用嚟結算交易或者轉賬。每個回應嘅 notice 欄位都有講明。
ER
exchangerate.dev
為開發者提供嘅整合指南。

Keep reading

Tutorial喺 Excel 用 Power Query 攞即時匯率Read Tutorial用 JavaScript 同 Node.js 做貨幣換算Read Tutorial用 Python 攞匯率嘅方法Read
更多比較Fixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
學習Reading source and market_session in your pipelineIndicative vs executable FX rates: what a rates API actually gives youECB reference rates, explained
即時匯率EUR/USDGBP/USDUSD/JPY