Google Chat用の簡単なチャットボットをGASで作る

GASGoogle Chat自動化
Google Chat用の簡単なチャットボットをGASで作るのサムネイル

Google Chat用チャットボットをGASでサクッと作る方法

こんにちは、GASおじです。中小企業の経営者さんやフリーランスの皆さん、チャットツールのGoogle Chatでちょっとした自動応答ができたら便利だと思いませんか?今回はGoogle Apps Script(以下GAS)を使って、Google Chatのチャットボットを作る方法を紹介します。

おじさんもSaaS課金には厳しいので、余計なコストはかけずにGoogleアカウントの利用枠内(Apps Scriptの実行上限あり)で作れる仕組みを目指します。もちろん既存データを消したり壊したりしない安全設計です。


初期設定と必要な権限

Google Chatボットを作るにはまずGoogle Cloud Consoleでプロジェクトを作成し、Chat APIを有効化します。その後、GASのウェブアプリとして公開し、WebhookでChatに連携します。

手順の概要

  1. Google Cloud Consoleでプロジェクト作成
  2. Chat APIを有効化
  3. GASでチャットボットのスクリプト作成
  4. GASをウェブアプリとしてデプロイ
  5. Google ChatのスペースにウェブフックURLを登録

必要な権限

  • スプレッドシートの編集権限(結果を新規シートに書き込むため)
  • ウェブアプリの実行権限(GASでウェブリクエストを受けるため)

個人情報の取り扱い

チャット内容はGoogleのサーバー上で処理されます。個人情報や機密情報は送信時に適切にマスクやフィルターすることをおすすめします。


コード例:Google ChatボットのGASスクリプト

以下はチャットで受け取ったメッセージを解析し、処理結果を日時付きの新しいスプレッドシートに書き込む簡単な例です。既存のデータは更新せず、新規ファイルに書き込んでいます。

function doPost(e) {
  try {
    const event = JSON.parse(e.postData.contents);
    const messageText = event.message.text || '';
    const userName = event.user.displayName || 'Unknown';

    // 入力検証:空メッセージは無視
    if (!messageText.trim()) {
      return ContentService.createTextOutput(JSON.stringify({text: 'メッセージが空です。'}))
        .setMimeType(ContentService.MimeType.JSON);
    }

    // 処理結果を記録する新規スプレッドシートを作成
    const timestamp = new Date().toISOString().replace(/[:\-T]/g, '').slice(0, 14);
    const ss = SpreadsheetApp.create(`ChatBot_ログ_${timestamp}`);
    const sheet = ss.getActiveSheet();
    sheet.appendRow(['日時', 'ユーザー名', 'メッセージ', '応答']);

    // 簡単な応答ロジック(例:Helloを含むかどうか)
    let reply = 'すみません、よくわかりません。';
    if (messageText.toLowerCase().indexOf('hello') !== -1) {
      reply = `こんにちは、${userName}さん!`;
    }

    // バッチ書き込み(ここは1行だが拡張可能)
    const row = [new Date(), userName, messageText, reply];
    sheet.appendRow(row);

    // 応答を返す
    return ContentService.createTextOutput(JSON.stringify({text: reply}))
      .setMimeType(ContentService.MimeType.JSON);

  } catch (error) {
    // エラーハンドリング
    return ContentService.createTextOutput(JSON.stringify({text: '処理中にエラーが発生しました。'}))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

ポイントは、

  • 新規スプレッドシートに日時付きで記録する
  • 空メッセージは無視して入力検証する
  • エラー時もチャットにメッセージを返す
  • 既存のデータ削除APIは使用しない

installable triggerや復元手順について

今回はGoogle ChatからのWebhookで動かすので、installable triggerは不要です。Webhookを経由してGASのdoPost関数が呼ばれます。

万が一のために、スプレッドシートのバックアップはGoogleドライブのバージョン管理や定期的なコピーで対応してください。GAS自体もスクリプトエディタのバージョン履歴から復元可能です。


導入によるコスト削減のイメージ

仮にチャットボット対応で1件あたりの問い合わせ対応時間が平均5分から3分に短縮できたとしましょう。
1日20件の問い合わせで1時間40分の短縮、月20営業日なら約33時間の工数削減です。

時給2000円で計算すると、
33時間 × 2000円 = 66,000円/月 のコスト削減イメージになります。

もちろん実際の効果は業務内容や運用次第ですが、Googleアカウントの利用枠内で追加の専用SaaS料金なしに自動化できるのは大きなメリットです。


まとめ

  • Google ChatのチャットボットはGASで簡単に作れる
  • 既存データは消さず、新規日時付きファイルに結果を保存するのが安全
  • 入力検証やエラー処理も必須
  • Googleアカウントの利用枠内で運用可能(Apps Scriptのquota・実行上限あり)
  • installable triggerは不要、Webhook連携で完結
  • バックアップや復元はGoogleドライブとGASのバージョン管理にお任せ

おじさんの経験から言うと、SaaS課金を増やさずに社内のちょっとした自動化を進めたいなら、こうしたGAS活用がベスト。ぜひチャレンジしてみてください。


GASおじラボで500ツール使い放題 →
GASの達人おじさんが作った便利ツールがいっぱい。あなたの業務効率化に役立ててね!