ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity】SpreadSheetConvertTool 使い方-Editor編-

github.com

こちらで公開しているSpreadSheetConvertTool の使い方について解説します。

ツール概要

 このツールを簡潔に説明すると、Googleスプレッドシートにあるシートを自分のデータへと変換するコンバータの作成・管理・実行を簡単にしてくれるものです。

このツールで扱われるデータは以下のようになっています。

f:id:charcotte:20180906233100p:plain

 スプレッドシートConfigは、シートにアクセスするためのOAuth認証情報スプレッドシートIDを持ちます。また、各シートのコンバータを管理します。上の図のように1つのスプレッドシートに対して1つ作成するイメージです。
コンバータシート名対象となるセルの範囲、コンバート後のデータ保存先パスを持ちます。ユーザーは、データを変換するコンバータスクリプトを実装する必要があります。こちらで解説


 ユーザーがGUI上でGoogleSheetの認証情報を設定することで、スプレッドシートConfigを作成した際にツールが自動的にこの情報を適用します。スプレッドシートConfigはこの認証情報を利用してGoogleスプレッドシートにアクセスするためのRequestを発行します。各コンバータは、スプレッドシートConfigからこのRequestを受け取り、自身に設定されているシート名・セル範囲を用いて目的のデータを取得します。

ツールの画面構成は以下のようになっています。

f:id:charcotte:20180908232253p:plain

OAuth認証情報の設定

 GoogleスプレッドシートのデータにアクセスするためにはAccess Tokenが必要で、これを取得するためのOAuth認証情報が必要になります。事前に以下の情報を取得しておいてください。

  • ClientID
  • ClientSecret
  • RefreshToken

f:id:charcotte:20180908233959p:plain
OAuth Configタブを選択すると、各OAuth認証情報を入力するビューが開くので設定してください。Check Configボタンを押すことで、Access Tokenが正常に取得できたかどうかを確認することが可能です。

AccessTokenは、時間がたつと無効になってしまいますが、無効だった場合は自動的に新しいAccessTokenを発行するリクエストを送っているのでアクセスできなくなる心配はありません。ちなみにこういうやり方っていいのでしょうかね・・・?

スプレッドシートConfig

 シートにアクセスするためのOAuth認証情報スプレッドシートIDを持ちます。また、各シートのコンバータを管理します。

生成

f:id:charcotte:20180908234119p:plain
f:id:charcotte:20180908234125p:plain

編集

 スプレッドシートConfigの名前スプレッドシートのIDが編集できます。
OAuth認証情報は、作成時にデフォルトのものが適用されますが、これを利用したくない場合にはUse Defaut OAuth Configのチェックマークを外して別の情報を設定することが可能です。
ビュー上で右クリックメニューを開くとスプレッドシートConfigを削除することが可能です。

f:id:charcotte:20180908234300p:plain

コンバータConfig

 シート名対象となるセルの範囲、コンバート後のデータ保存先パスを持ちます。

スクリプト生成

サンプルのコンバータを用意してますが、自前のデータへとコンバートするためには、自分で実装する必要があります。以下の手順でコンバータスクリプトを作成します。
※コンバータスクリプトのクラス名は、コンバータ作成時にリストアップされるので、なんのデータへと変換するクラスなのかがわかる命名にしておきましょう

f:id:charcotte:20180908234119p:plain
f:id:charcotte:20180908235400p:plain

スクリプトの書き方・GoogleSheetAPIClass

 コンバータはGoogleSpreadSheetConverterを継承し、Convertメソッドを継承します。上記の手順でスクリプトを生成した際にはコンバータスクリプトのテンプレートが適用されているので、ユーザーはConvertメソッド内に処理を記述します。

f:id:charcotte:20180909001140p:plain
f:id:charcotte:20180909001134p:plain

SpreadSheetAPIClassは、シートから取得したセルのデータを持つクラスです。セルの行列数・データを持ちます。
Convertメソッドは、コンバータがコンバート実行時に呼ぶメソッドです。SpreadSheetAPIClassを引数に持つので、このデータを利用してコンバート処理を実装します。

Config生成

f:id:charcotte:20180909002001p:plain
 コンバータスクリプトを作成すると、上記のスクリプト選択のところに自動でリストアップされます。

編集

 主にシート名セル範囲コンバート後の保存先を設定します。操作不可になっている部分などは、左上のEditボタン(もしくは右クリック->Edit)で編集モードに切り替えることで編集可能です。コンバータビュー上で右クリック->Deleteでコンバータを削除します。
f:id:charcotte:20180909002108p:plain

原則、1つのシートに対して1つのコンバータを作成しますが、命名規則が存在する複数のシートであれば1つのコンバータで複数変換処理をかけることも可能です。(編集中)

コンバートを実行

 Convertボタンを押し、コンバートを実行します。実行時にエラーがなければ正常にコンバートが行われます。

まとめ

 OAuth認証情報取得・スクリプト作成はものすごーーーくめんどくさいんですが、この2つさえ終わらせたら後はどしどしデータを生成していくことが可能です。
 次回はゲーム内で万が一スプレッドシートのデータを利用したい場合の実装方法を説明します。