今回は、GASでApps Script APIなどの追加機能を使いたい際に、GCP経由でそれを実現する方法を説明します。
そもそもなぜGASの機能追加にGCPプロジェクトが必要なのか
今回はGASの機能を拡張するためにGCPを使うわけですが、
実はGASには、もう初めからGCPプロジェクトが勝手についています。
GASのスクリプトには、
1つのスクリプトごとに「デフォルトプロジェクト」というGCPプロジェクトが自動で割り当てられているんです。
この便利な仕組みにより、以下のようなことがデフォルトで実装可能になっています。
- スプレッドシートの操作
- Gmail送信
- 基本的なAPI呼び出し
これらは、デフォルトGCPプロジェクトを介して自動的に実行されているため、
ユーザーが特別な設定をしなくても利用可能だったのです。
しかし、デフォルトプロジェクトには以下の制限があります。
- 利用できるAPIは基本的なものに限られている
- ユーザー側でAPIの追加や設定変更はできない
そのため、より高度な機能を実現したい場合は、ユーザーが主導で別のGCPプロジェクトを作ってGASに割り当てる必要があります。
このユーザーが作成するGCPプロジェクトのことは、「標準プロジェクト」 と呼ばれます。
ちなみに標準プロジェクトが必要になるのは以下のようなケース。
- Apps Script APIなどのGCPサービス
- OAuth認証の設定やサービスアカウントの利用
- APIの利用制限や権限管理を設定
今回はこのようなケースの方々のために、標準プロジェクトを作ってGASに紐づけるまでを行います。
【具体的な手順】- GCPプロジェクトの作成とGAS紐づけ
では具体的に手順を説明していきます。
以下のような流れで設定をしていきます。
- GCPで新規プロジェクトの作成
- 追加したい機能(今回はGAS API)を有効にする
- OAuthの構成を作成する
- GASとGCPと紐づけ
- appsscript.jsonを設定
なんのこっちゃだと思いますが、大丈夫です。
GCPアカウントの作成も含め、一から説明していきます。
準備:GASプロジェクトとGoogleアカウントの確認
まず、大前提としてGoogleアカウントとGASのプロジェクトを用意してください。
私は今回、こちらのGASプロジェクトで作業していきます。
そしたら、GASの左側のメニューから⚙アイコンの「プロジェクトの設定」にいきます。

ここで下にスクロールしていくと、「Google Cloud Platform(GCP)プロジェクト」という欄があります。
ここがGCPとGASの紐づけ設定をするところです。
最初に説明した通り、初期は「デフォルト」となっており、操作不可のデフォルトGCPプロジェクトが割り当てられていることが分かります。
まずここで「プロジェクトを変更」をクリックします。

するとプロジェクトの変更メニューが出てきます。
当然、まだGCPプロジェクトを作ってないので、ここに設定できるものはありません。
では青くなっている文字の「こちら」を押して、GCPに移動しましょう。

GCPで新規プロジェクトの作成
GCPに来ました。
なんか同意画面が出るので、「利用規約」のとこだけチェック入れて「同意して続行」をクリック。

GCPのダッシュボードに入れました。
まず上の「プロジェクトの選択」というところをクリック。

右上の「新しいプロジェクト」をクリック
※私はGoogleアカウントを『ビジネスアカウント』で作っているので、ちょっと見た目が違う可能性もあります。

新しいGCPプロジェクトを作っていきましょう。
プロジェクト名は何でもいいですが、以下のポイントを掴むとよいです。
- できれば英語で
- ハイフン「-」で文字を繋ぐ
- GCPプロジェクトであることを明記
名前に基づいてIDも発行されるので、英語にしておくと分かりやすいです。
※名前とIDを別々に設定もできます。
また、GCPのプロジェクトと他のサービスやAPIを紐づけるときに分かりやすくなるので、IDにGCPプロジェクトという文字を入れとくのがおススメです。
私はこんな感じにしました。
プロジェクト名:GCP-Project-GAS-WebApp
プロジェクトID:gcp-project-gas-webapp ※自動発行にお任せ
ま、ぶっちゃけなんだっていいです。
「作成」を押します。

そうするとGCPプロジェクトが作成され、画面が切り替わります。

追加したい機能(今回はGAS API)を有効にする
では続いて、今回GCPを導入して追加したい機能を、GCP側で有効にします。
私の場合はApps Script API(GAS API)というものです。
もし入れる追加機能が私と違う場合は、各々の必要なものをインストール・有効化してください。
やり方として簡単なのは、上の検索窓に入れたい機能名を入れて検索することです。

検索バーで検索して一番上にでてきたものを押すと、一発でそのAPIの画面に飛ぶことができます。
私の場合は「Apps Script API」と検索しました。

そして詳細画面で「有効にする」を選ぶだけです。
これで、このAPIがこのGCPプロジェクトで使えるようになります。

OAuthの構成(認証)を作成する
続いて、「OAuthの構成」というものを作成します。
これは何かというと、「誰がこのGCPプロジェクトにアクセスできるか」という設定になります。
ちなみにまずは「テスト環境」として公開し、「自分自身のみ」を利用ユーザーとして登録していきます。
では、左上のハンバーガーメニュー「☰」を押して左のメニューを出します。

メニューから「APIとサービス」→「OAuth 同意画面」を選びます。

OAuth 同意画面とは、このGCPを介するサービスを利用する時にユーザーに表示される「このアプリがあなたのメールアドレスにアクセスしようとしています。許可しますか?」みたいな画面のことです。
これを作ります。
「開始」をクリックし、必要項目を入力します。



- アプリ名:GASアプリや呼び出し元のアプリなどのサービス名を記載
※複数のアプリをまとめて管理する場合には、どのアプリでも通用する汎用的な名前にした方が良い - ユーザーサポートメール:お問い合わせメールアドレス
※自分のGoogleアカウント以外のアドレスにしたければ、別途IAM設定から追加登録が必要 - 対象:「外部」を選択
※Google WorkSpaceを利用していて、アプリを社内共有のためだけに使う場合だけ「内部」を選ぶ - 連絡先情報:ここはユーザーに見えないので普段使いのアドレスを入れる
ここは個人で使うならなんでもいいんですけど、サービスとしてリリースするならちょっと慎重にならないとかもですね。
私は適当にそれっぽい感じで項目を埋めて、
最後はポリシーに同意をして終了します。

アクセス可能なユーザーのところに自分を追加
同意画面ができたら、次は同じ画面内で「対象」をクリックします。

今公開ステータスを見ると「テスト中」になってますね。
ここの「アプリを公開」を押すと、誰でもアクセス可能な状態になります。
ですが、ここは開発段階では「テスト中」のままにしておき、
テストユーザーとして自分を登録するのをお勧めします。
ぶっちゃけ個人開発なら最初から本番環境(全員がアクセス可能)にして作業してもいいんですが、事業としてやる際はこのテスト環境→本番環境の手順が必須になります。
本番環境への移行もさっきのボタンをワンクリックするだけなので、この方式に慣れておいた方がいいでしょう。
下にいって「テストユーザー」のところで「+ Add users」から自分のGmailをテストユーザーとして登録します。

テストユーザーの登録ができたらGCP側の設定は完了です。
再度左上のハンバーガーメニュー「☰」を押して「Cloudの概要」→「ダッシュボード」をクリックしてトップ画面に戻ります。

この画面の「プロジェクト情報」に載っている「プロジェクト番号(12桁の数字)」をコピーしてください。

そしたらGASのファイルに戻ります。
GASでプロジェクト番号を入力してGCPと紐づけ
さてGASファイルに戻ってきました。
さきほどと同じく、「プロジェクトの設定」で「Google Cloud Platform(GCP)プロジェクト」の項目をいじっていきます。
「プロジェクト番号」のところに、先ほどコピーしたGCPのプロジェクト番号を貼ります。

そして「プロジェクトを設定」を押せば、プロジェクトの割り当て変更は完了です。
ですが、もう一つ最後にやらなければいけない作業があります。
appsscript.jsonを設定
最後にappsscript.jsonというものを設定します。
appsscript.jsonはGASスクリプトで「どんなAPIや拡張機能が使われているか」を記載したファイルです。
他のプログラミング開発におけるpackage.jsonやDockerファイルのような役割のファイルですね。
実は今まであなたが普段使っていたGAS(デフォルトのGCPプロジェクト利用時)では、裏で自動でappsscript.jsonが書き換わりながら実行してくれていました。
ですが、今回GCPを任意の標準プロジェクトに変えましたよね。
これにより、自動appsscript.json更新がされなくなったため、新たにこのファイルの手動設定も必要になるというわけです。
では、設定手順です。
- appsscript.jsonを非表示→表示に変える
- appsscript.jsonに必要記述を追加
- デプロイ
まず、GASの「プロジェクトの設定」で一番上の「全般設定」のとこにある
「「appsscript.json」マニフェスト ファイルをエディタで表示する」のチェックを入れます。

これにより、appsscript.jsonがコードエディタに出現します。
そしたらエディタ(GASコードを書くとこ)に戻ります。
さっきまでと違い、appsscript.jsonというファイルがあるはずです。
見てみましょう。

なにやら書かれていますね。
しかし、これでは基本的に情報不足であり、実際にGASファイルで使うAPIの情報が抜けています。
なので、私の場合は必要事項を追記し、以下のようなコードに書き換えました。
{
"timeZone": "Asia/Tokyo",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/script.container.ui",
"https://www.googleapis.com/auth/drive",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.projects.readonly"
]
}
ここに書くことは自分が書いているGASコードの内容によってことなります。
てわけで、ChatGPTに自身のGASコードを全て送り、
「この処理に必要なappsscript.jsonを書いて」とお願いしましょう。
そうすれば、いい感じのappsscript.jsonファイルを作ってくれるはずです。
ちなみに、ここには今回GCPで追加したAPIの情報だけではなく、
「すでに呼び出していたはずのAPI」も明記しなければなりません。
私の例でいうと、
"https://www.googleapis.com/auth/drive"
は”元から処理に使われていたAPIだけど、appsscript.jsonに書かれていなかったAPI情報”になります。
自働補完してくれていた記述という意味ですね。
逆に、
"https://www.googleapis.com/auth/script.projects.readonly"
とかは、今回のGCPを入れることで実装できたApps Script APIの記述になります。
どちらも記述しなければいけない、ということは頭に入れておきましょう。
といっても、ソースコードを全部AIにぶん投げれば全部書いてくれるので気にする必要はないですが。
最後にこれをデプロイや保存すれば、システムとして追加機能が使えるようになっているはずです。
作業完了
これで手順は終わりです。
結構めんどくさいですね。
手続き自体に難しいポイントはありませんが、OAuth認証やappsscript.jsonなど、
見逃しがちなポイントもあったため、備忘録として記事にしました。
GASは便利ですし、踏み入ればGCPの勉強にもなるので、
どんどん使っていきたいですね。
コメント