ADVERTISEMENT

【Googleスプレッドシート】為替レートをリアルタイム取得!為替APIによる更新

【Googleスプレッドシート】為替レートをリアルタイム取得!為替APIによる更新
🛡️ 超解決

為替レートをスプレッドシートで常に最新の状態にしたいとお考えではないでしょうか。手動で更新するのは手間がかかり、リアルタイムの値を反映するのは困難です。この記事では、無料の為替APIを利用してGoogleスプレッドシートに自動で為替レートを取得・更新する方法を解説します。標準機能のIMPORTXML関数や、より柔軟なApps Scriptを使った2通りの方法をご紹介しますので、用途に合わせて選択できます。

【要点】為替レートをリアルタイムで取得する3つの方法

  • IMPORTXML関数を使う方法: Google Financeのページから現在のレートを抽出します。設定は簡単ですが、ページ構造の変更に弱いので注意が必要です。
  • Apps Scriptを利用する方法: 外部APIを呼び出して任意の通貨ペアのレートを取得します。トリガーで定期更新が可能で、カスタマイズ性が高いです。
  • 専用アドオンを活用する方法: 「ImportFromWeb」などのアドオンを使えば、ノーコードで為替データを取り込めます。ただし、アドオンの仕様や有料プランに注意が必要です。

ADVERTISEMENT

為替レート自動取得の仕組みと必要なもの

為替レートを自動取得するには、外部のデータソースから最新のレートをスプレッドシートに取り込む必要があります。代表的な方法は、無料の為替APIを利用することです。APIは特定のURLにアクセスするとJSONやXML形式でレートを返します。Googleスプレッドシートでは、IMPORTXML関数でWebページからデータを抽出するか、Apps ScriptでHTTPリクエストを送ってAPIを直接呼び出すことができます。この記事では、まず手軽なIMPORTXMLを使った方法を紹介し、次に安定性の高いApps Scriptを使った方法を解説します。

IMPORTXML関数を使った為替レート取得の手順

IMPORTXML関数は、WebページのHTML要素をXPathで指定して取得します。ここでは、Google Financeの通貨ページから為替レートを抽出する手順を説明します。

  1. 通貨ペアのURLを確認する
    ブラウザで「https://www.google.com/finance/quote/USD-JPY」を開きます。このページには米ドル/円の現在のレートが表示されています。他の通貨ペアの場合は、USD-JPYの部分を例えばEUR-JPYに変更します。
  2. IMPORTXML関数を入力する
    スプレッドシートのセルに次の数式を入力します。
    =IMPORTXML("https://www.google.com/finance/quote/USD-JPY","//*[@data-last-price]")
    このXPathは、data-last-price属性を持つ要素を取得し、そのテキストとしてレートを返します。
  3. 数値として表示する
    取得した値は文字列として扱われる場合があります。セルの書式設定を「数値」に変更し、通貨記号を追加すると見やすくなります。更新はシートが再計算されるたびに行われます。手動で更新するには、ブラウザをリロードするか、ファイルメニューの「設定」で計算頻度を変更してください。

Apps Scriptを使った為替レート自動取得の手順

Apps Scriptを使うと、外部APIを直接呼び出して、より柔軟に為替レートを取得できます。ここでは、無料API「exchangerate-api.com」を利用する例を示します。

スクリプトの作成と実行

  1. スクリプトエディタを開く
    「拡張機能」メニューから「Apps Script」を選択します。新しいプロジェクトが開きます。
  2. 関数を記述する
    以下のコードをエディタに貼り付けます。
    function getExchangeRate() {
    var url = "https://api.exchangerate-api.com/v4/latest/USD";
    var response = UrlFetchApp.fetch(url);
    var json = JSON.parse(response.getContentText());
    var rate = json.rates.JPY;
    SpreadsheetApp.getActiveSheet().getRange("B1").setValue(rate);
    }

    このコードは、USDを基準としたJPYのレートを取得し、アクティブシートのセルB1に書き込みます。
  3. スクリプトを実行する
    実行ボタンをクリックして、関数を一度テストします。初回は権限の承認を求められるので、画面の指示に従って許可してください。正しく実行されれば、B1にレートが表示されます。

定期更新のためのトリガー設定

  1. トリガーを追加する
    スクリプトエディタの時計アイコンをクリックし、「トリガーを追加」を選択します。
  2. 設定を指定する
    実行する関数に「getExchangeRate」を選択し、イベントのソースを「時間主導型」にします。頻度は「1時間ごと」や「1日ごと」など、用途に合わせて選びます。保存すれば、自動で定期実行されるようになります。

複数の通貨ペアを一括取得するカスタマイズ例

複数の通貨レートを一度に取得したい場合は、以下のようにコードを拡張します。

  1. コードを修正する
    次のように、取得したい通貨コードを配列で指定し、ループで一括処理します。
    function getMultiRates() {
    var url = "https://api.exchangerate-api.com/v4/latest/USD";
    var response = UrlFetchApp.fetch(url);
    var json = JSON.parse(response.getContentText());
    var currencies = ["JPY","EUR","GBP","AUD"];
    var sheet = SpreadsheetApp.getActiveSheet();
    for (var i = 0; i < currencies.length; i++) {
    var rate = json.rates[currencies[i]];
    sheet.getRange(i+2, 1).setValue(currencies[i]);
    sheet.getRange(i+2, 2).setValue(rate);
    }
    }
  2. トリガーを再設定する
    この関数を呼び出すようにトリガーを変更すれば、複数のレートが定期的に更新されます。

ADVERTISEMENT

注意点とトラブルシューティング

IMPORTXMLでレートが取得できない場合

Google Financeのページ構造が変更されると、XPathが機能しなくなることがあります。その場合は、ページのソースを確認して新しいXPathを調べてください。また、Google Financeの利用規約に違反しないよう、個人利用の範囲で使用することをおすすめします。

Apps Scriptでエラーが発生する場合

APIのURLが間違っているか、APIキーが必要な場合はエラーになります。無料APIにはリクエスト回数制限があるため、頻繁に呼び出すと制限に達することがあります。トリガーの間隔は十分に空けてください。また、UrlFetchApp.fetchはタイムアウトすることがあるので、必要に応じて例外処理を追加します。

更新頻度の制限

IMPORTXMLの更新はスプレッドシートの再計算に依存し、通常は約1時間ごとです。Apps Scriptのトリガーは最短1分ごとに設定できますが、無料のGoogleアカウントでは1時間に20回程度の制限があります。正確な最新レートが必要な場合は、有料APIや専用サービスを検討してください。

IMPORTXMLとApps Scriptの比較

項目 IMPORTXML Apps Script
設定の難易度 容易 やや難しい
更新頻度の制御 自動(約1時間ごと) トリガーで自由設定
信頼性 低い(構造変更に弱い) 高い(API呼び出し)
カスタマイズ性 低い 高い
外部APIの必要性 不要(Google Finance利用) 必要(無料API可)

この記事では、Googleスプレッドシートで為替レートをリアルタイムに取得する2つの方法を解説しました。IMPORTXMLは手軽ですが構造変更に弱いため、長期的に使うならApps Scriptがおすすめです。Apps Scriptを使えば、任意のAPIを呼び出して複数の通貨ペアを一括取得でき、トリガーで定期更新も可能です。まずはIMPORTXMLで試し、必要に応じてApps Scriptに移行するとよいでしょう。これらの方法を活用して、常に最新の為替レートをスプレッドシートで管理してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。