Google Sheets入力
WienerはExcelファイルの代わりに、Google Sheetsのスプレッドシートを表入力として使用できます。
Google Sheets入力は、現在販売中の Unity Asset版 1.0.0 で使用できます。Standalone版はComing Soonで、現行製品には含まれません。
全体フロー
Google Cloud
サービスアカウント作成 → JSONキー発行
↓
スプレッドシートをサービスアカウントのメールアドレスに共有(閲覧権限)
↓
settingsファイルに google_sheets 設定を追加
↓
YAMLの input_path にスプレッドシートのURLを指定
↓
コンバート実行(xlsx exportで自動取得)
設定手順
1. Google Cloud側の準備
以下の手順でGoogle Cloud側を設定します。
Unity Asset版で使用する場合は、Google Cloud側の準備後に Google Sheetsの設定 を参照してください。
サービスアカウントを作成する
Wiener専用のサービスアカウントを作成してください。Google Cloudプロジェクトのロールは付与せず、対象スプレッドシートへのアクセスだけを後述の共有設定で許可します。
認証JSONキーを作成する
サービスアカウントにJSONタイプのキーを作成してダウンロードします。このファイルが認証情報として使用されます。ファイル名は任意です。
重要
認証JSONキーはパスワードと同様の秘密情報です。Unityプロジェクトの Assets とGitリポジトリの外に保存し、ユーザー間でJSONファイル自体を共有しないでください。
キーを誤ってリポジトリへ追加した場合は、ファイルを削除するだけでは不十分です。Google Cloud側で直ちにキーを無効化・削除してください。詳しくはGoogleのベストプラクティスを参照してください。
スプレッドシートを共有する
入力だけを行う場合は、対象スプレッドシートをサービスアカウントのメールアドレス(xxx@xxx.iam.gserviceaccount.com 形式)に閲覧者として共有します。翻訳シートの作成・更新など書き込み機能を使う場合だけ、対象スプレッドシートに必要な編集権限を付与してください。
2. settingsファイルに google_sheets を追加
google_sheets:
credential_path: "<認証JSONの絶対パス>"
Unity Asset版では、Google Sheetsの設定に従い、Setting Editorからプロジェクト外のJSONを選択してください。
3. YAMLの input_path にスプレッドシートのURLを指定
スプレッドシートのURLをそのまま path に指定します。
header:
input_path:
- path: https://docs.google.com/spreadsheets/d/xxxxxxxx/edit#gid=0
sheet: SystemText
row: 5
URLの gid(シートID)は無視されます。sheet フィールドに指定したシート名が使用されます。
ローカルExcelとGoogle Sheetsを同一YAMLで混在させることもできます。
header:
input_path:
- path: item/item.xlsm
- path: https://docs.google.com/spreadsheets/d/xxxxxxxx/edit#gid=0
sheet: Item
row: 5
Exportサイズ制限とファイル分割
Google Sheets入力は、Google Drive APIのexport機能でスプレッドシートをxlsxとしてダウンロードしてから読み込みます。Drive APIのexport結果には 10MB制限 があるため、1つのスプレッドシートが大きくなりすぎると取得に失敗します。
大きい表は、用途やID範囲ごとに複数のスプレッドシートへ分割してください。分割したスプレッドシートは同じシート名にしておくと、1つのYAMLの input_path に複数URLを並べて読み込めます。
例として、Item シートを2つのスプレッドシートへ分割します。
| ItemMaster_A | ItemMaster_B | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
スプレッドシート名とURLを控えておきます。
| スプレッドシート名 | URL |
|---|---|
| ItemMaster_A | https://docs.google.com/spreadsheets/d/aaaaaaaa/edit#gid=0 |
| ItemMaster_B | https://docs.google.com/spreadsheets/d/bbbbbbbb/edit#gid=0 |
YAMLでは、同じ sheet: Item に対して2つのURLを指定します。
header:
input_path:
- path: https://docs.google.com/spreadsheets/d/aaaaaaaa/edit#gid=0
- path: https://docs.google.com/spreadsheets/d/bbbbbbbb/edit#gid=0
sheet: Item
row: 5
source_type: Normal
container_type: List
name: Item
output_path: item
この指定では、ItemMaster_A と ItemMaster_B の Item シートが順番に読み込まれ、1つのYAML定義として扱われます。
CSV出力
output_format に CSV を指定している場合、Google Sheets入力から読み込んだ通常データは次のパスに出力されます。
csv/GoogleSheets/{header.output_path}/{header.name}_{sheet}_{spreadsheetId}.csv
source_type: Enum のEnumBaseデータは通常データとは別扱いです。Google Sheets入力で読み込んだ場合も csv/EnumBase に出力され、csv/GoogleSheets 以下には出力されません。
チーム開発時の運用
複数人で開発する場合も、認証JSONをGit、チャット、メール、共有フォルダで配布しないでください。可能であれば用途・利用者ごとにサービスアカウントまたはキーを分け、各自のローカル環境で credential_path に指定します。
CI/CDではSecretから認証JSONキーを一時ファイルとして書き出し、そのパスを credential_path に指定する運用を推奨します。
注意事項
- Google Sheets入力は現在販売中のUnity Asset版で使用できます。Standalone版はComing Soonです
- ワイルドカードはGoogle Sheets入力では使用できません(ローカルExcel入力のみ対応)
- URLの
gidは無視されます。シート名は必ずsheetフィールドで指定してください - Google Sheets入力はスプレッドシートごとにxlsx exportをダウンロードし、ローカルで読み込みます
- xlsx exportには10MB制限があります。大きい表は複数のスプレッドシートへ分割してください
関連
- Unity Asset版 Setting Editor —
google_sheets設定の編集 - YAML Header定義 —
input_pathの指定方法 - ローカライズ — 多言語対応との組み合わせ
- Unity Asset版 Google Sheetsの設定 — 認証JSONを安全に保存・登録する手順