Google Sheets入力
WienerはExcelファイルの代わりに、Google Sheetsのスプレッドシートを表入力として使用できます。
Google Sheets入力は Standalone版(Wiener.exe など)と Unity Asset版の両方で使用できます。
全体フロー
Google Cloud
サービスアカウント作成 → JSONキー発行
↓
スプレッドシートをサービスアカウントのメールアドレスに共有(閲覧権限)
↓
settingsファイルに google_sheets 設定を追加
↓
YAMLの input_path にスプレッドシートのURLを指定
↓
コンバート実行(xlsx exportで自動取得)
設定手順
1. Google Cloud側の準備
以下の手順でGoogle Cloud側を設定します。
Unity Asset版で使用する場合は、Google Cloud側の準備後に Google Sheetsの設定 を参照してください。
サービスアカウントを作成する
Wiener用のサービスアカウントを作成してください。ロールは不要です(スプレッドシートへのアクセスは後述の共有設定で行います)。
認証JSONキーを作成する
サービスアカウントにJSONタイプのキーを作成してダウンロードします。このファイルが認証情報として使用されます。 ファイル名は「wiener-service-account.json」としてください。
重要
認証JSONキーはユーザー毎に作成して規定の場所に保存してください。
またこのファイルは秘密情報です。リポジトリへコミットしないように .gitignore に必ず記載してください。
スプレッドシートを共有する
入力対象のスプレッドシートを、サービスアカウントのメールアドレス(xxx@xxx.iam.gserviceaccount.com 形式)に閲覧者として共有します。
2. settingsファイルに google_sheets を追加
google_sheets:
credential_path: "../secrets/wiener-service-account.json"
各フィールドの詳細は設定ファイルの google_sheets セクションを参照してください。
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キーを発行し、各自のローカル環境で credential_path に指定します。
認証JSONキーはGitで共有せず、必要に応じてパスワード管理ツールやCI/CDのSecret機能で管理してください。
CI/CDではSecretから認証JSONキーを一時ファイルとして書き出し、そのパスを credential_path に指定する運用を推奨します。
注意事項
- Google Sheets入力は Standalone版(
Wiener.exeなど)と Unity Asset版の両方で使用可能 - ワイルドカードはGoogle Sheets入力では使用できません(ローカルExcel入力のみ対応)
- URLの
gidは無視されます。シート名は必ずsheetフィールドで指定してください - Google Sheets入力はスプレッドシートごとにxlsx exportをダウンロードし、ローカルで読み込みます
- xlsx exportには10MB制限があります。大きい表は複数のスプレッドシートへ分割してください
関連
- 設定ファイル —
google_sheets設定の詳細 - YAML Header定義 —
input_pathの指定方法 - ローカライズ — 多言語対応との組み合わせ
- Unity Asset版 Google Sheetsの設定 — Unity Asset版で認証JSONキーを配置・登録する手順