GASでウェブアプリケーション公開方法と実行・アクセスユーザー設定を解説

Google Apps Script(GAS)で作成したスクリプトは、ウェブアプリケーションとしてデプロイし、公開することができます。

GASウェブアプリケーションのデプロイ&公開方法と、実行ユーザーとアクセスできるユーザーの設定内容について解説します。

GASはウェブアプリケーションとして公開可能

Google Apps Script(GAS)はグーグルが提供するスクリプトサービスで、スプレッドシートを自動処理するプログラムが作成できます。

さらに、GASのスクリプトは、スプレッドシートから実行したり、スケジュール実行する以外にウェブアプリケーションとして公開が可能です。

Google Apps Script(GAS)でウェブアプリケーションとして公開したお肉AIの判定サービス「ニクテン」

ウェブアプリケーションとしてデプロイ&公開すると、URLが生成され、そのURLにアクセスするとGASのスクリプト処理が実行できます。

GASで簡単なWebサイト・Webアプリを作成したり、簡易的なAPIを作れ、とても便利です。

ウェブアプリケーションのデプロイ時の注意ポイント

Google Apps Script(GAS)のウェブアプリケーション機能はGAS利用でよく使われるのですが、デプロイ&公開する際に落とし穴があります。

  • GASのウェブアプリケーションとして公開したけど、上手く実行されない
  • 自分だとウェブアプリケーションが実行できるけど、他の人は実行できない

といった声を聞くことがよくあります。

これらはGASのウェブアプリケーションをデプロイする際の設定が誤っているからです。

スクリプトは問題ないけれど、実行できないケースの多くは、デプロイ時の実行ユーザーとアクセスユーザーの設定が誤っています。

実行ユーザーとアクセスユーザーの設定はとても重要です。

ウェブアプリケーションとしての動作要件やスクリプトの処理を鑑みて、適切な設定を行う必要があります。

GASウェブアプリを正しく公開するために

そこで、注意すべきGoogle Apps Scriptのウェブアプリケーション公開時の実行ユーザーとアクセスユーザーの設定を解説します。

まず、GASのスクリプトのウェブアプリケーション公開方法を紹介した後、設定した実行ユーザーとアクセスユーザーの設定項目を詳解します。

今回、以下のような実行すると、ブラウザメッセージを出すウェブアプリケーションを例に解説します。

ウェブアプリケーション公開方法

まず、GASスクリプトをウェブアプリケーションとして公開する方法を解説します。

1.GASでウェブアプリケーションとして公開するためには、IDE画面にある「デプロイ」ボタンから新しいデプロイを選択します。

Google Apps Script(GAS)のIDEエディタ画面で、ウェブアプリケーション公開するためにデプロイボタンをクリック

2.新しいデプロイの画面で、「種類の選択」の歯車アイコンをクリックし、ウェブアプリを選択します。

GASの新しいデプロイ画面で、種別としてウェブアプリを選択

3.任意のウェブアプリの説明文と実行ユーザーとアクセスユーザーを設定し、デプロイボタンをクリックします。

Google Apps Script(GAS)でウェブアプリケーション公開時に説明文と実行ユーザーとアクセスユーザーを設定しデプロイをクリック

以上の3StepでGASスクリプトのウェブアプリケーション公開は完了です。

Google Apps Script(GAS)のウェブアプリケーション公開方法と実行ユーザーとアクセスユーザーの設定解説

発行されたURLをブラウザでアクセスすると、スクリプトに書かれた処理が実行され、ブラウザメッセージが表示されます。

Google Apps Script(GAS)でウェブアプリケーションとしてデプロイするとURLからブラウザアクセス可能

今回は、GASプロジェクトファイルに用意した「index.html」のHTMLファイルを読み込んで表示するシンプルなウェブアプリケーションです。

実行ユーザーとアクセスユーザーの設定を解説

先ほどGoogle Apps Script(GAS)のウェブアプリケーションのデプロイ(公開)で設定した、実行ユーザーとアクセスユーザーの2種類の設定について、解説したいと思います。

実行ユーザーは自分とアクセスユーザーの2種類

GASのウェブアプリケーションの実行ユーザーの設定で選択可能なのは2種類です。

  1. 自分(スクリプト作成者)
  2. ウェブアプリケーションにアクセスしているユーザー

1つ目の自分というのは、GASスクリプトを作成したオーナーであるユーザーが実行します。

それに対し、2つ目はウェブアプリケーションにアクセスしたユーザーが実行ユーザーになります。

自分しかアクセスがない場合は①でよいですが、他のユーザーもアクセスする場合には①か②を選択する必要があります。

基本的な考え方は「アクセスユーザー=実行ユーザー」と設定するのが望ましいです。

他のユーザーによるアクセスによる実行が、スクリプトオーナーの実行になるのはなりすましなどのリスクもあるからです。

ただ、スクリプト内でオーナーしかアクセスできないファイルを読み込む場合は、②のアクセスユーザーで実行するとエラーになります。

そのため、「スクリプト作成者しか権限がないファイルにアクセスする場合は、自分を選択する」というルールが推奨されます。

アクセスユーザーの許可設定は3種類

GASウェブアプリケーションのアクセスユーザーの設定には3種類あります。

  1. 自分のみ
  2. Googleアカウントを持つ全員
  3. 全員(※英語だとanonymousが表示)

1つ目は分かりやすくスクリプトのオーナーのみ実行権限がある設定で、他のユーザーはURLを叩いても実行されません。

Google Apps Script(GAS)でデプロイしたウェブアプリケーションのアクセスユーザーの設定を自分のみとした場合、他のユーザーがアクセスするとエラー

このように「ページが見つかりません」という404エラーが表示されます。

2つ目のGoogleアカウントを持つ全員は、誰でも実行できるけど、Googleアカウントにログインしていることが条件です。

かつてのウェブアプリ公開設定時は「全員」というだけの表現でした。

Google Apps Script(GAS)のウェブアプリケーションのアクセスユーザー設定で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)」を選択する必要があります。

実行ユーザーを自分にし、アクセスユーザーを全員にすれば、ウェブアプリケーションの実行エラーになる確率は少ないです。

しかし、実行ユーザーとアクセスユーザーの権限設定は、必要最小限な権限にすることがセキュリティー的には求められます。

きちんとウェブアプリケーションの要件から、適切なユーザー権限を設定しましょう。