hartmannのゲームあれこれ

適当にやってるゲームのあれこれを偶に書きます

WoT CWE管理シート自動化の旅々 1.『Wargaming公式 WargamingAPI』


ts-hartmann.hatenablog.com

 この記事の続きの内容になっています。

 

本題のシート自動化に入る前に1.Wargaming API

 幼いころから私(Wargaming)は戦車を動かすのが好きでした。中でも一番好きだったのはG.W.Tiger(P)。空から弾を落とせると評判の自走砲です。

 

Wargaming「私もG.W.Tiger(P)みたいにいろんなところにスタンを入れたい!」

母「じゃあまずは戦場に出て、立派なArty乗りにならないとね。」

Wargaming「Arty乗りになったらスタンを入れさせてくれる?」

母「もちろんよ!ね?」

父「?ああ(困惑気味)。ゴホン。あくまでもダメ出せて勝利に貢献できるようになってからだぞ。」

Wargaming「本当ね?本当の本当ね?」

母「本当の本当よ。」

Wargaming「(顔を輝かせる)私Arty乗りになる!」

母「(ニッコリ)」

父「(困惑)」

Wargaming「(やる気を出す)」

 

 自分(Wargaming)で言うのもなんですが、私(Wargaming)は懸命に努力し毎日、毎日必死に勉強しました。そして、糞開発Wargaming社において2013年に開発され、情報取得がしやすいように作られたAPIがあります。そう、WargamingAPIです!※筆者はWargamingとは何の関係性もありません。ただの1プレイヤーです。

developers.wargaming.net

 

 情報の取得をしやすくなるようにAPIを作っているはずなのに、痒いところに手が届かない、そんなWargamingAPIですが、データ取得を自動化するにあたっては切り離せない存在です。とりあえずWoTのアカウントでログインしておきましょう。

 

 ログインしたら「MY APPLICATION」から自分のアプリケーションを作りましょう。名前は使用用途が分かれば適当でいいです。そして「Mobile」にチェック。これで準備は完了です。

 

 後は、「API REFERENCE」から欲しい情報を選択、各parameterをセットして「SEND REQUEST」をクリックすれば画像の右下のようにデータを表示させることが出来ます。なお、「Realm for the request」をAsiaにしておきましょう。あとAsiaの初期言語は何故かタイ語なのでlanguageをen(英語)にしておきましょう。※日本語非対応

f:id:TS_hartmann:20201210121526p:plain

GMの戦線一覧を表示させている画像。application_idは消させていただいています。

 

 

本題のシート自動化に入る前に2.スクレイピング

 シート自動化の話に入る前に覚えておいてほしいことがもうひとつあります。それはスクレイピングとそれをする時に書くコードです。

 

 それは「UrlFetchApp.fetch(URL)」です。URLの所にそれぞれのページのURLを書くと、そのページのデータを持ってきてくれるコードです。その取得したデータを整形して見やすいようにするところまでがスクレイピングなのですけども。

 

 ところで、このコードのURLの所に上のURL for requestのところにあるURLを入れたらどうなるのでしょうか?

 

 では、上のページのURL for requestに書いてあるURLをUrlFetchApp.fetch(URL)のURLに入れ、ログを出力するコードを書いてログを見てみましょう。

f:id:TS_hartmann:20201210125715p:plain

1枚目の画像に書いてあるURLをスクレイピングした結果。念の為コードも一緒に乗せておきます。

  なんと1枚目の画像において帰ってきたデータがそのまま記載されているではありませんか!

 

 はい、この内容をスプレッドシートに記載し、そこから切り取りたい情報だけを切り取って活用するのが今回のシート自動化における定義が表すこと1つ目、スクレイピングとなります。

 

 WargamingAPIからは他にもいろいろな情報を持ってくることが出来るのですが、基本やることは上に書いてあることです。

 

WargamingAPIに欲しい情報がなかったら?

 もしもWargamingAPIに欲しい情報がなかった場合、GMから直接データを持ってくることになります。その際は、上で書いたとおりにやっても何も情報を持ってくることが出来ません。なぜならGMのページはJava Scriptで動作しており、Java Scriptで書かれたデータはそのままだとスクレイピングすることが出来ません。その時は、PhantomJsCloudというものを使ってスクレイピングすることによって、Java Scriptで動作するページからもスクレイピングすることが出来るようになります。

www.phantomjscloud.com

  使い方とかは下のページを見てください。絶対私が説明するよりわかりやすいはずです。

tonari-it.com

 

  今回はここまでにしましょう。多分おそらくきっとmaybe次からは本題のシート自動化のお話に入っていきます。

 

最後に

 こうして私はシートの自動化に着手しました。風の吹くまま気の向くままあちこちコードを書いて色々な経験をし、2か月が過ぎました。

 はいっ、それでは問題です。殺伐とした戦場地帯を征く、ため息をこぼしてしまうほどの環境の変わらないゲームは一体何でしょう?そう、10周年のWoTです!!

  

 

ts-hartmann.hatenablog.com

 続き。