iwathiの/var/log

生活と仕事の効率化が趣味。

ビットコインの価格をグラフ化→LINEに定期通知する【GAS】

f:id:iwathi3:20171216170101j:plain

ビットコインの価格が気になる

最近、連日世間を騒がせているビットコイン

あの時、買っとけばよかった。

と、思っている人も多いのではないでしょうか。

またビットコイン価格は気になるけど、サラリーマンだから常に見てはいられないし、かといって見ていないと暴落するかも・・・という方も多いかと思います。

そんな方向けにビットコインの価格チャートをLINEに通知する方法を紹介します。

作れるようになるもの

f:id:iwathi3:20171216084616j:plain

こんな感じで現在の価格とチャートがLINE通知されます。

ここではビットコインリップルの両方を表示しているので2つのグラフが表示されます。

好きな通貨の情報を登録すれば通知を変えられるようになっているので自由に変更して使ってください。

使用するサービス

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

やっていること

今回はGoogle Apps Scripts(以下、GAS)を使用して実装しています。

下記の流れでビットコインの価格をグラフ化しLINEに定期通知をします。

  1. CoincheckAPIからビットコイン価格を取得
  2. 取得した価格をGoogle Spreadsheetへ保管
  3. Google Spreadsheetでグラフを作成
  4. 作成したグラフをLINEへ送信

今回は上記を実行するGASのコードを参考として掲載しています

またGoogleSpreadSheetも共有しているのでそちらをコピーして使用することで簡単にグラフ化することもできます。

実装上で必要な情報

今回、GASのコードは掲載していますが、皆さんに埋めていただく必要のある情報が2つあります。

下記でその調べ方を述べていくので、その部分を調べて最後に掲載しているコードに反映させてください。

LINE NotifyAPIの設定とトークンを調べる

この記事を参考にしていただければセットアップまでは完璧だと思います。

[超簡単]LINE notify を使ってみる - Qiita

この記事に出てくるトークン」をコピーしておいてください。

このトークンを使うことでLINEに通知することができます。

Google SpreadSheetの準備

下記の様なグラフを表示するGoogle SpreadSheetを用意していきます。

f:id:iwathi3:20171216105403j:plain

Google SpreadSheetの設置

下記にテンプレートとなるファイルを共有しています。

自分のGoogleドライブ等にコピーして使用してください

(コピー等ができない場合教えてください。。。)

docs.google.com

今回の仕様上、2行目が必要なので初期値は0になっていたりするのでそのへんは適宜直してください。

SpreadSheetのIDを調べる

続いて、Templateから自分のGoogleドライブへコピーしたGoogleSpreadSheetのIDを調べます。


コピーしたGoogle SpreadSheetを開くとSpreadSheetのページへ移動します。

その移動した先のURLにSpreadSheetを特定するためのIDが含まれています。

下記の様なURLになっているはずなので【ここの文字列】をコピーしてください。

https://docs.google.com/spreadsheets/d/【ここの文字列】/edit#gid=0

Google Apps Script 上へコードを設置

上記で取得した情報を下記のコードへ反映させ、ご自身のGoogle Apps Scriptへ置いてください。

設置の仕方はこちらなどを参照ください。

ASCII.jp:Google Apps Scriptのキホンと使い方 (1/4)|Web制作をちょっと便利にするGoogle Apps Script入門

gist1447c2e315e17efc7010ce3f46a5cc5f

一度実行をしてみて、Spreadsheetに情報が追記されることを確認してみてください。

確認ができれば、あとは定期的にこのコードを実行させるだけです。

GASの関数の説明

コーディングがくそなのはご愛嬌でお願いします。

アドバイスを随時募集しております。

getCCAPI(type, sendFlag)

CoincheckAPIから価格情報を取得してSpreadSheetに格納する関数を呼んでいます。

ここで設定しているtypeがcoincheckAPIに問い合わせる内容になるのでAPIに該当するものを設定してください

またSpreadsheetに記録する際、このtypeと同じ名前のシートに記録しますのでシート名も合わせてください。

sendFlagはLINE通知をするかどうかのフラグです。

  • 0の場合: Spreadsheetへのデータ格納のみ行う
  • 1の場合: Spreadsheetへのデータ格納 + LINE通知も行う

sendGraphImage(type, ss)

こちらを参考にさせていただきました。

マネージャーでもできる!Google スプレッドシートのグラフを Slack に定期ポストする手軽な方法 - クラウドワークス エンジニアブログ

引数としてグラフを出力するためのシート名とSpreadsheetのオブジェクトを渡してください。

シート内に複数のグラフをもし作った際には

var chartImage = charts[0].getBlob().getAs('image/png').setName("graph.png");

charts[0]を変更する必要がある、、、ハズです。

setCC2SS(SS, type, value, sendFlag)

Spreadsheetに書き込む関数です。

if(sendFlag == 1){

if(((lastCount + 1) % SENDCOUNTS) == 0){

sendGraphImage(type,SS);

}

}

SENDCOUNTSどのくらいの間隔でLINE通知をするのかの閾値です。

GASを5分間間隔で動かすとすれば、SENDCOUNTS=12にすることで1時間に一回のLINE通知を受け取ることができます。

適宜設定してください。

Coincheck APIのリンク

下記のAPIはパブリックなAPIとなっていて、認証等が必要が無く、アクセスするとレートだけを表示するという簡素な作りなので迷うことは全くありません。

https://coincheck.com/api/rate/btc_jpy

詳しくはこちらのAPIドキュメントを参照ください。

取引所APIドキュメント | Coincheck(コインチェック)

Google Apps Script関連の参考リンク

今回参考にさせていただいたリンクはこちらです。

Google Apps ScriptからLINE NotifyでLINEにメッセージを送る - Qiita

マネージャーでもできる!Google スプレッドシートのグラフを Slack に定期ポストする手軽な方法 - クラウドワークス エンジニアブログ

Google Apps Scriptでグラフを作成する方法の最初の一歩

グラフ|Google Apps Script入門

取引所APIドキュメント | Coincheck(コインチェック)

Google Apps Script 実践メモ(スプレッドシート) - Qiita

まとめ

  • ビットコインの価格をチャート付きで定期的に確認できるようになる
  • GAS経由でSpreadsheetのグラフをLINE通知できるようになる

最後に

 最近のビットコインの価格変動はバブルだと言われ続けています。

 バブルなのかバブルでないのかは将来しか分かりませんが、どちらにしてもそこに至るまでにどういった値動きをしていたのかをリアルタイムで感じるのは今しかできません。

 どの様な結果になるにせよ、歴史の1ページになることは間違いないので、リアルタイムで観察してみてはどうでしょうか。



ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin