GASで為替レートAPIを使って通貨換算を自動化する

先生

GASでサクッと通貨換算を自動化!もう手計算で悩む必要はありません。

GASで為替レートAPIを使う準備

Google Apps Script (GAS) で為替レートAPIを利用して通貨換算を自動化する方法を解説します。この記事では、APIキーの取得からGASでの実装、そしてスプレッドシートとの連携まで、初心者でも分かりやすくステップごとに説明します。

まず、為替レートAPIを利用するための準備をしましょう。今回は、無料で利用できるAPIとして、exchangerate.host を使用します。他のAPIも利用可能ですが、ここでは例として exchangerate.host を用います。

1. exchangerate.hostにアクセスします。(無料で使用できます。)

2. APIドキュメントを確認し、基本的な使い方を理解します。

3. APIキーは不要ですが、利用制限などを確認しておきましょう。

準備ができたら、GASでAPIを呼び出すためのコードを作成します。

GASでAPIを呼び出すコード

GASで exchangerate.host のAPIを呼び出す基本的なコードは以下のようになります。

function getExchangeRate(baseCurrency, targetCurrency) {
  const url = https://api.exchangerate.host/convert?from=${baseCurrency}&to=${targetCurrency};
  const response = UrlFetchApp.fetch(url);
  const json = JSON.parse(response.getContentText());

  if (json.success) {
    return json.result;
  } else {
    Logger.log("Error: " + json.error);
    return null;
  }
}

このコードは、getExchangeRate 関数を定義し、UrlFetchApp.fetch を使ってAPIを呼び出しています。APIのレスポンスはJSON形式で返ってくるので、JSON.parse でパースし、必要な為替レートを取得します。

引数として、baseCurrency (換算元の通貨) と targetCurrency (換算先の通貨) を受け取ります。例えば、日本円から米ドルに換算する場合は、baseCurrencyJPYtargetCurrencyUSD を指定します。

APIのレスポンスが成功した場合は、為替レートを返し、失敗した場合はエラーログを出力します。

スプレッドシートと連携して通貨換算

次に、作成した getExchangeRate 関数をスプレッドシートと連携させます。スプレッドシートのセルに通貨コードと金額を入力し、別のセルに換算結果を表示するようにします。

スプレッドシートを開き、ツール > スクリプトエディタを選択してGASのコードエディタを開きます。

以下のコードをGASのコードエディタに貼り付けます。

function convertCurrency() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();

  const baseCurrency = sheet.getRange('A1').getValue();
  const targetCurrency = sheet.getRange('B1').getValue();
  const amount = sheet.getRange('C1').getValue();

  const exchangeRate = getExchangeRate(baseCurrency, targetCurrency);

  if (exchangeRate !== null) {
    const convertedAmount = amount * exchangeRate;
    sheet.getRange('D1').setValue(convertedAmount);
  } else {
    sheet.getRange('D1').setValue('Error');
  }
}

このコードは、スプレッドシートの A1セルに換算元の通貨、B1セルに換算先の通貨、C1セルに金額を入力し、D1セルに換算結果を表示するものです。

convertCurrency 関数は、スプレッドシートから通貨コードと金額を取得し、getExchangeRate 関数を使って為替レートを取得します。そして、取得した為替レートを使って金額を換算し、結果をスプレッドシートに書き込みます。

スプレッドシートに戻り、A1セルに JPY、B1セルに USD、C1セルに 1000 と入力します。

GASのコードエディタに戻り、convertCurrency 関数を実行します。スプレッドシートのD1セルに換算結果が表示されれば成功です。

この関数をスプレッドシート上で実行するには、convertCurrency 関数をカスタム関数として登録する必要があります。=convertCurrency()のようにセルに入力して実行することはできません。スクリプトエディタから実行するか、トリガーを設定して自動実行するように設定する必要があります。

エラー処理と改善

APIの呼び出しやスプレッドシートとの連携では、エラーが発生する可能性があります。エラーが発生した場合に備えて、エラー処理を追加しましょう。

getExchangeRate 関数にtry-catch文を追加して、APIの呼び出しに失敗した場合にエラーログを出力するようにします。

function getExchangeRate(baseCurrency, targetCurrency) {
  try {
    const url = https://api.exchangerate.host/convert?from=${baseCurrency}&to=${targetCurrency};
    const response = UrlFetchApp.fetch(url);
    const json = JSON.parse(response.getContentText());

    if (json.success) {
      return json.result;
    } else {
      Logger.log("Error: " + json.error);
      return null;
    }
  } catch (e) {
    Logger.log("Error: " + e);
    return null;
  }
}

また、スプレッドシートのセルに入力された値が不正な場合に備えて、入力値の検証を追加することもできます。

さらに、トリガーを設定することで、スプレッドシートが編集されたときに自動的に通貨換算を実行するようにすることも可能です。例えば、A1セル、B1セル、C1セルのいずれかの値が変更されたときに、convertCurrency 関数が実行されるように設定できます。

参考リンク

まとめ

GASと為替レートAPIを組み合わせることで、通貨換算を自動化することができます。この記事では、基本的なAPIの呼び出し方からスプレッドシートとの連携、そしてエラー処理までを解説しました。これらの知識を応用することで、様々な業務を自動化することができます。

今回紹介した方法は、あくまで一例です。APIの利用方法やスプレッドシートの構成は、ご自身の要件に合わせて自由にカスタマイズしてください。