🙄
サービスアカウントでGoogleスプレッドシートにアクセスする際の権限設定
Google スプレッドシートに対してサービスアカウントを使用する際、サービスアカウントのメールアドレスをスプレッドシートの共有設定に追加していないと、PermissionError(権限エラー)が発生する。
以下の手順に従って、スプレッドシート側でサービスアカウントに権限を付与しているかを確認し、必要に応じて設定を行う。
0. GCP上でGoogle Sheets APIを有効にする
- Google Cloud Console にアクセスする
- 画面上部の検索から「APIとライブラリ」を検索
- APIとサービスを検索から「Google Sheets API」を検索
- 「Google Sheets API」を有効化する
1. サービスアカウントのメールアドレスを確認
- Google Cloud Console にアクセスする
- 画面左のメニューから「IAMと管理 (IAM & Admin)」→「サービスアカウント (Service accounts)」へ進む
- 対象となるサービスアカウントを探し、そのメールアドレスをコピーする
my-service-account@my-project-123456.iam.gserviceaccount.com
2. スプレッドシートでサービスアカウントを共有設定に追加
- ブラウザで該当の Google スプレッドシート を開く
- 右上にある「共有」ボタンをクリック
- 「他のユーザーやグループと共有」というダイアログが表示されるので、先ほどコピーしたサービスアカウントのメールアドレスを入力
- 必要に応じて「権限」を選択する
- 編集が必要な場合は「編集者 (Editor)」
- 読み取りだけでよい場合は「閲覧者 (Viewer)」
- たとえば gspread などのライブラリを使ってセルに書き込みをする場合は、編集権限が必要
- 「完了」をクリックすると、シートの共有リストにそのサービスアカウントが追加される
Discussion