為替レートをスプレッドシートで常に最新の状態にしたいとお考えではないでしょうか。手動で更新するのは手間がかかり、リアルタイムの値を反映するのは困難です。この記事では、無料の為替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の通貨ページから為替レートを抽出する手順を説明します。
- 通貨ペアのURLを確認する
ブラウザで「https://www.google.com/finance/quote/USD-JPY」を開きます。このページには米ドル/円の現在のレートが表示されています。他の通貨ペアの場合は、USD-JPYの部分を例えばEUR-JPYに変更します。 - IMPORTXML関数を入力する
スプレッドシートのセルに次の数式を入力します。=IMPORTXML("https://www.google.com/finance/quote/USD-JPY","//*[@data-last-price]")
このXPathは、data-last-price属性を持つ要素を取得し、そのテキストとしてレートを返します。 - 数値として表示する
取得した値は文字列として扱われる場合があります。セルの書式設定を「数値」に変更し、通貨記号を追加すると見やすくなります。更新はシートが再計算されるたびに行われます。手動で更新するには、ブラウザをリロードするか、ファイルメニューの「設定」で計算頻度を変更してください。
Apps Scriptを使った為替レート自動取得の手順
Apps Scriptを使うと、外部APIを直接呼び出して、より柔軟に為替レートを取得できます。ここでは、無料API「exchangerate-api.com」を利用する例を示します。
スクリプトの作成と実行
- スクリプトエディタを開く
「拡張機能」メニューから「Apps Script」を選択します。新しいプロジェクトが開きます。 - 関数を記述する
以下のコードをエディタに貼り付けます。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に書き込みます。 - スクリプトを実行する
実行ボタンをクリックして、関数を一度テストします。初回は権限の承認を求められるので、画面の指示に従って許可してください。正しく実行されれば、B1にレートが表示されます。
定期更新のためのトリガー設定
- トリガーを追加する
スクリプトエディタの時計アイコンをクリックし、「トリガーを追加」を選択します。 - 設定を指定する
実行する関数に「getExchangeRate」を選択し、イベントのソースを「時間主導型」にします。頻度は「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);
}
} - トリガーを再設定する
この関数を呼び出すようにトリガーを変更すれば、複数のレートが定期的に更新されます。
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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
