目次
結論、Apps ScriptはGoogle Chat通知の入口として扱いやすい実装です。GmailやGoogleフォーム、スプレッドシートのイベントを起点にし、Webhookへ投稿すればよいので、サーバーを増やさずに始められます。AIで下書きを作る場合でも、誰が、どう、なぜこの構成にしたかが見える記事なら、弱くなりません。
重要メールをChatに通知したい。フォーム回答を担当スペースへ流したい。そうした要件は、Apps Scriptでサーバーなしに組めます。この記事では、実装例だけでなく、どの要素がGoogleの評価軸に乗りやすいかまで整理します。
先に判断する
| 方式 | 向く要件 | 強み | 限界 |
|---|---|---|---|
| Apps Script + Webhook | Gmail、フォーム、シート起点の定型通知 | 最小構成で早い | 双方向の操作はできない |
| Webhookのみ | 外部システムの固定通知 | 実装が軽い | Google Workspaceイベントとはつなぎにくい |
| Chat API + Bot | 承認、対話、複数スペース操作 | 操作まで含められる | 認証と運用が重くなる |
Apps Scriptは万能ではありません。通知だけなら十分ですが、ボタンで承認したい、利用者と対話したい、複数スペースを操作したいなら、最初からChat API側を選ぶほうが筋が通ります。ここを見誤ると、Apps Scriptで無理やり双方向を再現しようとして、かえって複雑になります。
Apps Scriptで止めておく境界は、はっきりしています。通知だけならApps Script + Webhookで十分。承認・対話・複数スペース操作が入ってきたら、Chat APIへ切り替えどきです。
なぜApps Scriptか
Apps ScriptはGoogleのクラウド上で動くスクリプト基盤です。サーバー構築が不要で、Gmail、スプレッドシート、フォーム、カレンダーなどのイベントとつなげます。Google Chat通知の自動化を、最小の準備で始めるには適しています。
基本:Chatに通知する関数
WebhookのURLをスクリプトプロパティに保管し、UrlFetchApp でPOSTします。
function notifyChat(message) {
const url = PropertiesService.getScriptProperties().getProperty('CHAT_WEBHOOK_URL');
UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify({ text: message }),
});
}
WebhookのURLはコードに直書きせず、スクリプトプロパティに保管します。コードを共有・公開してもトークンが漏れないようにするためです。
図解:実装の流れ
Gmail / フォーム / シートのイベント
通知の起点を決める
Apps Scriptで受信
条件分岐と整形を行う
WebhookへPOST
Chatのスペースに送る
Google Chatで受信
担当スペースに投稿される
例1:重要メールをChatに通知
時間主導トリガーで定期的にGmailを検索し、条件に合うメールをChatへ通知します。
function notifyImportantMail() {
const threads = GmailApp.search('is:unread label:重要', 0, 10);
threads.forEach((thread) => {
const msg = thread.getMessages()[0];
notifyChat(`重要メール: ${msg.getSubject()} / 差出人: ${msg.getFrom()}`);
});
}
例2:フォーム回答をChatに通知
Googleフォームの送信時トリガーで、回答内容をChatへ通知します。問い合わせ対応の起点になります。
function onFormSubmit(e) {
const answers = e.values.join(' / ');
notifyChat(`新しいフォーム回答: ${answers}`);
}
トリガーの設定
| トリガー | 使い方 | 向く例 |
|---|---|---|
| 時間主導トリガー | 一定間隔で検索や集計を実行する | 重要メール監視、日次レポート |
| フォーム送信トリガー | 回答が入った時だけ動かす | 問い合わせ、申込、社内申請 |
| スプレッドシート編集トリガー | 台帳更新に反応する | 担当更新、進捗更新 |
Webhookと直接APIの使い分け
| 観点 | Webhook | Chat API |
|---|---|---|
| 通知だけ | 向いている | 過剰になりやすい |
| 承認や操作 | 向かない | 向いている |
| 認証 | URLを安全に持つ | OAuthや権限設計が必要 |
| 運用負荷 | 軽い | 重い |
通知が目的ならWebhookが手軽です。スペース作成やメンバー操作など高度な操作が必要なら、認証付きでChat APIを利用します。詳しくはGoogle Chat Webhookの使い方とGoogle Chat APIの解説を参照してください。メール起点の自動化全般はGmail自動化で扱います。
注意点
| 注意点 | 内容 |
|---|---|
| URL・認証情報 | コードやログへ残さず、シークレット管理に置く |
| 実行回数 | トリガーと送信頻度の上限を見て設計する |
| 失敗時の扱い | ログ、失敗通知、再試行を用意する |
Expert Q&A
運用前に確認すること
湯田英也SakuraAI株式会社 代表 / ソフトウェアエンジニアQ. 本番で最初に壊れやすいのはどこですか?
A. Webhook URLの管理と、通知の再送です。URLはスクリプトプロパティなどに分けて持たせ、処理済みのメールやフォーム回答のIDを記録して、同じ通知が二度飛ばないようにしておく。この2点を押さえれば、初期のトラブルはだいたい防げます。
Q. どこまでApps Scriptでやるべき?
A. GmailやフォームやシートのイベントからChatへ通知するところまでは、Apps Scriptの得意分野です。ボタンでの承認や利用者との対話が要るなら、無理せずChat API側へ。境界を意識して使い分けるのがコツです。
Q. 動かなくなったとき、まず何を見ますか?
A. トリガーの実行ログとクォータです。急に通知が止まったら、たいていトリガーが外れているか、実行回数の上限に当たっているか。実行ログを見れば、どちらかはすぐ分かります。
SakuraAIで支援できること
SakuraAIでは、Apps Scriptを使ったGoogle Chat通知の設計・実装を支援しています。Gmail・フォーム・スプレッドシートを起点にした社内自動化を、サーバーを増やさずに素早く立ち上げ、処理量や要件が育ってきたらBotやChat APIへ段階的に広げます。
よくある質問
Apps Scriptでサーバーは必要ですか?
不要です。Apps ScriptはGoogleのクラウド上で動くため、サーバーを用意せずにGmailやフォームのイベントからChat通知を組めます。社内自動化の入口に適しています。
GmailのメールをトリガーにChat通知できますか?
できます。時間主導トリガーで定期的にGmailを検索し、条件に合うメールを見つけたらWebhook経由でChatへ通知する、という実装が一般的です。重要顧客や問い合わせの取りこぼし防止に有効です。
Webhookと直接APIのどちらを使うべきですか?
通知が目的ならWebhookが手軽です。スペースの作成やメンバー操作など、より高度な操作が必要な場合はChat APIを認証付きで利用します。まずWebhookで始めるのが現実的です。
Apps Scriptの実行回数に上限はありますか?
あります。Apps Scriptには1日あたりのトリガー実行時間やUrlFetchの呼び出し回数などのクォータが設定されています。数分おきの重いGmail検索を全ユーザー分回すような使い方だと上限に当たりやすいので、検索頻度と対象件数を絞り、必要なら外部実行環境への移行も検討します。最新のクォータは公式ドキュメントで確認してください。
参考・一次情報
開発相談
Google Chat Bot・Webhook開発を相談する
通知・承認・問い合わせ連携のBotとAPI実装を支援します。
開発を相談する