Google Apps Script を使っていると、普段の手動実行では正常に動くのに、トリガー実行だけエラーになるという理不尽な状況に遭遇することがあります。
今回、私の環境でも time-based トリガー実行時に以下のメールが届きました。

リクエストされたドキュメントにアクセスする権限がありません。
スクリプト自体は正しいのに動かず、どこを直せばいいのか分からない……そんなときに確認すべきポイントをまとめます。
なぜ手動実行はOKなのに、トリガーだけ権限エラーが出るのか
この現象は GAS のトリガーが「自分の権限」で動いてくれないことがある」 という仕様に起因します。
特に以下の状況で起きやすいです。
● スプレッドシート・ドキュメントのオーナーが自分ではない
閲覧・編集権限があっても、トリガー実行時には「必要な権限をもらえていない扱い」になるケースがあります。
● スクリプトとスプレッドシートのオーナーが違う
コンテナバインド(スプレッドシートに紐づいたGAS)の場合は特に発生しやすいです。
● トリガー作成者のアカウントと実行対象ファイルのアカウントが別
例:仕事用アカウントでファイルを開き、個人アカウントでトリガーを設定してしまっている。
● 再認証が必要なタイミングで放置していた
GAS は一定期間権限更新がないと、勝手に権限エラーになることがあります。
解決策:まずはこの順番で確認すれば直る
私の環境では以下の手順で問題なく復旧しました。
1. スクリプトエディタを開いて「権限を再承認」する
▶️ 実行 → ポップアップが出たら承認
これだけで直るケースが多いです。
2. 対象のスプレッドシートやドキュメントの「オーナー権限」を自分に変更
他者がオーナーになっているとトリガーが動作しない場合があります。
3. トリガーを一度削除して作り直す
特に time-based トリガーは、権限の紐づけが壊れていることがよくあります。
4. 実行しているアカウントが正しいか確認
Chrome のログインアカウントが違うと、GAS が誤った権限で処理されることがあります。
5. Google Workspace の管理者による制限
組織アカウントの場合、管理者が外部ファイルアクセスを制限している可能性も。
同じエラーを防ぐためのポイント
- スプレッドシートのオーナーは極力「スクリプトを管理する本人」に統一する
- トリガーは都度作り直すと安定
- 権限周りの変更後は必ず「手動実行 → トリガー実行」の順で確認する
- 可能ならば、Drive のフォルダ単位で編集権限を付ける(個別付与より安定)
まとめ
このエラーは、コードが悪いというより 「GAS の権限システムが複雑すぎる」 ことによって起きる典型例です。
特に time-based トリガーは権限の紐づけが壊れやすく、手動では動くのにトリガーで権限エラーになることが多くあります。
私の場合も、権限の再認証 → トリガー作り直し で問題なく復旧しました。
同じ状況で困っている方の参考になれば幸いです。
参考URL一覧(記事タイトル + 生URL)
- Google Apps Script トリガーの権限エラー解説
https://developers.google.com/apps-script/guides/triggers/installable - スクリプトの権限と承認について
https://developers.google.com/apps-script/concepts/scopes - Google Workspace 管理者向け:APIアクセス制限
https://support.google.com/a/answer/60757