Gmailの問い合わせをGoogle Chatに通知する方法|Apps Script実装レシピ

Gmailの問い合わせをGoogle Chatへ通知する方法を、Apps Scriptのコード、検索条件、二重通知対策、個人情報の境界、監視、湯田Q&Aで解説します。

著者: SakuraAI 編集部監修: 湯田英也公開: 最終更新: 10
目次
30秒でわかる結論

Gmailの問い合わせ通知は、Gmailフィルタ、Apps Scriptの時間主導トリガー、Google Chatの受信Webhookを組み合わせれば実装できます。設計の要点は、未読メールを探すのではなく専用ラベルで対象を固定し、Chat送信の成功後に通知済みラベルを付けることです。Chatには初動に必要な情報だけを送り、メール本文と対応履歴は別の正本で管理します。

本記事は2026年6月29日時点のGoogle公式情報をもとにしています。Gmail、Apps Script、Google Chatの仕様、割り当て、管理者設定は変更される可能性があります。実装前に公式ドキュメントと自社のGoogle Workspace設定を確認してください。

Expert Q&A

Gmail通知を作る前に確認すること

湯田英也SakuraAI株式会社 代表 / ソフトウェアエンジニア

Q. 未読メールを定期検索すれば十分ですか?

A. 十分ではありません。担当者が先に開くと未読条件から外れ、通知されない可能性があります。通知対象ラベルと通知済みラベルを分け、既読かどうかに依存しない構成にします。

Q. メール本文をChatへ載せるべきですか?

A. 原則として全文は載せません。件名、種別、受信日時、次の行動に絞ります。本文には個人情報、契約情報、認証情報が混ざる前提で考えます。

Q. Chat通知だけで問い合わせ管理できますか?

A. できません。Chatは知らせる場所です。担当、期限、状態、返信履歴は共有メールボックス、CRM、チケット、管理表などで管理します。

問い合わせメールを見落とさないためにChatへ通知する。この仕組み自体は小さく作れます。ただし、受信トレイを定期検索して本文を流すだけでは、既読による取りこぼし、二重通知、個人情報の拡散、通知後の放置が起きます。

この記事では、通知対象の決め方から検索、排他制御、成功後のラベル付与、失敗監視までを一つの運用として整理します。基礎はWebhookの使い方Apps Scriptで通知する方法も参照してください。

前提として一つだけ立場をはっきりさせておくと、Chatはあくまで「知らせる場所」で、正本はGmailや業務システム側に置きます。この線を引かずに本文も履歴もChatへ流し込むと、あとで検索も監査もできなくなります。

GmailからChatへ通知する3つの方法

方式通知速度実装負荷向くケース主な注意点
Apps Scriptの定期検索設定した間隔低〜中小規模な社内通知、PoC厳密な即時性や配信保証はない
Gmail APIとCloud基盤設計次第で高速大量処理、再送、監査が必要Cloudプロジェクトと運用監視が必要
外部自動化サービスサービス仕様による低〜中複数SaaSをノーコード連携データ保存先、料金、実行上限を確認

このページでは、少量の問い合わせ通知を短期間で始めるApps Script方式を扱います。数秒単位の即時性、厳密な再送、監査ログが必要なら、最初からCloud基盤を検討します。

通知フロー

01

Gmail受信

問い合わせメールが届く

標準機能
02

Gmailフィルタ

専用ラベルを付ける

標準機能
03

時間主導トリガー

Apps Scriptを定期実行

標準機能
04

未通知を検索

対象ラベルから処理済みを除く

要開発
05

Google Chat

初動に必要な情報だけ通知

標準機能
06

通知済みラベル

送信成功後に付ける

標準機能
07

正本で対応

担当、期限、返信を記録

要開発
標準機能で対応開発・設定が必要

Chatへの送信に失敗した場合は、通知済みラベルを付けません。次回実行で再び対象になります。一方、送信後にラベル付けだけ失敗すると重複通知の可能性が残るため、重要業務ではイベントIDを持つ台帳やキューが必要です。

通知対象をGmailフィルタで決める

Apps Scriptへ複雑な分類処理を詰め込む前に、Gmailフィルタで対象メールへChat通知_問い合わせラベルを付けます。

条件検索例向く用途注意点
受信先to:contact@example.com専用窓口への問い合わせエイリアスや転送経路を確認する
差出人from:partner.example特定取引先からの連絡なりすまし対策とは別に考える
件名subject:(問い合わせ OR 見積)定型件名の受付表記揺れで漏れる可能性がある
添付has:attachment filename:pdf書類受信添付内容の安全性は判定できない
既存ラベルlabel:問い合わせ手動・フィルタ分類済みラベル運用を変更すると影響する

is:unreadは通知対象の条件に使いません。人が先に開く、モバイルで既読になる、別の自動処理が既読化するといった状況で、対象から外れるためです。

検索条件はGmailの検索欄で実データに対して確認してから、Apps Scriptへ移します。対象外メールと過去メールが混ざらないことを確認してください。

Chatへ送る情報を決める

メールには、本文以外にも個人情報や機密情報が含まれます。通知先スペースの参加者全員に見せる必要があるかを項目ごとに判断します。

項目Chatへの掲載判断理由
受信日時掲載する初動の遅れを判断できる
問い合わせ種別掲載する担当を判断できる
件名必要に応じて短縮件名自体に個人情報が入る可能性がある
差出人名業務上必要な場合だけ氏名とメールアドレスの複製を避ける
メールアドレス原則掲載しないChatの閲覧範囲へ広げない
本文原則掲載しない機密情報、署名、過去の引用を含む
添付ファイル直接転送しない権限、マルウェア、保管場所を別途管理する
正本リンク権限確認後に掲載担当者が元情報を確認できる

Gmailのスレッドリンクは、Chat参加者全員が開けるとは限りません。チームで問い合わせを扱うなら、共有メールボックス、Googleグループ、CRM、チケット管理など、共同で参照できる正本を先に決めます。

Webhookを用意する

ブラウザ版Google Chatで通知先スペースを開き、アプリとインテグレーションから受信Webhookを追加します。Webhook URLには秘密のkeytokenが含まれるため、Apps ScriptのスクリプトプロパティへCHAT_WEBHOOK_URLとして保存します。

Google Chatの設定画面は、公開前に運用環境で手動撮影した実画面へ差し替えます。アカウント名、スペース名、メール情報、Webhook URLをマスキングしてから掲載してください。

Apps Scriptを実装する

次のコードは、専用ラベルが付き、通知済みラベルがないスレッドを最大20件取得します。同時実行による重複を減らすため、スクリプトロックを使います。

const SOURCE_LABEL = 'Chat通知_問い合わせ';
const DONE_LABEL = 'Chat通知済み';

function notifyInquiries() {
  const lock = LockService.getScriptLock();
  if (!lock.tryLock(1000)) {
    console.log('別の通知処理が実行中です。');
    return;
  }

  try {
    const sourceLabel = GmailApp.getUserLabelByName(SOURCE_LABEL);
    if (!sourceLabel) {
      throw new Error(`${SOURCE_LABEL}ラベルがありません。`);
    }

    const doneLabel = GmailApp.getUserLabelByName(DONE_LABEL)
      || GmailApp.createLabel(DONE_LABEL);
    const query = `label:${SOURCE_LABEL} -label:${DONE_LABEL} newer_than:7d`;
    const threads = GmailApp.search(query, 0, 20).reverse();

    threads.forEach((thread) => {
      const messages = thread.getMessages();
      const latest = messages[messages.length - 1];
      const receivedAt = Utilities.formatDate(
        latest.getDate(),
        Session.getScriptTimeZone(),
        'yyyy-MM-dd HH:mm',
      );

      const text = [
        '*新しい問い合わせ*',
        `受信日時: ${receivedAt}`,
        `件名: ${truncate(latest.getSubject(), 120)}`,
        '次の行動: 受付担当が正本を確認',
      ].join('\n');

      sendToChat(text);
      thread.addLabel(doneLabel);
    });
  } finally {
    lock.releaseLock();
  }
}

function truncate(value, maxLength) {
  const text = String(value || '件名なし');
  return text.length <= maxLength
    ? text
    : `${text.slice(0, maxLength)}...`;
}

function sendToChat(message) {
  const url = PropertiesService.getScriptProperties()
    .getProperty('CHAT_WEBHOOK_URL');

  if (!url) {
    throw new Error('CHAT_WEBHOOK_URLが設定されていません。');
  }

  const response = UrlFetchApp.fetch(url, {
    method: 'post',
    contentType: 'application/json; charset=UTF-8',
    payload: JSON.stringify({ text: message }),
    muteHttpExceptions: true,
  });

  const status = response.getResponseCode();
  if (status < 200 || status >= 300) {
    throw new Error(`Chat通知に失敗しました。HTTP ${status}`);
  }
}

GmailApp.search(query, start, max)のページ指定を使い、一度に取得する件数を制限しています。Google公式資料でも、スレッド全体のサイズが大きい場合は範囲を指定する検索が案内されています。

この方式の通知済みラベルはスレッド単位です。同じスレッドに後から返信が届いても、通知済みラベルが残るため再通知されません。新着メッセージ単位で管理する場合は、メッセージIDを別の台帳へ保存してください。

時間主導トリガーを設定する

Apps Scriptのトリガー画面から、notifyInquiriesを時間主導トリガーへ登録します。Google公式では、時間主導トリガーは最短で毎分実行できますが、厳密な時刻での実行は保証されません。

実行間隔向く用途利点注意点
1〜5分初動を急ぐ問い合わせ通知遅延を短くできる実行回数、競合、割り当てを確認する
10〜15分一般的な社内受付速度と実行回数のバランスを取りやすい即時通知ではない
1時間定期確認で足りる連絡実行回数を抑えられる初動が遅くなる
日次集約参考情報、レポート通知疲れを抑えられる緊急連絡には使わない

インストール型トリガーは、作成者のアカウント権限で動きます。作成者の退職やアカウント停止で止まらないよう、所有者、引き継ぎ、実行権限を運用資料へ残します。

担当別に振り分ける

振り分けは、Apps Scriptで本文を解析する前に、Gmailフィルタとラベルで分ける方が保守しやすくなります。

Gmailラベル通知先通知条件正本
Chat通知_営業営業受付スペース見積、導入相談CRM
Chat通知_採用採用スペース応募、面談調整採用管理システム
Chat通知_サポートサポートスペース障害、操作問い合わせチケット管理
Chat通知_要確認受付管理スペースどこにも分類できない共有メールボックス

分類できなかったメールを捨てず、要確認へ逃がす経路を用意します。AI分類を追加する場合も、分類不能と低信頼度の扱いを先に決めます。

テストで確認する項目

確認項目テスト方法合格条件
検索条件対象と対象外のテストメールを送る対象だけに専用ラベルが付く
既読メール受信後すぐに開いてから実行する既読でも通知される
二重実行短い間隔で関数を複数回実行する同じスレッドが連続通知されない
送信失敗テスト用の無効Webhookで実行する通知済みラベルが付かず、失敗が記録される
個人情報本文、署名、添付を含むメールを送る設計した項目以外がChatへ出ない
権限担当者が正本を開く必要な担当者だけが参照できる
引き継ぎ別の管理担当が設定を追跡するラベル、プロパティ、トリガーを確認できる

本番運用で見る指標

Decision chart

Gmail通知で優先して監視する項目

問い合わせ対応への影響をもとにSakuraAIが整理した優先度です。

通知失敗件数100/100

問い合わせが届いても担当が気づけない

受付から初回確認までの時間97/100

通知導入の効果を直接測れる

未対応件数95/100

通知後に放置されていないかを見る

重複通知件数90/100

通知疲れと誤対応につながる

誤ったスペースへの通知89/100

個人情報と対応遅延に影響する

通知件数ではなく、失敗、初動、未対応を追います。

Apps Scriptの実行履歴で失敗を確認し、トリガーの失敗通知を受け取れる状態にします。GmailやURL Fetchの割り当て、Google Chatのスペース単位の送信制限も公式資料で確認します。

Webhookは一方向通知です。送信失敗にはHTTPステータスを使い、一時的なエラーには指数バックオフを検討します。大量のメールを同じスペースへ短時間に送る場合は、1件ずつ投稿せず集約やキューを使います。

Apps Script方式が向かないケース

  • 数秒以内の通知を業務要件にしている
  • 1件も重複・欠落させない配信保証が必要
  • 大量のメールを常時処理する
  • メッセージ単位の状態と再送履歴を監査する
  • 複数メールボックスを組織横断で扱う

この場合は、Gmail API、Google Cloudのイベント処理、キュー、監視基盤を含めて設計します。Apps Scriptは小規模な通知には向きますが、メッセージ配送基盤ではありません。

専門家に聞く運用判断

Q. 最初に通知するメールはどう選びますか?

A. 見落としたときの損失が大きく、担当と次の行動が明確なメールです。全メールではなく、営業問い合わせや障害連絡など1種類から始めます。

Q. AIで本文を要約してChatへ送ってもよいですか?

A. 補助としては使えます。ただし、個人情報や契約情報を必要なく外部へ送らないこと、要約を正本にしないこと、低信頼度を要確認へ回すことが条件です。

Q. 通知が二重に飛ぶことがあります。原因は?

A. たいていは通知済みラベルを付ける前にChat送信でエラーが起きて、次の実行でまた拾ってしまうパターンです。『Chat送信が成功したらラベルを付ける』の順番を守り、既読条件ではなくラベルで対象を管理すれば防げます。

Q. 運用を始めてから何を改善しますか?

A. 通知の数ではなく、初回確認までの時間・未対応・重複・誤振り分けを見ます。ここが悪いときは、通知文を長くするより、対象条件と担当の割り当てを直すほうが効きます。

関連レシピ

分類、要約、返信下書きまで含めた設計はGmail自動化、フォーム回答の通知はフォーム回答をChatに通知する方法、双方向処理を含む全体像はGoogle Chat APIの解説を参照してください。

SakuraAIで支援できること

SakuraAIは、Gmailフィルタ、Apps Script、Google Chat通知、問い合わせ台帳まで設計・実装します。通知を作るだけで終わらせず、個人情報の境界、二重通知、失敗監視、正本、担当者の引き継ぎまで含めて構築します。

よくある質問

全部のメールではなく問い合わせだけ通知できますか?

できます。Gmailフィルタで問い合わせ用ラベルを付け、Apps Scriptではそのラベルだけを検索します。未読状態に依存すると、人が先に開いたメールを見落とすため、専用ラベルを基準にします。

同じメールが何度も通知されませんか?

Chatへの送信が成功した後に通知済みラベルを付け、次回検索から除外します。さらにLockServiceで同じスクリプトの重複実行を抑えます。ただし厳密な配信保証が必要なら、Apps Scriptとラベルだけで完結させず、外部のキューや台帳を使います。

新しい返信も通知できますか?

できますが、スレッドへ通知済みラベルを付ける方式では、その後の返信は対象外になります。返信単位で通知したい場合はメッセージIDを台帳で管理するか、Gmail APIを使う設計が必要です。

担当者ごとに振り分けられますか?

できます。営業、採用、サポートなどをGmailフィルタとラベルで先に分類し、ラベルごとに送信先Webhookを切り替えます。本文を毎回解析するより、明確な条件はフィルタへ任せた方が保守しやすくなります。

GmailのリンクをChatへ載せれば全員が開けますか?

開けるとは限りません。メールボックスの権限を持たない担当者は閲覧できません。共有メールボックス、Googleグループ、CRMなど、チームが参照できる正本を別途設計してください。

参考・一次情報

湯田英也

Reviewed by

監修者: 湯田英也

SakuraAI株式会社 代表 / ソフトウェアエンジニア

Google Chatの導入・移行、Google Workspace連携、Google Chat API / Webhook / Bot、Gmail・Meet・Drive・Calendarをまたぐ業務自動化領域を監修しています。

Google公式情報、各プロダクトの仕様、実務での運用・開発観点をもとに、企業が導入判断・運用設計・自動化設計を行える内容になるよう確認しています。

自動化相談

問い合わせメール対応を自動化する

分類・要約・返信下書き・Chat通知・Drive保存を一気通貫にします。

Gmail自動化を相談する