GOOGLEFINANCEで為替レートが取得できない? 対処法を総まとめ

8appsチーム·

通貨ペアで#N/A、古いままに見えるレート、エラーになる過去の日付 – ドキュメントで確認できるGOOGLEFINANCEの失敗パターンをすべて取り上げ、原因と本当に効く対処法を解説します。

まず、正しく動くはずの2つの数式から

=GOOGLEFINANCE("CURRENCY:USDEUR")
=INDEX(GOOGLEFINANCE("CURRENCY:USDEUR","price",DATE(2026,8,1)),2,2)

1つ目が最新レート、2つ目が過去レートです。お手元の数式が違って見えるなら、まずこの2つと見比べてください – 不具合の大半は構文の問題です。ここからは、多くの人がつまずく順に失敗パターンを見ていきます。

「#N/A」や「無効なシンボル」と表示される

  • 通貨ペアはスラッシュもスペースも入れず、1つの文字列で指定します: CURRENCY:USDEUR が正解で、CURRENCY:USD/EUR や CURRENCY:USD EUR ではありません。
  • どちらのコードもISO 4217に沿っている必要があります – 3文字で、実在する通貨のもの。コードを打ち間違えると、不明なシンボルとしてエラーになります。
  • デバッグ中に知っておきたいこと: CURRENCY: という接頭辞は、GoogleのGOOGLEFINANCEヘルプページのどこにも出てきません(2026年9月16日に再確認)。Google スプレッドシートで最もよく使われている通貨機能は、ドキュメントに載っていないのです – 動きはしますが、エラーになったときに照らし合わせる公式リファレンスは存在しません。それはあなたのミスではなく、そもそもそういう前提の機能なのです。Googleの為替データは実際どこから来ているのかでは、Googleが何を明言し、何を明言していないかを整理しています。

「レートが間違っている」(たいていは古いだけ)

Googleは遅延について2か所で記載しており、その2つの数字は食い違っています。GOOGLEFINANCEのヘルプページは price 属性を*「リアルタイムの価格。最大20分遅延」と説明しています。一方、Google Financeの免責事項ページは通貨データを別枠で扱い、遅延を3分としたうえで、こう付け加えています。「Googleは、表示される為替レートの正確性を保証できません。為替レートの変動の影響を受ける可能性のある取引を行う前に、最新のレートをご確認ください。」* リアルタイムの取引画面と比べているなら、この時間幅の中でずれが出るのは想定どおりの挙動であって、エラーではありません。もう1つ、バグと誤解されがちな文書化された制約があります。GOOGLEFINANCEは*「英語でのみ利用でき、ほとんどの海外の取引所には対応していません」*。

過去レートの取得がエラーになる、または表が返ってくる

過去レートの形式が返すのは、1つの値ではなく小さな表(見出し行と日付の行)です – そのため、過去レートの呼び出しをそのまま別の数式に入れると壊れるのです。INDEX(..., 2, 2) で包めば数値だけを取り出せます。Googleが挙げている過去データの属性は close です。日付付きの price はほとんどの例で使われている形式で、どちらも同じ日付と終値の表を返します。

ほかにも文書化された落とし穴が2つあります。Googleは*「GOOGLEFINANCEに渡された日付をUTCの正午として扱う」ため、結果が現地市場の終値から想定される日と1日ずれることがあります。また、通貨ペアでは「通貨には取引時間帯がないため、open、low、high、volumeは返されません」* – 存在するのは終値だけです。Google スプレッドシートで過去の為替レートを取得するでは、特定日のレートを取得する流れを最初から最後まで解説しています。

「EURでは動くのに、この通貨では動かない」

すべての通貨ペアに毎日のデータがあるわけではありません。Google自身のヘルプフォーラムやIssue Trackerには、特定の通貨 – 2025年に報告されたのはBRLとILSです – について、Google Finance側にデータがなかったために何週間も #N/A を返し続けたというスレッドがあり、週末の日付で一部の通貨のデータが欠けているというGoogle スプレッドシートユーザーの報告もあります。数式の中でできる対処はなく、確認できるステータスページもありません。以前は動いていたペアが*「シンボル ... のクエリからデータが返されませんでした」*と表示するなら、データが欠けているのはあなたのシートではなく上流です。IFERROR(..., "no data") のようなラッパーを使えば、その間もシートの残りは計算を続けられます。

「スクリプトから触るとエラーになる」

これはバグではなく壁であり、Googleもそう明記しています。「過去データは、Sheets API や Apps Script でダウンロードしたりアクセスしたりすることはできません。これを試みると、スプレッドシートの該当するセルに、値の代わりに #N/A エラーが表示されます。」 数式の中でできる対処はありません – 自動化されたパイプラインには、代わりに本物のレート提供元が必要です。数式で十分なのはどんなときかで代替手段をまとめています。

「いつ更新されるの?」

GoogleはGOOGLEFINANCEの更新間隔を文書化しておらず、再計算の設定でタイマーに乗せられる関数として挙げているのは NOW、TODAY、RAND、RANDBETWEEN だけです。更新頻度を言い切る人がいたら、それは推測です。それを前提に設計しましょう。値は「おおむね最新」として扱い、固定しておきたいものは値として貼り付けてください。

文書に数字が1つ必要でここにたどり着いたなら

GOOGLEFINANCEのデバッグの多くは、請求書や見積書、メールに載せる換算後の数字1つのために行われています – その場合、スプレッドシートはそもそも回り道でした。Currency Converterは、Gmail、Google ドキュメント、Google カレンダー、Google スライド、Google スプレッドシートのサイドバーで、180以上の通貨を最新レートで換算できます。サイドバーでの換算は無制限・無料で、登録も不要です。必要なのが過去の特定日のレートなら、それはGoogle スプレッドシート用の関数で提供しており、Premiumプランに含まれます。

出典