🙄

サービスアカウントでGoogleスプレッドシートにアクセスする際の権限設定

2025/01/31に公開

Google スプレッドシートに対してサービスアカウントを使用する際、サービスアカウントのメールアドレスをスプレッドシートの共有設定に追加していないと、PermissionError(権限エラー)が発生する。
以下の手順に従って、スプレッドシート側でサービスアカウントに権限を付与しているかを確認し、必要に応じて設定を行う。

0. GCP上でGoogle Sheets APIを有効にする

  1. Google Cloud Console にアクセスする
  2. 画面上部の検索から「APIとライブラリ」を検索
  3. APIとサービスを検索から「Google Sheets API」を検索
  4. 「Google Sheets API」を有効化する

1. サービスアカウントのメールアドレスを確認

  1. Google Cloud Console にアクセスする
  2. 画面左のメニューから「IAMと管理 (IAM & Admin)」→「サービスアカウント (Service accounts)」へ進む
  3. 対象となるサービスアカウントを探し、そのメールアドレスをコピーする
my-service-account@my-project-123456.iam.gserviceaccount.com

2. スプレッドシートでサービスアカウントを共有設定に追加

  1. ブラウザで該当の Google スプレッドシート を開く
  2. 右上にある「共有」ボタンをクリック
  3. 「他のユーザーやグループと共有」というダイアログが表示されるので、先ほどコピーしたサービスアカウントのメールアドレスを入力
  4. 必要に応じて「権限」を選択する
    • 編集が必要な場合は「編集者 (Editor)」
    • 読み取りだけでよい場合は「閲覧者 (Viewer)」
    • たとえば gspread などのライブラリを使ってセルに書き込みをする場合は、編集権限が必要
  5. 「完了」をクリックすると、シートの共有リストにそのサービスアカウントが追加される

Discussion