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

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

記事
IT・テクノロジー

■ 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に連携します。


□ 手順の概要

・Google Cloud Consoleでプロジェクト作成
・Chat APIを有効化
・GASでチャットボットのスクリプト作成
・GASをウェブアプリとしてデプロイ
・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の相談や導入サポートを見たい方へ

この記事と近い作業をGoogleシートやGASで整えたい方は、Gasおじのココナラ出品一覧もご覧ください。

■ 関連サービス

GASおじのココナラ出品一覧
日々の記録、確認、通知、投稿準備などを、GoogleスプレッドシートとGASで無理なく自動化する相談ができます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す