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