LoginSignup
2
5

More than 1 year has passed since last update.

GASとGCPでGoogle Chat Botを作る

Posted at

はじめに

2,3年くらい前に、このあたりの記事を参考にGoogle Chat(旧Google Hangout)で動くBOTをつくりました。

昨年2022年9月をもってGASのクラシックエディタが廃止され、デプロイの仕方が微妙に変わったのでここに記しておきます。

1. スクリプトの作成

チャットルームにてbotとやり取りを行うには Google Chat API を使用します。

スクリプト作成

DriveまたはSpreadsheetから新しいスクリプトを作成します。

  • プロジェクト名を入力
  • サンプルスクリプトを記入

公式のガイドでサンプルスクリプトを用意してくれているので、自分用のスクリプトとしてエディタにコピペします。

ただし上記のサンプルスクリプトには誤りがあり、こちらを参考に以下のように書き換える必要があります。

/**
 * Responds to a MESSAGE event in Google Chat.
 *
 * @param {Object} event the event object from Google Chat
 */
function onMessage(event) {
  var name = "";

  if (event.space.type == "DM") {
    name = "You";
  } else {
    name = event.message.sender.displayName;
  }
  var message = name + " said \"" + event.message.text + "\"";

  return { "text": message };
}

このスクリプトは、ダイレクトメッセージを送る、もしくはグループ内でメンションを付けたときに、メッセージ内容をユーザ名と一緒にオウム返しする機能が実装されています。

ソースコードはいったんそのままで、プロジェクト名を適当に入力して保存。

デプロイ

  • 『デプロイ』 → 『新しいデプロイ』 → 『ウェブアプリ』
  • 説明などがあれば追記し、『デプロイ実行』
  • デプロイIDをコピーしメモ帳などにキープしておく

Screenshot_1.png
Screenshot_2.png

2. GCP連携

『設定』 → 『Google Cloud Platform(GCP)プロジェクト』

  • 手順1 GCPにてプロジェクトを作成
  • 手順2 プロジェクト番号をコピーしてGASの設定画面に貼り付ける(OAuthの認証が必要と怒られたらそちらを先にやる)

Screenshot_4.png

手順1:
『APIとサービス』→『OAuth同意画面を構成』

必ず、アプリケーションに関する情報を使用して OAuth 同意画面を構成してください。
・User Type:内部
・アプリ情報:アプリ名
・デベロッパーの連絡先情報:自分のメールアドレス

Screenshot_6.png
Screenshot_7.png

3. API有効化

GCPの管理画面にて、『APIライブラリ』から『Google Chat API』を選択し有効にする

Screenshot_1.png

「構成」タブ:アプリケーションの情報を入力

  • ボット名 : ボットを検索したり、@をつけてメンションするときの名前。
  • アバターのURL : Botのアイコン。正方形で縦128px横128px以上。(https)
  • 説明 : Botの簡単な説明。検索したときに表示される。
  • 機能 : Botの用途を選択する。
  • 接続設定 : Apps Script projectを選択し、メモ帳にコピーしたデプロイIDを入力。
  • 権限 : いったん自分だけにする。

Screenshot_2.png

Screenshot_3.png
Screenshot_4.png

4. BOTにメッセージを送ってみる

作成したBOTに@メンションをつけてメッセージを送ってみます。
メッセージが返ってくれば成功です。

もしBOTの応答しない場合は、マニフェストファイルを開いて

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
    "libraries": [{
      "userSymbol": "OAuth2"
    }]
  },
  "exceptionLogging": "STACKDRIVER"
}

のようになっているところを

{
  "timeZone": "Asia/Tokyo",
  "dependencies": {
    "libraries": [{
      "userSymbol": "OAuth2"
    }]
  },
  "exceptionLogging": "STACKDRIVER",
  "chat": {
  }
}

とchatの権限を付け加えてあげると、動くようになると思います。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5