エラーの内容
You need permission to access this spreadsheet. Request access, or switch to an account with access.
リンクをクリックしたら壁に当たってしまった。ファイルのオーナーがアクセスを制限している、間違ったGoogleアカウントでサインインしている、または共有設定が変更されたかのいずれかです。3つの原因が考えられます — 正しいものを特定しましょう。
根本原因
- スプレッドシートが非公開になっており、特定のユーザーのみアクセス可能。
- 招待されたアカウントとは異なるGoogleアカウントでサインインしている。
- 共有リンクの有効期限が切れたか、取り消された。
- ファイルのオーナーが誤って共有設定を「リンクを知っている全員」ではなく「制限付き」に設定している。
- 外部ユーザーをデフォルトでブロックするGoogle Workspace組織のファイルにアクセスしようとしている。
修正1 — 使用中のGoogleアカウントを確認する
これが最も一般的な原因です。リンクが仕事用メール(you@company.com)に送られたにもかかわらず、個人のGmail(you@gmail.com)でログインしている場合です。
- ブラウザ右上のプロフィール画像をクリックする。
- どのアカウントがアクティブか確認する。
- 間違ったアカウントの場合はアカウントを切り替えるをクリックして正しいアカウントを選択する。
- スプレッドシートのURLを再読み込みする。
複数のGoogleアカウントで混乱している場合は、シークレットウィンドウでリンクを開きましょう。正しいアカウントで新たにサインインすれば、アカウントの混乱が解消されます。
修正2 — オーナーにアクセスを申請する
正しいアカウントでもブロックされている場合は、エラーページのアクセスを申請をクリックしてください。Googleがファイルのオーナーにメールを送信します。承認されると通知が届き、シートが通常通り開けるようになります。
ファイルのオーナーが分かる場合は、自動申請を省略して直接メッセージを送りましょう。自分のメールアドレスを明示的に共有するよう依頼すると、より早く解決できます。
修正3 — オーナー:共有設定を更新する
誰かがスプレッドシートを開けない場合、共有設定が「制限付き」になっている可能性が高いです。修正方法は以下の通りです:
- スプレッドシートを開く。
- 右上の青いボタン共有をクリックする。
- 一般的なアクセスの下で、ドロップダウンを制限付きからリンクを知っている全員に変更する。
- 必要に応じて権限を閲覧者、コメント可、または編集者に設定する。
- リンクをコピーをクリックし、完了をクリックする。
新しいリンクを再送信してください。アクセスが更新されると古いリンクも引き続き機能します — URLは変わりません。
修正4 — 特定のメールアドレスと共有する
機密データの場合、「リンクを知っている全員」は範囲が広すぎます。個別のメールアドレスで共有することで、アクセスできる人を完全に制御できます:
- スプレッドシートを開く → 共有をクリックする。
- ユーザーやグループを追加フィールドに相手のメールアドレスを入力する。
- 権限レベルを選択する(閲覧者 / コメント可 / 編集者)。
- メール通知を送りたくない場合はユーザーに通知するのチェックを外す。そうでなければチェックを入れたままにする。
- 送信をクリックする。
相手はすぐにアクセスできるようになります — 相手側での許可申請は不要です。
修正5 — Google Workspaceドメインの制限
企業によってはGoogle Workspaceをロックダウンして、ファイルが組織外に出られないようにしている場合があります。有効なリンクがあっても外部ユーザーはブロックされます。
ファイルのオーナーまたは管理者として:
- スプレッドシートを開く → 共有をクリックする。
- 一般的なアクセスに**[会社名]のリンクを知っている全員**と表示されていないか確認する。
- 外部アクセスを許可するためにリンクを知っている全員に変更する。
そのオプションがグレーアウトしている場合は、Google Workspace管理者が組織レベルで外部共有を無効にしています。管理者に連絡するか、代わりにファイルを共有してもらう必要があります。
修正6 — Google Sheets APIを使用している場合はサービスアカウントの権限を確認する
スクリプト、自動化、ボットなどのコードでこのエラーが発生する場合、通常はサービスアカウントにスプレッドシートへのアクセスが付与されていないことが原因です。
# まずサービスアカウントのメールアドレスを取得する
gcloud iam service-accounts list
# Google Drive APIを使ってサービスアカウントのメールアドレスとシートを共有する
curl -X POST \
'https://www.googleapis.com/drive/v3/files/{FILE_ID}/permissions' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"role": "reader",
"type": "user",
"emailAddress": "your-service-account@project-id.iam.gserviceaccount.com"
}'
またはgspreadを使ったPythonの場合:
import gspread
from google.oauth2.service_account import Credentials
scopes = [
'https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive'
]
creds = Credentials.from_service_account_file('service_account.json', scopes=scopes)
client = gspread.authorize(creds)
# サービスアカウントにアクセス権がない場合はエラーが発生する
sheet = client.open_by_key('YOUR_SPREADSHEET_ID')
修正方法:通常のユーザーを追加するのと同じ方法で、スプレッドシートをサービスアカウントのメールアドレス(例:sheets-reader@my-project.iam.gserviceaccount.com)と共有してください。
修正の確認
- 新しいタブでスプレッドシートのURLを開く — 権限のプロンプトなしに読み込まれるはずです。
- 他の人と共有した場合は、会話を終える前に相手が開けることを確認してもらいましょう。
- APIアクセスの場合はスクリプトを再実行する。403エラーが出なければ正常に動作しています。
- 共有ダイアログで、ユーザーがアクセスできるユーザーの下に表示されているはずです。
予防策
- 機密ファイルには明示的なメール共有を使用する — 機密データに「リンクを知っている全員」を使わないようにしましょう。
- アカウントごとに別々のブラウザプロフィールを使う。 ChromeではGoogleアカウントごとにプロフィールを作成できます。これにより間違ったアカウントの問題が完全に解消されます。
- 定期的に共有設定を確認する。 Google Driveで共有アイテムをチェックして、アクセス可能なファイルを確認しましょう。Workspace管理者は管理コンソールで組織全体の監査ができます。
- Apps Scriptや自動化を使用している場合は、READMEにサービスアカウントのメールアドレスを記載しておきましょう。次に新しいシートを作成するとき、どのアカウントにアクセス権が必要かすぐに分かります。

