Androidのメモとか

ポキオの日記です。今日も遅延してない。

Google Apps Scriptを使ってビットコインの価格を定期的にLINEに通知する

今更Google Apps Scriptに感動。

無料でスクリプトを定期的に走らせる

developers.google.com

スクリプトを定期的に実行したいと考えた時に、あるマシン上でCronとかスケジューラを使ってスクリプトを走らせるのも良いが、そのマシンの電源は切れなくなるし、かと言って有料のサーバーを借りるほどでもない。そんなときはGoogle Apps Scriptが便利っぽい。とりあえず、今回は最近マイブームのビットコインを絡めたスクリプトを書いてみる。

bitflyer.jp

ビットコインに関しては、bitFlyerが公開APIを無料で提供しているので、これを使ってみることにする。

1時間おきにビットコインの取引価格をLINEに通知する

ビットコインの価格は最近乱高下しているので、そのトレンドをいち早く知るために、スクリプトを書いてみる。ブロック図はこんな感じ。 IFTTTのMaker Channelのおかげで、簡単にLINEに通知を送ることができます。

Google Apps Script IFTTT Bitcoin bitFlyer

Google Apps Scriptはブラウザ上でコーディング・デバッグ・実行できます。言語はJavaScriptベースのようです。

Google Apps Script IFTTT Bitcoin bitFlyer

こんな感じで実装。

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時台)に限定しています。で、このスクリプトを定期実行するために、トリガーを設定します。

Google Apps Script IFTTT Bitcoin bitFlyer

とりあえず1時間おきに実行してみます。

いざ実行

いい感じ。

Google Apps Script IFTTT Bitcoin bitFlyer

こんな感じでLINEに通知が届きます。 Google Apps ScriptはGoogleのサービス(Gmail、Calendarなど)との親和性もかなり高いので、その観点でもかなりポテンシャルが高いです。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。