2026年9月30日、1米ドルは17,891.1インドネシアルピアでした。observations エンドポイントに基準通貨、相手通貨、日付を指定し、その日の行からレートを読み取ります。
APIで日付指定のレートを取得する
- 通貨と日付を選ぶ 基準通貨は observations のパスに、相手通貨は
currenciesに指定します。USD から IDR なら、パスにUSD、パラメータにIDRを入れます。start_dateとend_dateの両方に2026-09-30を設定すると、2026年9月30日の観測値を取得できます。範囲の両端に同じ日付を使います。 - APIキーを設定 無料キーを取得し、環境変数
NARWHAL_API_KEYに保存します。スクリプトはこの変数をAuthorization: Bearer YOUR_KEYヘッダーに使うので、リクエストの前にキーを環境に設定してください。 - 観測値をリクエストする ここに示す日付パラメータと認証ヘッダーを付けて、observations エンドポイントを呼び出します。スクリプトはレスポンスの
observations配列を読み、返された各日の日付とrates配列を並べて出力します。rates配列には相手通貨とそのレートが一緒に入っています。import os import requests r = requests.get( "https://api.narwhalapi.com/v1/fx/rates/USD/observations", params={"currencies": "IDR", "start_date": "2026-09-30", "end_date": "2026-09-30"}, headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ) r.raise_for_status() for day in r.json()["observations"]: print(day["date"], day["rates"]) - 返された日付とレートを読む 2026年9月30日の出力は
2026-09-30 [{'currency': 'IDR', 'rate': '17891.1'}]です。自分の記録にレートを日付と結び付けるときは、返された行の日付を使ってください。複数の日付が必要な場合は、開始日と終了日を指定し、1ページに多くの日が入ることがあるため、limitとnext_cursorで観測値をページ送りします。
過去の日付には GET /v1/fx/rates/{base}/observations を使います。現在のレートのエンドポイントは GET /v1/fx/rates/{base}?currencies=... で、日付指定のリクエストは開始・終了パラメータ付きの observations パスに送ります。
レスポンスには base、observations、next_cursor が含まれます。observations の各行に date と rates 配列があり、各レートには currency と rate フィールドがあります。スプレッドシート用に値を取り出すときは、観測値から日付を、IDR のエントリから値を取り、リクエストした相手通貨と返されたレートの対応を保ってください。
リクエストがエラーを返した場合、本文は application/problem+json で、status、code、detail、request_id を含みます。レスポンスを観測値として扱う前に、エラーの code と detail を確認してください。エラー本文にはこれらのエラーフィールドが入り、日付付きのレートは成功レスポンスの observations 配列に入ります。
コードなしで過去のレートを調べる
手作業で日付を調べるには、過去のレートを表示する Narwhal の通貨ページを使います。必要な通貨と日付を見つけ、スプレッドシートにコピーするときはレートと一緒に日付も残してください。日付付きの値があれば、換算に使った観測値をあとから参照できます。
リストの場合は、スクリプトが書き出した日付とレートをスプレッドシートに貼り付け、日付を検索列に、レートをその次の列に置きます。数式では、探したい日付に date、それらの列に table を使います。これらのプレースホルダーは、自分のシートの日付参照と検索範囲に置き換えてください。最後の FALSE は日付の完全一致を指定し、2 はレートの列を選びます。貼り付けた値がどの基準通貨と相手通貨の組か分かるよう通貨ペアを表と一緒に残し、検索列の日付には返された観測値の日付を使います。
=VLOOKUP(date, table, 2, FALSE)状況に応じた方法の選び方
| 状況 | 適した方法 | 理由 |
|---|---|---|
| 日付を1つ、手作業で | 通貨ページ | 通貨ページは過去のレートを表示します |
| 日付のリスト | observations エンドポイント | 開始日と終了日を指定し、各日付を検索する |
どのアカウントでも全履歴を読めます。系列の開始が指定した開始日より遅い場合があるため、最初に返された日付を確認してください。
日付が週末や祝日だった場合は?
リクエストした日付にレートがない場合は、それより前で直近の行がある日付を使います。レートは日次の観測値で、週末などレートのない日には行がないため、土曜日を指定してもその日付の観測値は返りません。
そのレートの出どころとなった観測値を記録するときは、前の行の日付を使ってください。観測値のない日付のフォールバックは、請求書の日付の方法で説明しています。
為替レートとは何を意味しますか?
レートは、基準通貨1単位あたりの相手通貨の単位数です。2026年9月30日の USD/IDR の観測値では USD が基準通貨、IDR が相手通貨なので、17,891.1 は米ドル1ドルあたりのインドネシアルピアを表します。USD の金額にその日付のレートを掛けると、IDR 換算額が得られます。
小数のレートはどう扱うべきですか?
金額の計算をするときは、返されたレートを小数または文字列のまま保持してください。API はレートを10進数の文字列で返し、2026年9月30日の出力の引用符付きの '17891.1' がその例です。計算の掛け算では、レートを2進浮動小数点に変換せず、10進数の表現を使ってください。
実例:2026年9月30日の USD/IDR
2026年9月30日の観測値で1,000 USD を換算するには、まずその日付の USD の行から IDR のレートを読み取ります。次にドル額に 1米ドルあたり17,891.1 IDR を掛けます。結果に日付を添えておくと、金額が計算に使った過去の観測値に対応していると分かります。スプレッドシートでは、貼り付けた日付から2026年9月30日を検索してそのレートを取り出し、USD 額にかける乗数として使います。
| 手順 | 値 |
|---|---|
| 観測日 | 2026年9月30日 |
| 基準通貨の金額 | 1,000 USD |
| 2026年9月30日のレート | 1米ドルあたり17,891.1 IDR |
| 掛ける | 1,000 USD × 1米ドルあたり17,891.1 IDR |
| 相手通貨の金額 | 17,891,100 IDR |
公開。