GASを実行しようとした時、上記のようなダイアログが出て戸惑う方が結構いらっしゃるようです。当方でも、GASプロジェクトの納品時、避けて通れないのが初回実行時の承認作業です。作業自体はほぼ定型の内容となります。
本記事執筆にあたり、特に初心者向けの備忘録としても使えるよう、当方のクライアント様向けのテンプレートメッセージを元に大幅な補足を加え、再編集しました。
概要としては、当該プロジェクトが要求するアカウント情報へのアクセス権限を確認し、アカウント情報の利用を当該スクリプトに許可してよいか、というものです。
もっと簡単に言えば、「あなたに代わって実行しますがよろしいですか」という確認事項の承認です。
クラウドサービスならではの承認プロセスともいえます。
細かなことは無視して、ごくごくシンプルに換言するなら、前者が当該プロジェクトの関連ファイル、後者が関連ファイルへの編集権限という認識でほぼ問題ないと思います。
具体的にはGASを設置したスプレッドシート、そこから連携するDriveやカレンダーなどがアカウント情報、それらへの編集権限がアクセス権限となります。あくまでも細かなことは無視して理解しやすくした表現です。(←ここ重要)
主に個人用の無料のアカウント(gmail.com)と法人等の独自ドメイン運用前提の有料アカウント(Google Workspace)では若干手順が異なりますが、ダイアログや文言等はほぼ同じです。
アクセス権限確認のダイアログが表示されますので、権限を確認をクリックします。
通常は現在ログイン中のアカウントが1つだけ表示されると思います。マルチアカウントでChromeにログインしている場合など、複数のアカウントが表示されている場合、GASを実行しようとしているアカウントを選択します。
強気な警告メッセージには奥せず、左下の方にある詳細をクリックします。
警告メッセージの詳細表示になります。こちらも気にすることなく、左下のプロジェクト名(安全ではないページ)に移動をクリックします。
許可をクリックすると、実行途中のスクリプトが再開されます。
ただし、ここまでのプロセスで6分経過した場合や実行途中の処理が重い場合、タイムアウトとなることもあります。
基本的な流れは無料アカウントの場合と同様ですが、3. 4. が省略されます。
権限を確認をクリック↓
アカウントの選択のあと、Googleアカウントへのアクセスリクエストの許可へ飛びます↓
許可をクリックで実行途中のスクリプトが再開されます。
冒頭の画像のようなダイアログは、主にGASプロジェクトの初回実行時(デバッグを含む)に表示されます。例外的なものとしては、記録されたマクロやカスタム関数、onOpen
等のシンプルトリガー等のみのプロジェクトが挙げられます。
プロジェクトの更新や改修などでアクセス権限の確認が必要な処理を追加した場合、再度ダイアログが表示されます。一度承認したら以降も引き継がれる、ということではありませんので、その都度、承認作業が必要になります。
具体的には外部連携するアプリケーション(DriveApp
やMailApp
など)や拡張サービスを追加した場合などで、別ファイルへのアクセスやUrlFetch
等、外部サービスへの接続も含みます。
GASではプロジェクトごとにAuthorization Scopesが設定されていて、単にスコープと呼ばれることもあります。いわゆるプログラミングにおけるスコープとは意味合いが若干異なりますが、実行しようとしているスクリプトがアクセスできるアカウント情報の範囲という認識で良いと思います。
これに加え、スクリプトの処理内容(機能)によって、必要となるアカウント情報や利用範囲が異なります(Restricted scopes)。これらを説明しだすとかなりの長文になりますので、詳しくは以下をご確認ください。
Authorization Scopes | Apps Script | Google Developers
つまり、補足 1のように、スコープに変更があった場合に、都度、アクセス権の確認が発生するということですね。
上記承認プロセス中、2. のアカウントの選択後に表示され、その後の承認作業が実行できなくなるという現象が発生することがあるようです。
当方環境はもとより当方クライアント様への納品後の動作検証でもこのような現象は未確認です。
恐らく、こちらの解説で現象発生の大半の原因は説明できるかと思いますが、一部例外もあるようです。
現象を確認もしくは再現できれば当方でも検証してみたいので、明確な解決方法が見つかった際には折を見てまとめたいと思います。
誰かの役に立てば幸いです。