GASで「You do not have permission to call...」エラーが発生する原因と解決策
最終更新日: 2026-08-27
30秒でわかる原因と解決策
原因: スクリプトがアクセスしようとしているGoogleサービス(スプレッドシート、Gmail、外部APIなど)に対するユーザーの承認(権限)が不足しているか、コードの変更によって新しいスコープが必要になったにもかかわらず再承認されていないため。 解決策: エディタからスクリプトを手動で一度実行し、Googleのアクセス承認画面(「承認が必要です」ダイアログ)で権限を付与する。または、
appsscript.jsonに必要なスコープを明示的に記述する。
修正コード(Before / After)
❌ エラーが発生するコード
// 新たにGmailAppや外部APIの呼び出しを追加したが、
// 承認フローを通過していない、またはスコープが不足している状態
function sendAlertEmail() {
// このメソッドを使用するには "https://www.googleapis.com/auth/gmail.send" などのスコープが必要
GmailApp.sendEmail("test@example.com", "アラート", "エラーが発生しました。");
}
⭕ 修正後の推奨コード
/**
* @OnlyCurrentDoc
* 必要に応じて上記のアノテーションでスコープを制限するか、
* appsscript.json に正しいスコープを設定する。
*/
function sendAlertEmail() {
// 1. エディタ上でこの関数を選択し、「実行」ボタンを押す
// 2. 「承認が必要です」ポップアップが表示されるので、「権限を確認」を進めて許可する
GmailApp.sendEmail("test@example.com", "アラート", "エラーが発生しました。");
}
よくある発生パターンと解説
Google Apps Script (GAS) で Execution failed: You do not have permission to call... というエラーが発生する場合、主に以下のシチュエーションが考えられます。
1. コードに新しいサービスを追加した(未承認)
スプレッドシートを操作するだけのスクリプトに、後から MailApp や DriveApp などの新しいサービスを追加した場合、Googleはそのスクリプトに対して「本当にこの機能を使って良いか」の追加許可を求めています。この状態で実行すると権限エラーになります。
2. トリガー実行時に権限がない
手動実行では問題なく動くのに、時間主導型トリガー(Time-driven triggers)やイベントトリガーで実行した際にこのエラーが出る場合、トリガーを設定したユーザーと現在のスクリプトの認可状態にズレがあるか、トリガーに必要なスコープが不足しています。
3. 別アカウントや組織外での実行制限
Google Workspace(旧G Suite)環境下で、組織外のユーザーや制限された権限を持つアカウントがスクリプトを実行しようとした場合、管理者の承認が必要なスコープが含まれているとブロックされます。
よくある質問 (FAQ)
Q1: 「承認が必要です」というポップアップが出ません。どうすればいいですか?
A: 一度スクリプトエディタの画面に戻り、上部のメニューから該当の関数を選択して「実行」ボタン(再生アイコン)を明示的に押してください。これにより初回承認画面を強制的に呼び出すことができます。
Q2: 「このアプリは Google で確認されていません」という警告が出ます。進んでも大丈夫ですか?
A: ご自身で作成したスクリプト(または社内で共有されているもの)であれば問題ありません。警告画面の左下にある**「詳細」をクリックし、「(安全ではないページ)に移動」**のリンクを押すことで承認を進めることができます。
Q3: 組織内の他のユーザーにも使ってもらいたいのですが、全員が承認画面を出す必要がありますか?
A: はい。GASの仕様上、スクリプトを利用するユーザー(コンテナバインドスクリプトであればスプレッドシートを開いて実行する人)ごとに、初回のみ権限の承認(OAuthの同意画面の通過)が必須となります。