ストVメモ:ランクマのデータ取得するのを人に使える(?)ようにした。

2022/07/16 追記 ミスってたので途中のライブラリIDを変更した。

今更、かつ、わりとめんどい。ほんとに動くかは人には使ってもらってないのでどうか。多分、下記手順を間違えずに全部やればきちんと動くと思う。書いてるとおりにやってどうしても無理だったらコメントに書いてもらえれば間違いがあった場合はメンテする。が、よくわからなくて動かないんだったらこんなよくわからない人が作ったものを使うのはあきらめよう。

シャドルー研究所からCookie情報の取得

chrome にて F12 を押下してデベロッパーツールを開いた状態で、シャドルー研究所にログインしてユーザーページを開く。

デベロッパーツールの Network タブを開き、Name 列から Fighter's ID が記載されている行を選択する。

右側に開いたエリアの Headers タブを選択し、Reauest Headers の cookie から fuel_csrf_token と scirid に設定されている値を取得する。

データ保持用と設定保持用のスプレッドシートを作成

Google Spreadsheet にてデータ保持用と設定保持用のため「新しいスプレッドシート」を二つ作成。(Google アカウントを持っていない場合は作成しよう)
ただ、データと設定分離しないのであれば一つだけでもよい。どちらでもお好きに。以下は二つ作成したとして説明を進める。
ファイル名の指定は特にないのでわかりやすいように。

作成したスプレッドシートの2ファイルとも URL から以下の spreadsheet_id にあたる部分を取得する。

https://docs.google.com/spreadsheets/d/spreadsheet_id/edit

設定用に使用するスプレッドシートを開きシート名を config に変更する。

config シートに以下の内容を記載する。一列目に項目名、二列目に設定値。タイプミスしないこと。

  • fighters_id:データ取得対象の Fighter's ID

  • data_sheet_id:データ保持用スプレッドシートの spreadsheet_id

  • scirid:Cookie 情報の scirid に割り振られている値

  • fuel_csrf_token:Cookie 情報の fuel_csrf_token に割り振られている値

  • timezone:Asia/Tokyo(日本時間での指定)

Apps Scriptの設定

以下のページから「新しいプロジェクト」を作成

「ライブラリ」の右にある+を選択して、開いたダイアログのライブラリIDに以下を入力して検索

1KFjuPGQP7BdmVzslEYrN5le7PoimOKrupNW9Rv7_xXAl_5AYPVML3CXe

検索して見つかったライブラリ(SfnScraping)を追加。

右側のコードエディタの内容を以下に差し替え。

function myFunction() {
  SfnScraping.main("設定保持用スプレッドシートのspreadsheet_id", true);
}

実行すると権限の承認を求められるので、Google アカウントへのアクセスを許可する。

うまく最後まで動作すれば、データ保持用のシートに対象 Fighter's ID のシートが作成され、取得データが追加される。(わざと実行後処理を遅延させるようにしてるので1分程度かかります)

あとは、ランクマでの対戦終了ごとに実行させれば新規データが追加されていく。データはグラフにするなり、統計取るなり、好きにどうぞ。

参考までに自分は取得データからこんな風にグラフと勝率を確認できるようにした。(下記に記載したトリガー設定してるので対戦ごとに自動更新される)

グラフ

トリガーでの実行

毎回手で実行するというのも少し面倒なので、手間を省きたい人はトリガーを作成してもいい。事前に権限付与のため上の手順で、一度手動でのデータ取得まで済ませておくこと。

トリガー実行の場合は、実行コードの第2引数を false にすること。(手動実行の場合、第2引数を true にすることで、実行を遅延させているが、トリガー実行時は不要のため)

以下のかたち。

function myFunction() {
  SfnScraping.main("設定保持用スプレッドシートのspreadsheet_id", false);
}

Apps Script のページの左側にある時計のアイコンをクリックし、「トリガーを追加」からトリガーを以下の設定で追加すると、1分ごとにデータが自動で取得される。

トリガー設定

ただし、通常の Google アカウントの場合トリガーから GAS を一日で実行できる総時間数が90分のため、一回につき10秒程度処理にかかるので放置してると9時間程度で制限にかかると思われる。(未確認)
そのため、ゲームをやる前にトリガーを仕掛けて、終わった時に削除するのを推奨。

Google Workspace アカウントの場合は、総時間数の制限が6時間なので、一日中動かしていても上限に達することはない。(確認済み)

おわりに

そんなとこです。cookie 未取得エラーとか出たらシャドルー研究所あたりの手順をやり直して、設定ファイルを修正してください。

おわり。

この記事が気に入ったらサポートをしてみませんか?