今更Google Apps Scriptに感動。
無料でスクリプトを定期的に走らせる
スクリプトを定期的に実行したいと考えた時に、あるマシン上でCronとかスケジューラを使ってスクリプトを走らせるのも良いが、そのマシンの電源は切れなくなるし、かと言って有料のサーバーを借りるほどでもない。そんなときはGoogle Apps Scriptが便利っぽい。とりあえず、今回は最近マイブームのビットコインを絡めたスクリプトを書いてみる。
ビットコインに関しては、bitFlyerが公開APIを無料で提供しているので、これを使ってみることにする。
1時間おきにビットコインの取引価格をLINEに通知する
ビットコインの価格は最近乱高下しているので、そのトレンドをいち早く知るために、スクリプトを書いてみる。ブロック図はこんな感じ。 IFTTTのMaker Channelのおかげで、簡単にLINEに通知を送ることができます。
Google Apps Scriptはブラウザ上でコーディング・デバッグ・実行できます。言語はJavaScriptベースのようです。
こんな感じで実装。
var iftttUrl = "https://maker.ifttt.com/trigger/xxx/with/key/yyy"; function myFunction() { if(!isNotifyAvailable()){ Logger.log("notify not available..."); return; } var message = "Bitcoin価格 : " + getCurrentPrice() + "JPY"; sendLineNotify(message); } function getCurrentPrice(){ var url = "https://api.bitflyer.jp/v1/ticker"; var response = UrlFetchApp.fetch(url); var responseJson = JSON.parse(response.getContentText()); return responseJson.ltp; } function sendLineNotify(message){ var payload = { "value1" : message }; var options = { "method" : "post", "payload" : payload }; UrlFetchApp.fetch(iftttUrl, options); } function isNotifyAvailable(){ var date = new Date(); var utcHours = date.getUTCHours(); var ret = 21.0 <= utcHours || utcHours <= 14.0; return ret; }
HTTPのGETやPOSTはXMLHttpRequest
ではなく、UrlFetchApp
を使います。また、夜中に通知されるのは嫌なので、UTCで21時台〜14時台(JSTで6時台〜23時台)に限定しています。で、このスクリプトを定期実行するために、トリガーを設定します。
とりあえず1時間おきに実行してみます。
いざ実行
いい感じ。
こんな感じでLINEに通知が届きます。 Google Apps ScriptはGoogleのサービス(Gmail、Calendarなど)との親和性もかなり高いので、その観点でもかなりポテンシャルが高いです。