ウマ娘プリティーダービー チーム競技場スコア集計ツール

ウマ娘プリティーダービーチーム競技場スコア集計ツール コラム

ウマ娘プリティーダービーのチーム競技場のスコアをスクリーンショットから集計するツール(Googleスプレッドシート)をつくりました。スクリーンショットをOCRにかけてスプレッドシートに集計します。

Deku
Deku

次に育てるウマ娘を検討するのにお役立ていただければ幸いです

ダウンロード

どなたでも無料でご利用いただけます。加工も問題ありません。ただし、著作権は放棄しておりませんので、加工の有無に関わらず再配布は禁止とさせていただきます。

(2021/06/01更新)

Update your browser to use Google Drive, Docs, Sheets, Sites, Slides, and Forms - Google Drive Help
You need a supported web browser to use: Google Drive Docs Sheets Sites Slides Forms Learn what a browser is, which

実際のデータを入れたサンプルもご用意しました。

コピーしてご利用ください

読み取り専用で公開していますので、自分の Google Drive にコピーしてご利用ください。

上記スプレッドシートをブラウザで開き、メニューの[ファイル] > [コピーを作成]からコピーいただけます。

ツールのスクリーンショット

OCRで取り込んだデータ

ピボットテーブルとグラフ

グラフ

使い方

チームレースの[スコア情報]のスクリーンショットを撮ります。スコア情報は、下のレース終了画面の[スコア情報]ボタンで表示できます。

1レース分のスコアは1画面に収まらないので、スクロールの一番上と一番下の2回に分けて撮ります。

スクリーンショット1枚目の例

スクリーンショット2枚目の例

スクリーンショットは、DMM版ならウマドなどのツールを使うと簡単に取得できます。

ウィンドウサイズ自動復元ツール「ウマド」 - bironist - BOOTH
ウマド 任意のアプリケーションのウィンドウサイズを自動で変更するツール。 画面が縦長の時、横長の時それぞれに対象サイズを指定でき、該当のウィンドウが自動で縦横比が変わるタイプのものでも対応可能です。

Googleドライブ上に新しいフォルダを作成し、先程コピーしたスプレッドシートとスクリーンショットを新しく作成したフォルダに入れます。ツールはこのフォルダ内に対して操作を行うので、関係ないファイルを一緒に入れない方が無難です。

スクリーンショットのファイルをコピーしたスプレッドシートと同じフォルダにコピー

スプレッドシートを開き、[データ]シートの上部の[データ追加]ボタンをクリックします。処理が終わるまで少し時間がかかります。

初めて実行する場合

初めて実行する場合、スクリプトを実行するための承認が必要です。

下のような画面が表示されますので、[続行]をクリックします。

スクリプトを実行するアカウントを選択します。普通は今ログインしているアカウントを選択することになります。

「このアプリはGoogleで確認されていません」と表示されますので、[詳細を表示]をクリックし、[myOcr(安全でないページ)に移動]をクリックします。

[許可]ボタンをクリックします。スクリプトでは、画像ファイルを探し、画像をOCRにかけ、OCR結果はGoogleドキュメントとして生成されるので用が済んだらゴミ箱へ移動し、整形したデータをスプレッドシートに書き込む、という処理をしています。

改めて[データ追加]ボタンをクリックすると、今度は処理が実行されます。

処理が終わったら[グラフ更新]ボタンをクリックします。

結果

[グラフ]シートにピボットテーブルとグラフが生成されます。

新しくデータを追加する

一度グラフを作成した後にデータを追加する方法についてご説明します。

新しく撮ったスクリーンショットをGoogleドライブに追加し、[データ追加]→[グラフ更新]で完了です。ピボットテーブルやグラフに新しいデータが追加されます。

古いデータを削除する

古いレースのデータを削除する方法についてご説明します。

[データ]シートのすべてのデータを削除したい場合、[データクリア]→[グラフクリア]の順にクリックします。[データ]シートのデータと、[グラフ]シートのピボットテーブルとグラフが削除されます。

記録したレースが増えてきて古いレースの分だけ削除したい場合、[データ]シートの不要なレースの行を削除します。[グラフ]シートのピボットテーブルが更新されグラフが更新されます。

[データ]シートにデータを取り込み済みの画像ファイルは削除して問題ありません。ただし、改めて画像ファイルからデータを取り込み直したい場合、画像ファイルは削除せずに残しておく必要があります。

便利な使い方

グラフで1人のウマ娘を強調表示する

グラフの凡例(ウマ娘名)のエリアをダブルクリックした後、強調したいウマ娘の名前をクリックすると、クリックしたウマ娘の折れ線グラフが強調表示されます。

スコアの平均をみる

[グラフ]シートのピボットテーブル①をクリックして、右に表示される[レース番号]の[総計を表示]②にチェックを入れると、ピボットに列③が追加され、ウマ娘ごとの平均スコアが出ます。

上記②の[総計を表示]部分を拡大した図です。

ウマ娘をフィルタする

[グラフ]シートのピボットテーブルをクリックすると、右にピボットテーブルエディタが表示されますその中の[フィルタ]から表示するウマ娘を切り替えられます。表示を切り替えるにはプリダウンをクリックします。

チェックされているのは現在表示されているウマ娘です。チェックを外すとグラフに表示されなくなります。チェックをつけ直すとまたグラフに表示されるようになります。

制約

iPhoneではレースごとに画像をアップロードする必要があります

複数レース分のスクリーンショットを同時にアップロードすると、ファイル更新日がアップロードした日時で更新され、同一レースの判別ができなくなります。Androidは持っていないため試せていませんが、同じことが発生する可能性が高いです。

一度に読み込むファイル数が多いと処理が中断します

一度の読み込むファイル数は、20個(10レース分)をめどに、あまり多くし過ぎないようにしてください。Google Apps Scriptの制約で、処理時間が6分を超えると処理が中断されてしまい、データが取り込めません。

読み込んだデータが間違っている場合があります

OCRの精度は完璧ではありません。データが間違っている場合は手作業で[データ]シートのデータを修正し、[グラフ更新]をクリックしてください。

機能の説明

[データ追加]は、まだ読み取りを行っていない画像だけ読み取りを行います。データが追加された場合、ピボットテーブルの集計範囲を再設定する必要があるため、データ追加後はグラフ更新も実施してください。画像からデータを取り込み直したい場合、[データ]シートの取り込み直したい画像ファイルの行をすべて削除し、[データ追加]ボタンをクリックしてください。

[グラフ更新]は、[データ]シートからピボットテーブルを作成し、ピボットテーブルからグラフを作成します。すでにグラフがある場合、データの更新だけ行い、グラフの書式は維持されます。データ追加とボタン別にしている理由は、OCRの取り込みミスを手動で修正できるようにするためです。

[データ削除]は[データ]シートにある画像から取り込んだデータをすべて削除します。

[グラフ削除]はピボットテーブルとグラフを削除します。

データが正しく認識されなかった場合の修正例

OCRによる読み取りは完璧ではありませんので、読み取りに失敗する場合があります。下の図は読み取りに失敗したことが疑われる例です。

①はウマ娘の名前が読み取れていません。②、③はスコアが低すぎます。

ウマ娘の名前が読み取れていない

調査

まず、グラフの上にあるピボットテーブルを確認します。間違って読み取られた「チャンピオン」は、レース番号「16」だけにいることがわかります。逆にウオッカは前後のレースにいるのに「16」だけにいません。そのため、ウオッカの読み取りに失敗していそうであることがわかります。

修正

[データ]シートに移動し、レース番号「16」の「チャンピオン」を「ウオッカ」に書き換えます。これでピボットテーブルが自動的に更新され、グラフも自動的に更新されます。

スコアがおかしい

調査

[データ]シートへ移動し、スコア列のフィルタ(▼マーク)をクリックし、[A→Zで並び替え]をクリックすると、スコアの小さい順に並び替わります。

元となった画像のファイル名がわかるので、実際にファイルを開いて確認します。

グラスワンダーは4,023ではなく、34,023でした。

ダイワスカーレットは・・・・・・合ってました。。。

修正

[データ]シートのスコアを「4,023」から「34,023」に書き換えます。これでピボットテーブルが自動的に更新され、グラフも自動的に更新されます。

以上で修正完了です。修正したグラフは以下です。

コメント

  1. くまきち より:

    とても便利なツールを公開していただきありがとうございます。
    データ追加をしようとすると、「TypeError: Cannot read property ‘1’ of null」というエラーコードが出てきてデータが追加できないのですが、何か考え得る原因と解決策はありますか?

    • Deku より:

      くまきちさん、
      ご連絡ありがとうございます。また、返信が遅くなり大変申し訳ございません。
      エラーコードから問題を特定することが難しかったため、詳細な情報をいただきたく、
      後ほどメールにてご連絡させていただきます。

タイトルとURLをコピーしました