Googleシートの設定 — サービスアカウントと JSON キー
SheetForge は、Googleシートを二つのモードで読み取ります。
- ExportUrl は認証情報を必要としません: シートをリンクで共有し、各タブの
#gid=の値を登録してインポートするだけです。読み取り専用です。 - SheetsApi は Google の サービスアカウント として認証し、それ以外のすべて(プライベートなシート、書き戻し(反映)、Push)を解放します。
このページでは、SheetsApi のセットアップを最初から最後まで説明します——サービスアカウントの作成、その JSON キーのダウンロード、スプレッドシートをそのアカウントと共有すること、そして SheetForge にそのキーの場所を指定することです。Google Cloud の事前知識は前提としません。すべての手順は Web ブラウザーの中で完結し、費用は一切かかりません。
全体の流れ:
- Google Cloud プロジェクトを作成する。
- その中で Google Sheets API を有効化する。
- サービスアカウントを作成する。
- そのアカウントの JSON キーをダウンロードする。
- そのアカウントのメールアドレスとスプレッドシートを共有する。
- SheetForge にそのキーの場所を指定する。
1. Google Cloud プロジェクトを作成する
- console.cloud.google.com を開き、Google アカウントでサインインしてください——スプレッドシートの所有者と同じアカウントである必要はありません。個人アカウントであれば常に機能します。会社の Google Workspace 組織の中には、ポリシーによってサービスアカウントキーのダウンロードを無効化しているところもあり、その場合は手順4が組織ポリシーのエラーで失敗します(下記「うまくいかない場合」を参照)。初回アクセス時は、利用規約(Terms of Service)のプロンプトに同意するとコンソールに到達します。
- 上部のバーで project picker(Google Cloud のロゴの隣にあるドロップダウン)をクリックし、続いて New project をクリックしてください。
- 任意の名前(例:
sheetforge-sheets)を入力し、Create をクリックしてください。organization と location はデフォルトのままにしておきます。 - 「project created」の通知が表示されたら、picker で新しいプロジェクトを選択してください。これ以降の手順はすべて、このプロジェクトの 内側で 行われるため、選択されたままになっていることを確認してください。
プロジェクトは、API 設定を入れるための単なる入れ物です。作成は無料であり、このガイドで行う Sheets API の利用にも費用はかかりません。
2. Google Sheets API を有効化する
- 左側のメニュー(☰)を開き、APIs & Services ▸ Library に進んでください。
- Google Sheets API を検索し、その結果を開いてください。
- Enable をクリックしてください。ボタンが Manage と表示されている場合、API はすでに有効化されています——何もする必要はありません。
3. サービスアカウントを作成する
サービスアカウントとは、独自のメールアドレスを持つ、機械のためのアイデンティティです。SheetForge は、このアイデンティティとしてサインインします——あなた個人の Google パスワードが関わることは一切ありません。
- APIs & Services ▸ Credentials に進んでください。
- + Create credentials ▸ Service account をクリックしてください。
- 名前(例:
sheetforge-reader)を入力してください。account ID は自動的に入力されます。Create and continue をクリックしてください。 - 「Grant this service account access to project」と「Grant users access」の手順は 任意です——両方とも読み飛ばして Done をクリックしてください。スプレッドシートへのアクセス権は、プロジェクトのロールではなく、シートを共有すること(手順5)によって与えられます。
- コンソールが OAuth consent screen の設定を提案してきた場合は、無視して構いません——サービスアカウントはそれを使用しません。
4. JSON キーをダウンロードする
- Credentials ページに戻り、たった今作成したサービスアカウントをクリックしてください(「Service accounts」の下にあります)。
- Keys タブを開いてください。
- Add key ▸ Create new key をクリックし、JSON を選んで Create をクリックしてください。
- ブラウザーが
sheetforge-sheets-1a2b3c.jsonのような名前のファイルをダウンロードします。これが唯一のコピーです——Google は再ダウンロード用にこれを保持しません。紛失した場合は、Keys タブでそのキーを削除し、新しいものを作成してください。
このファイルは、パスワードと同じように扱ってください:
- Unity プロジェクトとリポジトリの 外側 のどこかに移動してください。例:
C:/keys/sheetforge.json。 - 絶対に
Assets/の下には置かないでください——そこにあるものはすべてプロジェクトと一緒にコミットされ、迷い込んだ参照(あるいはResources/StreamingAssetsフォルダー)が、それをビルドの中に持ち込んでしまう可能性があります。 - もしキーが漏洩した場合は、Keys タブでそれを削除し(これにより即座に失効します)、新しいものを作成してください。
5. スプレッドシートをサービスアカウントと共有する
キーだけでは何の権限も得られません。サービスアカウントが読み取れるのは、明示的に共有されたシートだけです——人間の共同編集者とまったく同じです。
- ダウンロードした JSON ファイルを任意のテキストエディターで開き、
client_emailの値をコピーしてください。これはsheetforge-reader@sheetforge-sheets.iam.gserviceaccount.comのような形をしています。 - Google Sheets でスプレッドシートを開き、Share をクリックしてください。
- そのアドレスを貼り付け、ロールを選んでください:
- インポートだけなら Viewer で十分です。
- 書き戻し——オーサリングの反映と Push——には Editor が必要です。
- 「Notify people」をオフにして(このアドレスに受信箱はありません)、確定してください。
- Google が組織外との共有について警告してきた場合は、確定してください——サービスアカウントはどの組織にも属していません。
この手順を飛ばすことが、最もよくあるセットアップのミスです——それをしないと、キーがどれほど正しくても、すべてのリクエストが権限エラーで失敗します。
6. SheetForge にそのキーの場所を指定する
- インポート設定アセットで、source を GoogleSheet に、access mode を SheetsApi に設定してください。
- シートの URL に含まれる長い ID を
spreadsheetIdに入力してください:https://docs.google.com/spreadsheets/d/<this part>/edit。 - キーファイルの場所を、次の二つのどちらかの方法で SheetForge に伝えてください:
- 推奨 — 環境変数。
SHEETFORGE_SHEETS_KEYに、JSON ファイルの絶対パスを設定してください。各開発者が自分自身のものを設定するため、パスがリポジトリに入り込むことは一切なく、設定フィールドよりも優先されます。- Windows の場合: ターミナルで
setx SHEETFORGE_SHEETS_KEY "C:\keys\sheetforge.json"を実行し、Unity と Unity Hub の両方を再起動してください(すでに実行中のプロセスは、古い環境をそのまま保持します)。 - macOS/Linux の場合: シェルのプロファイルでエクスポートし、そのシェルから Unity を起動するか、macOS では
launchctl setenvを使ってください。
- Windows の場合: ターミナルで
- または — 設定フィールド。
serviceAccountKeyPathにパスを入力し、リポジトリの 外側 を指すようにしてください。
- 推奨 — 環境変数。
- Tools ▸ SheetForge ▸ Data Studio で ↓ Pull from source を押してください。レポートが成功していれば、プロジェクト・API・アカウント・共有・キーという連鎖全体が機能していることを意味します。
うまくいかない場合
- 権限エラー(
PERMISSION_DENIED/ 403): シートがclient_emailアドレスと共有されていません(手順5)——ID は実在するスプレッドシートを指していますが、サービスアカウントからはそれが見えません。 Requested entity was not found(404):spreadsheetIdが間違っています——シートの URL の/d/と/editの間の部分を、そのまま正確にコピーしてください。- 「Service account key creation is disabled」/ 手順4での組織ポリシーエラー: あなたの Google Workspace 組織が
iam.disableServiceAccountKeyCreationを強制しています。管理者にこのプロジェクトでのキー作成を許可してもらうか、個人の Google アカウントの下でプロジェクトを作成してください——スプレッドシートは、シートの所有者が誰であっても、そのプロジェクトのサービスアカウントと共有できます。 - 「Google Sheets API has not been used in project … or it is disabled」: キーを発行したプロジェクトで API が有効化されていません(手順2)——別のプロジェクトではなく、そのプロジェクトで有効化してください。有効化した直後の API が反映されるまで、数分かかることがあります。
- Key file not found: パスにタイプミスがあるか、環境変数が存在するようになる前に Unity が起動されています——変数を設定してから、Unity と Unity Hub を再起動してください。
- キーが漏洩した、または紛失した場合: サービスアカウントの Keys タブでそれを削除し、新しい JSON キーを作成して、ファイルを置き換えてください。それ以外は何も変わりません——メールアドレスとシートの共有は有効なままです。
関連ページ
- ソース・エクスポート・プッシュ — 二つの Google モードの比較、gid マップ、Push の安全機構
- スタートガイド — 設定アセットと最初のインポート
- FAQ とトラブルシューティング — Google 関連の回答