■ 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で無理なく自動化する相談ができます。