さて、今回は AppleScript で web API を利用して、円対ドルの為替レートを取得して、表示させてみます。
円の対ドル為替レートというのは、例えば、円が70円台になり円高だとか、円が100円に迫り円安になっただとか、つまり、1ドルあたり何円かという表示をここでは目指します。
ただ、少なくともいつ更新されたデータかということくらいはわからないと、1ヶ月前のレートか昨日のレートかと心許ないので、更新情報は付け加えます。
つまり、期待する出力は「97.5 Yen/USD(2013-06-08 20:08:05)」というものです。
さて、利用する Web API は クジラ 外国為替 確認 API (為替 RSS) です。詳細はリンク先を熟読して指示に従ってください。XML、JSON、INI、CSV形式で提供されています。
ところで、1ドル当たりの円はいくらかという、ドルからみたCSV形式のレート一覧を取得するには api.aoikujira.com/kawase/csv/usd を参照します。
取得できる為替データは次のようなものです。
赤字で示した部分を、後ほど利用します。
このデータから「97.5 Yen/USD(2013-06-08 20:08:05)」を出力する AppleScript の核の部分を下図に示します。
なお、このスクリプトは、エラー対策をしていません、念のため。また、「更新頻度は1日に1回程度」ということですので、頻繁にアクセスする場合は、キャッシュするなどの対策を講じる方が良いでしょう。
スクリプト実行した場合の、1行毎の実行結果をコメントアウトして記載してみました。
以下に解説します。
まず、AppleScript の do shell script コマンドを使ってシェルコマンドを利用しています。
シェルコマンドの curl で、クジラ外国為替確認API から CSV形式の為替データを取得します。
そして、為替データをパイプライン「|」で、grep コマンドに渡して、為替データのうち、「update」が含まれる行と「JPY」が含まれる行を取り出します。2行ともを1度の処理で取り出すために grep の「-e」オプションを指定します。
次に、この2行を改行で切り分けてリスト化し、{"update,2013-06-08 20:08:05", "JPY,97.5"}を生成します。
あとは順に出力データを生成し、追加してゆきます。
留意する点は、"update,2013-06-08 20:08:05" を「,」で分解してリスト化してものから「item 2 of ~」により2番目のみ取り出し、また同様に、"JPY,97.5"から「97.5」のみを取り出しています。
結果として、「97.5」&「(」&「2013-06-08 20:08:05」&「)」で、「97.5 Yen/USD(2013-06-08 20:08:05)」が生成されます。
関連リンク:
Web API 設計のベストプラクティス集 "Web API Design - Crafting Interfaces that Developers Love" - フリーフォーム フリークアウト
キーワード:web API、為替レート、AppleScript、do shell script、curl、grep
円の対ドル為替レートというのは、例えば、円が70円台になり円高だとか、円が100円に迫り円安になっただとか、つまり、1ドルあたり何円かという表示をここでは目指します。
ただ、少なくともいつ更新されたデータかということくらいはわからないと、1ヶ月前のレートか昨日のレートかと心許ないので、更新情報は付け加えます。
つまり、期待する出力は「97.5 Yen/USD(2013-06-08 20:08:05)」というものです。
さて、利用する Web API は クジラ 外国為替 確認 API (為替 RSS) です。詳細はリンク先を熟読して指示に従ってください。XML、JSON、INI、CSV形式で提供されています。
ところで、1ドル当たりの円はいくらかという、ドルからみたCSV形式のレート一覧を取得するには api.aoikujira.com/kawase/csv/usd を参照します。
取得できる為替データは次のようなものです。
赤字で示した部分を、後ほど利用します。
code,value
result,ok
basecode,usd
update,2013-06-08 20:08:05
source,http://xurrency.com/
API_URL,http://api.aoikujira.com/kawase/
EUR,0.7565
.
.
.
JPY,97.5
KRW,1122.8399
LKR,126.35
MYR,3.0935
NZD,1.2678
SGD,1.2489
TWD,29.75
ZAR,9.9831
THB,30.635
.
.
.
このデータから「97.5 Yen/USD(2013-06-08 20:08:05)」を出力する AppleScript の核の部分を下図に示します。
なお、このスクリプトは、エラー対策をしていません、念のため。また、「更新頻度は1日に1回程度」ということですので、頻繁にアクセスする場合は、キャッシュするなどの対策を講じる方が良いでしょう。
スクリプト実行した場合の、1行毎の実行結果をコメントアウトして記載してみました。
以下に解説します。
まず、AppleScript の do shell script コマンドを使ってシェルコマンドを利用しています。
シェルコマンドの curl で、クジラ外国為替確認API から CSV形式の為替データを取得します。
そして、為替データをパイプライン「|」で、grep コマンドに渡して、為替データのうち、「update」が含まれる行と「JPY」が含まれる行を取り出します。2行ともを1度の処理で取り出すために grep の「-e」オプションを指定します。
次に、この2行を改行で切り分けてリスト化し、{"update,2013-06-08 20:08:05", "JPY,97.5"}を生成します。
あとは順に出力データを生成し、追加してゆきます。
留意する点は、"update,2013-06-08 20:08:05" を「,」で分解してリスト化してものから「item 2 of ~」により2番目のみ取り出し、また同様に、"JPY,97.5"から「97.5」のみを取り出しています。
結果として、「97.5」&「(」&「2013-06-08 20:08:05」&「)」で、「97.5 Yen/USD(2013-06-08 20:08:05)」が生成されます。
関連リンク:
Web API 設計のベストプラクティス集 "Web API Design - Crafting Interfaces that Developers Love" - フリーフォーム フリークアウト
キーワード:web API、為替レート、AppleScript、do shell script、curl、grep
AppleScriptを公開していらっしゃるのを見て、リクエストというか、こんなのあったら便利なんですけど・・というご相談です。
というのは、複数ファイルの接頭辞をつけるのに、いつもはリネームソフトを使ってます。
それを、クリップボードの言葉(例えば "images_")で一気にリネームできたりすると便利かなぁと思いました。
開発の構想の片隅に入れていただけると嬉しいです!
『複数ファイル』を、どう指定するのかが不明ですが。
参考までに、デスクトップに「relaxation_of_the_new_world」というファイルを作った後に、そのファイル名を「images_relaxation_of_the_new_world」に変更するスクリプトを以下に示します。
set fname to "relaxation_of_the_new_world"
tell application "Finder"
make new file with properties {name:fname} at desktop
delay 1
set theTarget to file fname of desktop
set orgName to name of theTarget
set newName to "images_" & orgName
set the name of theTarget to newName
end tell
『複数ファイル』の場合は、それらのファイルをリストに納めて、順に処理をすることになると想像しています。
『複数ファイル』の指定には、AppleScript を使ったドロップレット(http://blog.goo.ne.jp/vallie/e/cbb0a94963076b13b65d5ac8da89be22)や、フォルダーアクションを使う方法(http://blog.goo.ne.jp/vallie/e/4bcd3fba45e4b4e0abb66d33cb225b0b)があります。
また、複数ファイルの接頭辞を付けてリネームする別のアプローチとして、Automator を使う方法があります。(http://tu-kazu.jp/etc1.php)
Automatorだと、素人にも敷居が低くてできそうですね!やってみま~す。