GmailからGoogleチャットに自動転送|GASで通知Botを作る方法

毎日たくさんのメールが届く中で、大切なお問い合わせメールが他の連絡に埋もれてしまうことはありませんか?
気づかないまま未読になっていると、対応が遅れ、相手に不安を与えてしまう可能性もあります。
そんな時に便利なのがGoogle Apps Script(GAS)を使って未読のGメールをGoogleチャットに自動通知する方法です。
チャットに通知することで、対応が必要なメール内容を確認できますし、チーム内で共有することで早めの対応にもつながります。
今回はお問合せのメールのうち未読のものをGoogleチャットに通知する方法をご紹介します。
完成イメージ
Gmail

Googleチャット

- Gmailに届いた重要なメールで未読のものをGoogleチャットに自動通知し、見逃しや対応遅れを防止できます。
今回の例では、「【お問い合わせ】」という件名を含む未読メールをGmailから自動で検出し、以下の内容をGoogleチャットに通知します。
- 差出人
- 件名
- 本文の冒頭(最大200文字)
通知後は該当メールを自動で既読にするため、同じメールが何度も通知されることはありません。
問い合わせの対応がまだされていない未読メールをチャットで把握することにより、見逃しや対応漏れの防止に役立ちます。
今回のスクリプトで実行されること
- Gmailで「【お問い合わせ】」という件名の未読メールを検出
- メールの送信者、件名、本文の冒頭(200文字)をGoogleチャットに通知
- 通知が完了したメールは自動で既読に設定(重複通知を防止)
GASの実行手順
準備:GoogleチャットのWebhook URL を取得
Google Apps Script(GAS)でチャットに通知を送るためには、Googleチャット側に「このアプリ(GAS)からの通知を受け取るよ」と許可する必要があります。
そのために必要なのが「Webhook URL」です。これはチャットスペース専用の 受付窓口のURL のようなもので、このURLを使ってメッセージを送信します。
そのため、まずは GoogleチャットのWebhookURLを取得します。

Googleチャットを開きます。

通知を受け取りたいチャットスペースを準備します。
すでにあるスペースでもOKです。

スペース名の右にある「 」をクリックし、「スペースの設定」を開きます。

「アプリと統合」を選択します。

「アプリと統合」のメニュー内を下にスクロールして表示される「Webhookを追加」をクリックします。

着信 Webhook の画面が表示されたら、わかりやすい名前(例:Gmail通知Bot)を入力して「保存」します。

発行された Webhook URLをコピーします。
後のGAS スクリプトで使用します。
GASの作成
先ほど取得した Webhook URL を使って、チャットに通知を送るスクリプトをGASで作成します。

Googleドライブ左上の「+新規」ボタンをクリック

表示された項目の中から、「その他」→「Google Apps Script」を選択します。

Google Apps Scriptのエディタで、「プロジェクトの設定」を選択します。


プロパティ名(例: WEBHOOK_URL)とコピーしたURLを値に入力します。
入力したら、「スクリプトプロパティを保存」を押します。

左メニューからエディタを選択します。
コード入力欄に
function myFunction(){
}
が最初から入っているため、消去して以下のスクリプトを貼り付けます。
function sendUrgentMailToChat() {
// プロパティサービスからWebhook URLを取得
var webhookUrl = PropertiesService.getScriptProperties().getProperty('WEBHOOK_URL');
if (!webhookUrl) {
Logger.log('Webhook URLがスクリプトプロパティに設定されていません。');
return;
}
// Gmailで「【お問い合わせ】」を含む未読メールを検索
var threads = GmailApp.search('is:unread subject:【お問い合わせ】');
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
if (!message.isUnread()) continue;
var subject = message.getSubject();
var body = message.getPlainBody();
var from = message.getFrom();
var msg = "【未対応】\nFrom: " + from + "\nSubject: " + subject + "\n\n" + body.substring(0, 200);
// チャットに投稿
var payload = JSON.stringify({ "text": msg });
var options = {
method: "POST",
contentType: "application/json",
payload: payload
};
UrlFetchApp.fetch(webhookUrl, options);
// メールを既読に
message.markRead();
}
// スレッド全体を既読化(必要なら)
threads[i].markRead();
}
}
スクリプトの説明
- Webhook URLをスクリプトプロパティから取得
-
var webhookUrl = PropertiesService.getScriptProperties().getProperty('WEBHOOK_URL');
- スクリプトプロパティに事前に登録したWebhook URLを取得します。
- Googleチャットへメッセージを送信するために使用します。
- 該当する未読メールスレッドを検索
-
var threads = GmailApp.search('is:unread subject:【お問い合わせ】');
- 「未読」かつ「件名に【お問い合わせ】を含む」メールスレッドを検索します。
- 新着のお問い合わせメールだけを対象にするための条件です。
- 各メッセージを処理してチャット用メッセージを作成
-
var msg = "【未対応】\nFrom: " + from + "\nSubject: " + subject + "\n\n" + body.substring(0, 200) + (body.length > 200 ? "..." : "");
- 差出人、件名、本文冒頭(最大200文字)を組み合わせて通知用メッセージを作成します。
- 長文は途中でカットされ、末尾に「…」を追加します。
- チャットにメッセージを送信
-
var payload = JSON.stringify({ "text": msg }); var options = { method: "POST", contentType: "application/json", payload: payload }; UrlFetchApp.fetch(webhookUrl, options);
- GoogleチャットのWebhook URLに対して、JSON形式のメッセージをPOSTします。
- Googleチャット上に通知が表示される仕組みです。
- メールを既読にして再通知を防止
-
message.markRead(); threads[i].markRead();
- 通知済みのメールを既読にすることで、次回の実行時に重複通知されないようにしています。
- メッセージ単体とスレッド全体の両方を既読にします。
スクリプト10行目
var threads = GmailApp.search('is:unread subject:【お問い合わせ】');
【お問い合わせ】 の部分を検知したい単語を自由に変更可能です。

スクリプトを書いたら、好きな名前を付けて保存します。
(例:「Gmai通知Bot」)

スクリプトの実行が完了すると、Gmailの未読メール(件名に「【お問い合わせ】」を含む)から内容を抽出し、Googleチャットに自動で通知されます。
チャットには以下のような情報が表示されます
- 差出人(From)
- 件名(Subject)
- 本文の冒頭部分(最大200文字程度)
また、チャットへの通知後は、該当のメールが未読から既読に変わります。
次のステップでは、これらの通知を定期的に自動実行するための「トリガー設定」を行います。
トリガー設定
GASの手動実行だけでは、毎回スクリプトを開いてボタンを押す必要があります。
そのため、「トリガー」を設定して、一定時間ごとに自動実行されるように設定します。
(Gmail受信のタイミングでGASを実行するトリガーがないため、時間で設定)

「時計アイコン」をクリックしてトリガーページを開きます。

「トリガーを追加」または「新しいトリガーを作成します」をクリックします。
(時間主導型を選択した例)

- 実行する関数を選択
-
- トリガーを実行した際に動かす関数を指定します。
- ここでは、スクリプト内で作成した
sendUrgentMailToChat
を選択します。
- 実行のデプロイを選択:
-
- どのバージョンのスクリプトを使用してトリガーを実行するかを選びます。
- 通常は「
Head
」を選択して、最新のバージョンを使用します。
- イベントのソースを選択
-
- トリガーのきっかけとなるイベントを指定します。
- 「時間主導型」を選ぶと、指定したスケジュールに従ってスクリプトが自動実行されます。
- 時間ベースのトリガーのタイプを選択
-
- 時間主導型のイベントソースを選択した場合に表示されます。
- ここでどのくらいの頻度で実行するかを設定します。
例えば:
- 時間ベースのタイマー →「5分おき」などの短い間隔
- 日付ベースのタイマー →「毎日〇時」など決まった時刻
問い合わせをすぐ把握したい場合は「5分おき」など短い間隔を選択すると便利です。

保存をクリックして、トリガー設定完了となります。

設定したトリガーは一覧で表示されます。

これで毎回決まった時間にスクリプトが実行され、該当するメールがチャットに通知されます。
注意事項
- 今回のGASではメール件名に【お問い合わせ】が含まれるものを通知対象としています。
必要に応じて検索条件を調整してください。 - 本文は最大200文字まで抜粋しています。長文の場合は「…」がつきます。
- 同じメールが何度もチャットに通知されないよう、処理済みメールは既読に設定しています。
- GASには「1日の実行回数制限」などもあるため、大量運用の場合は制限にご注意ください。
まとめ
毎日の業務でメールを1件ずつ確認するのは大変ですが、今回のようなGASを活用すれば、未対応の問い合わせメールをチャットに自動で通知できます。
重要なメールにすぐ気づける環境を整えることで、対応のスピードアップだけでなく、見落としによる機会損失も防ぐことができます。
できることから業務を自動化して、対応の遅れを防ぎ、業務のスピードや信頼性を高めていけるといいですね。
弊社では、Google Apps Script(GAS)を活用した業務効率化サポートのほか、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
ぜひお気軽にご相談ください。貴方の業務改善を全力でサポートいたします。
コメント