[FileMaker] 為替レートを API で取得する

環境:macOS Catalina Version 10.15.6(英語環境)・FileMaker Pro 18 Advanced

私の確定申告は為替レートの計算が必要になる。

いつも為替レートは以下のサイトで調べ、計算していた。日付を指定できるので過去の為替レートも確認でき、意外と過去分を調べられるサイトは少ないので重宝していた。

Currency Converter | Foreign Exchange Rates | OANDA
https://www1.oanda.com/currency/converter/

しかしもっと簡単に為替レートを調べ、計算したくなった。私は FileMaker で確定申告用のデータをまとめることが多いので、FileMaker 上で為替レートが取得、計算できたら楽だ。

最初は Web ビューアで OANDA のサイトを表示し、そこで入力およびデータの取得を試みようとしたが、よくよく考えると為替レートのようなものは API で取得できるはず。ググってみたところ、無料で登録もなしに簡単に使える API を見つけた。

Foreign exchange rates API with currency conversion
https://exchangeratesapi.io/

GitHub – exchangeratesapi/exchangeratesapi: Exchange Rates API
https://github.com/exchangeratesapi/exchangeratesapi

まずはブラウザでいろいろ取得して遊んでみた。設定は以下のようにする。

・ベースとなる URL :https://api.exchangeratesapi.io/

・最新の情報:latest
・日付指定:[YYYY-MM-DD]
 例:2021-02-12
・日付範囲指定:history?start_at=[YYYY-MM-DD]&end_at=[YYYY-MM-DD]
 例:history?start_at=2018-01-01&end_at=2018-09-01
・ベースとなる通貨:base=[通貨略号]
 例:base=USD
・対象通貨:symbols=[通貨略号]
 例:base=JPY、base=USD,GBP(複数指定可)

ベースとなる URL、対象の期間に続けて、ベースとなる通貨や対象通貨を指定していく。オプションの指定は最初の期間の後ろは ?、それ以降は & でつなげる。

具体的には以下のようになる。

最新の米ドルを日本円に計算
https://api.exchangeratesapi.io/latest?base=USD&symbols=JPY
→ {"rates":{"JPY":105.2887387758},"base":"USD","date":"2021-02-19"}

2021 年1月8日の米ドルを日本円に計算
https://api.exchangeratesapi.io/2021-01-08?base=USD&symbols=JPY
→ {"rates":{"JPY":103.8857142857},"base":"USD","date":"2021-01-08"}

2020 年6月8日から 2020 年6月 12 日の米ドルを日本円および英ポンドに計算
https://api.exchangeratesapi.io/history?start_at=2020-06-08&end_at=2020-06-12&base=USD&symbols=JPY,GBP
→ {"rates":{"2020-06-12":{"JPY":107.2717622081,"GBP":0.7931086341},"2020-06-10":{"JPY":107.3934065934,"GBP":0.7820923077},"2020-06-09":{"JPY":108.1459181866,"GBP":0.789091553},"2020-06-11":{"JPY":107.0849488897,"GBP":0.7901392316},"2020-06-08":{"JPY":109.3575542756,"GBP":0.7901905184}},"start_at":"2020-06-08","base":"USD","end_at":"2020-06-12"}

私が確定申告で使うのは、指定日の米ドルを日本円に計算することである。これを FileMaker に実装してみよう。

Table テーブルの Date フィールドに入力された日付に対して、米ドルを日本円に計算した値を API で取得し、ExchangeRate フィールドに格納するとする。

以下のようなスクリプトになる。

1Insert from URL [ Select ; With dialog: Off ; Target: $url ; "https://api.exchangeratesapi.io/" & Table::Date & "?base=USD&symbols=JPY" ]
2Set Variable [ $apiresult ; Value: JSONGetElement ( $url ; "rates" ) ]
3Set Field [ Table::ExchangeRate ; Middle ( $apiresult ; Position ( $apiresult ; ":" ; 1 ; 1 ) + 1 ; Length ( $apiresult - 1 ) ) ]

参考:
JSON Currency Exchange Rates – FileMakerHacks
https://filemakerhacks.com/2020/08/25/json-currency-exchange-rates/

FileMaker 16 の新機能 「JSON関数」 | イエスウィキャンのファイルメーカー情報
https://ywc.com/filemaker/?p=3908