暗号資産(仮想通貨)価格・時間変化率を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時間、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