布萊茲的投資筆記 CRYPTO
市場行情Sheets API

GOOGLE SHEETS API

把行情帶進你的試算表。

一次查詢最多 100 種幣。網頁關閉後,API 仍可運作。

1. 部署資料服務

先將專案部署至 Cloudflare Pages。正式 API 根網址為 https://zeroboss2006-crypto.pages.dev;Google Sheets 無法連接你電腦上的 localhost。

Binance 現價與 24h 漲跌免金鑰。CoinGecko 市值及年漲跌需先設定共用 D1 快取(MARKET_DB),再在 Cloudflare 設定 Secret COINGECKO_DEMO_API_KEY

2. 安裝試算表函數

下載 GoogleSheets.gs ↗,把全部內容貼到 Google Sheets「擴充功能 → Apps Script」,儲存後重新開啟試算表。若已有同名函數,請用這份取代;已有 onOpen 時需合併選單程式。

3. 輸入公式

免金鑰的 Binance USDT 現價:

=BINANCE_API("BTC", "price")
=BINANCE_API("BTCUSDT", "changepct")

CoinGecko USD 市值、年漲跌與名稱:

=CRYPTO_API("BTC", "marketcap")
=CRYPTO_API("BTC", "1y_changepct")
=NAME("BTC")

在 A2:A101 放入幣種代號,一次輸出 5 個欄位(名稱、現價、24h、1 年、市值):

=CRYPTO_TABLE(A2:A101, "name,price,changepct,1y_changepct,marketcap")

或批次抓取 Binance 現價、24h 漲跌:

=CRYPTO_TABLE(A2:A101, "price,changepct", 0, "binance")

請留空右方及下方的輸出範圍。漲跌數值回傳比例,例如 0.025,將該欄設為百分比便會顯示 2.5%

4. 自動更新

從試算表「CRYPTO 行情」選單執行「建立/更新重算時間」,首次執行需授權。接著讓公式參照建立的 Crypto設定!B1

=CRYPTO_TABLE(A2:A101, "name,price,changepct,1y_changepct,marketcap", 'Crypto設定'!$B$1)
=BINANCE_API("BTC", "price", 'Crypto設定'!$B$1)

再選「啟用每 15 分鐘重算」。重新整理網頁、快取到期都不會單獨強制 Sheets 公式重算;不要傳入 NOW() 或 RAND()。選單會寫入 Crypto設定 工作表 A1:B1,請保留此區域。

HTTP API

以下連結可檢查目前環境的 JSON 回應:

Binance:BTC、ETH、SOL ↗

CoinGecko:Bitcoin、Ethereum ↗

GET /api/quotes?source=binance&symbols=BTC,ETH
GET /api/quotes?source=coingecko&symbols=bitcoin,ethereum

回應包含 sourcefetched_atcache_secondspercentage_unit 與依請求順序排列的 data。每列包含 price、changepct、1y_changepct、marketcap、marketcap_changepct、currency、updated_at。查無幣種會在該列回傳 error,缺少欄位為 null。

來源與更新頻率

Binance API 是伺服器端 REST 快照,快取 60 秒,幣價以 USDT 計價,支援有成交紀錄的 USDT 交易對。它與看板中的瀏覽器 WebSocket 分開運作,不是秒級推播 API。

CoinGecko 目前提供市值前 100 種幣,以 USD 計價,快取 15 分鐘;同代號請改傳 CoinGecko ID。Binance 不提供這裡的市值與年漲跌欄位,不會自動混用另一個來源。

CoinGecko 資料由全站共用,每 15 分鐘時段最多更新 1 次;重新整理不會額外消耗該時段的 Demo 請求。來源故障時會標示 stale 與 warning,舊快照最多保留 24 小時。Binance 與 Apps Script 另有快取。批次公式比逐格呼叫更合適。

Google 自訂函數文件 ↗ · CoinGecko 欄位文件 ↗