GASでBitcoinのレートを取得してスプレッドシートに貯める話


はじめに

流行りに乗っかってみようと、少し前に仮想通貨を始めたんですが、APIで売買できるということに最近気づきまして、せっかくエンジニアやってるわけなので、自前のシステムで売買をしてやろうと思った次第です。
そこで、まずはデータだけでも貯めておこうと思ったんですが、詳細が固まってない状態でサーバ立てて、プログラム作って、というのも色々無駄な気がして、手軽さを重視した作りにしました。

※APIは一般公開されているものなので口座作らなくても使えます
※Coincheck以外でもAPIを公開してるところはあるので、Coincheckである必要はないです

ポイント

Googleのアカウントさえあればできるので色々と敷居が低いのでお手軽です。

処理概要

GASを使って以下の処理を毎分実行する
・CoincheckのAPIをたたいて、Bitcoinのレートを取得する
・取得したデータをスプレッドシートに書き出す

APIの詳細についてはこちら
https://coincheck.com/ja/documents/exchange/api

手順

  1. スプレッドシートを作成し、「rate」というシートを作る
  2. 「ツール」の「スクリプトエディタ」をクリック
  3. コードを記述
  4. 三角のボタンを押して実行してみる
  5. 時計?のボタンで1分毎に実行するように設定する

以上です。
あとはこのデータを使ってどういうトレードのロジックを作るかですね。
そのへんもまた記事にする、かもしれないです。

こんな感じ

ソース

test.gs
function myFunction() { 
  // coincheckの価格取得API  
  var url = 'https://coincheck.com/api/exchange/orders/rate?order_type=buy&pair=btc_jpy&amount=1';

  var option = {
    'method' : 'get',
    'muteHttpExceptions' : true,
  };

  // リクエスト投げる
  var response = UrlFetchApp.fetch(url,option); 
  var json = response.getContentText();
  var data = JSON.parse(json);

  // こういうのが返ってくる
  // {"success":true,"rate":"2103746.04407","amount":"1.0","price":"2103746.04407146"}

  if (data.success) {
    // スプレッドシートの「rate」シートの最終行を取得
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("rate");   
    var last = sheet.getLastRow();

    // 現在時刻とレートを書き出す
    sheet.getRange(last + 1, 2).setValue(new Date());
    sheet.getRange(last + 1, 3).setValue(data.rate);    

  // 失敗した場合
  } else {
    Logger.log(data);
  }
}