GASを使ってOverWatchの勝率の統計グラフの作成
このごろOverWatchというゲームにはまってるみゅみゅです。
(しかも下手くそ、そして地雷)
OverWatchのプレイヤー情報を取り出せるAPIがunofficialとして公開されています。
Unofficial OverWatch API
(公式のプレイヤー情報検索をJSON形式に整形してくれるラッパーみたいな感じで動作するっぽいです)
こちらを利用してGASを使って毎日の勝率をスプレッドシートに記録して動的なグラフを生成していきたいと思います。
Google スプレッドシートの準備
名前はなんでも良いのですが例として【OverWatchDATA】という名前でスプレッドシートを作成しました。
スクリプトの作成
ツールからスクリプトエディタを起動して、スクリプトを作成します。
スクリプトの中身はこんな感じです。
var user = "みゅみゅ";
var id = "1453";
var baseurl = "https://api.lootbox.eu/pc/kr/";
var profile = "/profile";
function myFunction() {
var geturl = baseurl + user+"-"+id+profile;
var data = getContent(geturl);
if(data != "")
{
var today = new Date();
var datasheet = var datasheet = SpreadsheetApp.getActiveSheet();
var lastrow = datasheet.getLastRow() + 1;
datasheet.getRange(lastrow,1).setValue(today);
datasheet.getRange(lastrow,2).setValue(data["data"]["games"].win_percentage);
}
}
function getContent(url) {
var response = UrlFetchApp.fetch(url);
var dataAll = JSON.parse(response.getContentText());
if(dataAll["statusCode"] == "404")
{
return "";
}else{
return dataAll;
}
}
- userのところにOverWatchのユーザ名
- idのところにBattle.netのIDを入れてください
作成後、確認の為【myFunction】を一度実行してみます。
問題がなければスプレッドシートに1行日付と勝率が記載されます。
グラフを作成
スプレッドシート内にグラフを作成しますが、1行だけだとスプレッドシート側でどんなグラフを作成したらよいかわからないので、何行か適当な日時を数字を入れます。
範囲はA1からB1000ぐらい(1日1行計算で3年ぐらいもつから良いでしょう)
グラフの種類は折れ線グラフを選択
カスタマイズは適当にタイトル等を記載します
そして挿入ボタンを押します。
グラフを一般公開する
ファイルメニューから【ウェブに公開】を選択します。
公開するものを先ほど作成したグラフ、データ形式を画像として公開します。
公開するとURLが表示されますので、それがグラフ情報となります。
こんな感じ(データが一個しかないときはグラフは変です)
1日1回実行設定と後始末
作成したスクリプトを1日1回実行すれば日々の勝率のグラフが自動生成されます。
1日1回の実行はトリガーで設定します。
スクリプトエディタから【リソース】→【現在のプレジェクトのトリガー】を選択
【トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。】と言われるのでクリックします。
こんな感じで、日付が変わったタイミングでスクリプトを1日1回実行します。
スプレッドシートを一度綺麗な状態にして(グラフ作成の為適当なデータを入れたから)一度作成したスクリプトを実行します。
※明日の朝からトリガーで実行なので今日の分のデータを収集
終わりに
ちょっとしたcron系の処理やデータ収集はさくっと作れるGASは便利かなぁっと。。。
そして集計を行って自分の下手さ加減を改めて認識しました。
こんな私でも一緒に遊んでくれる方募集です ><