GASでウェブアプリケーション公開方法と実行・アクセスユーザー設定を解説
Google Apps Script(GAS)で作成したスクリプトは、ウェブアプリケーションとしてデプロイし、公開することができます。
GASウェブアプリケーションのデプロイ&公開方法と、実行ユーザーとアクセスできるユーザーの設定内容について解説します。
GASはウェブアプリケーションとして公開可能
Google Apps Script(GAS)はグーグルが提供するスクリプトサービスで、スプレッドシートを自動処理するプログラムが作成できます。
さらに、GASのスクリプトは、スプレッドシートから実行したり、スケジュール実行する以外にウェブアプリケーションとして公開が可能です。
ウェブアプリケーションとしてデプロイ&公開すると、URLが生成され、そのURLにアクセスするとGASのスクリプト処理が実行できます。
GASで簡単なWebサイト・Webアプリを作成したり、簡易的なAPIを作れ、とても便利です。
ウェブアプリケーションのデプロイ時の注意ポイント
Google Apps Script(GAS)のウェブアプリケーション機能はGAS利用でよく使われるのですが、デプロイ&公開する際に落とし穴があります。
- GASのウェブアプリケーションとして公開したけど、上手く実行されない
- 自分だとウェブアプリケーションが実行できるけど、他の人は実行できない
といった声を聞くことがよくあります。
これらはGASのウェブアプリケーションをデプロイする際の設定が誤っているからです。
スクリプトは問題ないけれど、実行できないケースの多くは、デプロイ時の実行ユーザーとアクセスユーザーの設定が誤っています。
実行ユーザーとアクセスユーザーの設定はとても重要です。
ウェブアプリケーションとしての動作要件やスクリプトの処理を鑑みて、適切な設定を行う必要があります。
GASウェブアプリを正しく公開するために
そこで、注意すべきGoogle Apps Scriptのウェブアプリケーション公開時の実行ユーザーとアクセスユーザーの設定を解説します。
まず、GASのスクリプトのウェブアプリケーション公開方法を紹介した後、設定した実行ユーザーとアクセスユーザーの設定項目を詳解します。
今回、以下のような実行すると、ブラウザメッセージを出すウェブアプリケーションを例に解説します。
ウェブアプリケーション公開方法
まず、GASスクリプトをウェブアプリケーションとして公開する方法を解説します。
1.GASでウェブアプリケーションとして公開するためには、IDE画面にある「デプロイ」ボタンから新しいデプロイを選択します。
2.新しいデプロイの画面で、「種類の選択」の歯車アイコンをクリックし、ウェブアプリを選択します。
3.任意のウェブアプリの説明文と実行ユーザーとアクセスユーザーを設定し、デプロイボタンをクリックします。
以上の3StepでGASスクリプトのウェブアプリケーション公開は完了です。
発行されたURLをブラウザでアクセスすると、スクリプトに書かれた処理が実行され、ブラウザメッセージが表示されます。
今回は、GASプロジェクトファイルに用意した「index.html」のHTMLファイルを読み込んで表示するシンプルなウェブアプリケーションです。
実行ユーザーとアクセスユーザーの設定を解説
先ほどGoogle Apps Script(GAS)のウェブアプリケーションのデプロイ(公開)で設定した、実行ユーザーとアクセスユーザーの2種類の設定について、解説したいと思います。
実行ユーザーは自分とアクセスユーザーの2種類
GASのウェブアプリケーションの実行ユーザーの設定で選択可能なのは2種類です。
- 自分(スクリプト作成者)
- ウェブアプリケーションにアクセスしているユーザー
1つ目の自分というのは、GASスクリプトを作成したオーナーであるユーザーが実行します。
それに対し、2つ目はウェブアプリケーションにアクセスしたユーザーが実行ユーザーになります。
自分しかアクセスがない場合は①でよいですが、他のユーザーもアクセスする場合には①か②を選択する必要があります。
基本的な考え方は「アクセスユーザー=実行ユーザー」と設定するのが望ましいです。
他のユーザーによるアクセスによる実行が、スクリプトオーナーの実行になるのはなりすましなどのリスクもあるからです。
ただ、スクリプト内でオーナーしかアクセスできないファイルを読み込む場合は、②のアクセスユーザーで実行するとエラーになります。
そのため、「スクリプト作成者しか権限がないファイルにアクセスする場合は、自分を選択する」というルールが推奨されます。
アクセスユーザーの許可設定は3種類
GASウェブアプリケーションのアクセスユーザーの設定には3種類あります。
- 自分のみ
- Googleアカウントを持つ全員
- 全員(※英語だとanonymousが表示)
1つ目は分かりやすくスクリプトのオーナーのみ実行権限がある設定で、他のユーザーはURLを叩いても実行されません。
このように「ページが見つかりません」という404エラーが表示されます。
2つ目のGoogleアカウントを持つ全員は、誰でも実行できるけど、Googleアカウントにログインしていることが条件です。
かつてのウェブアプリ公開設定時は「全員」というだけの表現でした。
上図のように、ゲストモードでGASウェブアプリケーションのURLにアクセスすると、Googleアカウントへのログイン画面が表示されます。
Googleアカウントにログインすると、リダイレクトされ、ウェブアプリケーションが表示できます。
3つ目の条件はあらゆる全員という条件で、Googleアカウントは不要です。
※旧エディタや英語版では「anyone, even anonymous」と表示されることがあります。
主にウェブアプリケーションでハマりやすいポイントは②と③の使い分けです。
②の場合は、Googleアカウントのログインが条件なので、ChromeなどでGoogleアカウントにログインしたユーザーが手動で実行する想定のケースで設定します。
それに対し、③はGoogleアカウントのログインが不要なので、Webhookのリクエスト先やサーバーからのリクエストなどでシステム的に実行するケースで設定します。
よくあるのは、システム連携でGASのウェブアプリケーション設定時に②で設定してしまい、実行できないケースです。
そのため、GASのウェブアプリケーションでWebhookなどのシステム連携する際は「全員」を選択しましょう。
まとめ・終わりに
今回、Google Apps Script(GAS)のウェブアプリケーションのデプロイ方法と、デプロイ時の実行ユーザーとアクセスユーザーの権限設定を紹介しました。
ウェブアプリケーションの実行ではユーザーの権限設定が誤っていることでエラーしがちです。
特にWebhookなどのシステム間連携で実行する場合、実行ユーザーは「自分」、アクセスユーザーは「全員(anyone, even anonymous)」を選択する必要があります。
実行ユーザーを自分にし、アクセスユーザーを全員にすれば、ウェブアプリケーションの実行エラーになる確率は少ないです。
しかし、実行ユーザーとアクセスユーザーの権限設定は、必要最小限な権限にすることがセキュリティー的には求められます。
きちんとウェブアプリケーションの要件から、適切なユーザー権限を設定しましょう。
ディスカッション
コメント一覧
まだ、コメントがありません