暗号資産(仮想通貨)価格・時間変化率をGoogle Apps Script(GAS)とLINE Notify APIとCoinMarketCap APIを用いてLINEに通知する

暗号資産の価格と時間変化率をLINEメッセージとして定期的に通知してくれるBOTを作りました。

参考にしたサイト
【Line Notify】1時間で作る仮想通貨の『高騰/下落』通知BOT【Google Apps Script】

概ね、このサイトのとおりですが、CoinMarketCap APIのpublic APIが止まってしまったようです。したがって、ユーザ登録の上、API Keyを取得する必要があるようです。その方法は、次のサイトを1章を参考にしました。

次にLINE Notify APIを利用するための設定を行います。こちらを参考にアクセストークンを取得します。

以下のコードのAPI Keyとアクセストークンの部分を上で取得したものと置き換えます。

function main() {
 //LINE Notifyのトークン
 const NOTIFY_LINE_TOKEN = '<取得したLINE Notifyのトークンをここにペースト>';
 //取得する通貨のシンボル
 const coinLabel = ['BTC','ETH','MONA'];
 //情報の取得
 const coinData = getCoinData();
 //メッセージの生成
 var NOTIFY_MESSAGE = '\n';
 for(var i = 0;i < coinData.length;i++){
   if(coinLabel.some(target => target === coinData[i].symbol)){
     console.log(i + ' : ' + coinData[i].symbol);
     NOTIFY_MESSAGE += '\n' + coinData[i].symbol + ':' + (parseInt(coinData[i].quote.JPY.price)).toLocaleString() 
                        + '\nChange(1h):' + checkStatus(coinData[i].quote.JPY.percent_change_1h)
                        + '\nChange(24h):' + checkStatus(coinData[i].quote.JPY.percent_change_24h)
                        + '\nChange(7d):' + checkStatus(coinData[i].quote.JPY.percent_change_7d)
                        + '\n------------------------------';
   } 
   Utilities.sleep(1);
 }
 //メッセージの送信
 sendMessage({
   lineToken : NOTIFY_LINE_TOKEN,
   message : NOTIFY_MESSAGE
 });  
}
//価格変動情報の整形
function checkStatus(props){
 var upDownStatus1h = '';
 if(props >= 0){
   upDownStatus1h += '+' + props.toFixed(3) + '%';
   console.log(upDownStatus1h);
 }else{
   upDownStatus1h += '−' + Math.abs(props).toFixed(3) + '%';
   console.log(upDownStatus1h);
 }
 return upDownStatus1h;
}
//メッセージの送信
function sendMessage(props) {
  UrlFetchApp.fetch('https://notify-api.line.me/api/notify', {
    'method'  : 'post',
    'payload' : 'message=' + props.message,
    'headers' : {'Authorization' : 'Bearer '+ props.lineToken}
  });
}
//CoinMarketCap APIの操作
function getCoinData() {
 const URL_API = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=100&convert=JPY&CMC_PRO_API_KEY=';
 const COINMARKETCAP_API = '<取得したCoinMarketCapのAPI Keyをここにペースト>';
 //情報の取得
 const result = UrlFetchApp
        .fetch(URL_API + COINMARKETCAP_API)
         .getContentText();
 return (JSON.parse(result)).data;
}

これをgasのスクリプトエディタに貼り付け、一番最初に紹介したサイトの3.を参考にトリガを設定します。実行される次のようなメッセージが届きます。

画像1

各暗号資産について、価格と時間変化率(1時間、24時間、7日間)を送信します。
コード中のcoinLabelの内部を書き換えることで通貨を変更することができます。ちなみに今回のコードではCoinMarketCapの上位100位の暗号資産の情報を取得し、その中から必要な銘柄を選択しています。知らせてほしい通貨の順位が100位以下の場合は、const URL_API = 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?limit=100&convert=JPY&CMC_PRO_API_KEY=';の太字部分の上限を変更して調整してみてください。


各APIのリファレンス
CoinMarketCap API Documentation

LINE Notify API Document




いいなと思ったら応援しよう!