Google Sheets
Google SheetsにはGOOGLEFINANCEが用意されており、簡単な換算にはどちらも役立ちます。どちらも市場レートを返し、以下の数式はGOOGLEFINANCEを使う場面全般で利用できます。違いは提供元にあります。GOOGLEFINANCEは情報源を明示せず指定もできません。Frankfurterは透明です。公的機関のレートが必要な場合は、EU付加価値税用のECB基準レート、ポーランドのNBP、ブラジルのPTAXなど固定の機関を選択できます。さらに、後から密かに変更されない安定した過去データも提供します。
クイックスタート
設定やAPIキーは不要です。IMPORTDATA関数とCSVエンドポイントをセルに入力するだけで最新レートを取得できます:
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur") Google Sheetsにdate,base,quote,rateのテーブルが展開されます。date列は初期状態でシリアル値として表示される場合があります。列を選択して表示形式 > 数字 > 日付を選択すると日付形式で表示されます。複数の対象通貨を一度に取得するにはカンマで区切ります:
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur,gbp,jpy")金額の換算
IMPORTDATAは為替レートを返します。読み込んだレートのセルに換算前の金額を掛け合わせるか、以下のカスタム関数を利用してください。
カスタム関数
再利用可能な=FRANKFURTER()関数を作成するには、短いApps Scriptを追加します。スプレッドシートの拡張機能 > Apps Scriptを開き、次のコードを貼り付けて保存します:
function FRANKFURTER(amount, from, to, date) {
let url = `https://api.frankfurter.dev/v2/rate/${from}/${to}`;
if (date) url += `?date=${Utilities.formatDate(date, "UTC", "yyyy-MM-dd")}`;
const data = JSON.parse(UrlFetchApp.fetch(url).getContentText());
return amount * data.rate;
}任意のセルから呼び出します:
=FRANKFURTER(100, "usd", "eur")日付を指定して過去のレートを取得:
=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))特定の公的機関を指定
デフォルトでは全提供元を組み合わせた合成レートが返されます。クエリにprovidersを追加して特定の機関を指定できます。税務や会計では自国の中央銀行レートが義務付けられることが多いため不可欠です:
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur&providers=ecb")ECB- 欧州中央銀行の基準レート。EUのVATおよび関税の公式基準。
NBP- ポーランド国立銀行。ポーランドの税務申告で使用。
CNB- チェコ国立銀行。チェコの会計および税務の公式基準。
BCB- ブラジル中央銀行PTAX。ブラジルの契約および税務の公式基準。
BANXICO- メキシコ銀行の米ドル債務決済用FIXレート。
すべての提供元を確認できます。特定の提供元を指定した場合、その機関の公表スケジュールに従うため、合成市場レートより最新レートが1日遅れる場合があります。
過去の推移データ
期間指定にはfromを使用し、group=monthで月ごとに集約してグラフ作成に適した形式にします。過去データが後から修正されないため、分析の再現性が保たれます。
=IMPORTDATA("https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd"es=gbp&providers=bbk&group=month") これはドイツ連邦銀行(ブンデスバンク)のアーカイブから1949年以降の米ドル対英ポンドのレートを取得します。連邦銀行のFixingデータは、1948年からの米ドル対ドイツマルク、および1949年から1970年までの主要通貨レートを網羅しています。1999年以降は欧州中央銀行が引き継いでおり、現代の連続した時系列には標準の合成レートまたはproviders=ecbを使用します。