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を取得します。

STEP
Googleチャットを開く

Googleチャットを開きます。

STEP
スペースを作成または開く

通知を受け取りたいチャットスペースを準備します。

すでにあるスペースでもOKです。

STEP
スペースの設定を開く

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

STEP
アプリと統合を選択

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

STEP
Webhookを追加

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

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

STEP
Webhook URLをコピー

発行された Webhook URLをコピーします。

後のGAS スクリプトで使用します。

GASの作成

先ほど取得した Webhook URL を使って、チャットに通知を送るスクリプトをGASで作成します。

STEP
Googleドライブにアクセス

はじめに、Googleドライブにアクセスします。

Google Apps Scriptのリンクからも直接トップページにアクセスできます。)

STEP
左上の「+新規」ボタンをクリック

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

STEP
「その他」→「Google Apps Script」を選択

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

STEP
プロジェクトの設定を開く

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

STEP
Webhook URL をスクリプトプロパティに設定

プロパティ名(例: WEBHOOK_URL)とコピーしたURLを値に入力します。

入力したら、「スクリプトプロパティを保存」を押します。

STEP
GASスクリプトの作成

左メニューからエディタを選択します。

コード入力欄に

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:【お問い合わせ】');

【お問い合わせ】 の部分を検知したい単語を自由に変更可能です。

STEP
スクリプトを保存

スクリプトを書いたら、好きな名前を付けて保存します。

(例:「Gmai通知Bot」)

STEP
スクリプトを実行

実行ボタンを押して動作を確認します。

初めてそのスクリプトを実行する場合は権限の承認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
未読の【お問い合わせ】メールをチャットに通知

スクリプトの実行が完了すると、Gmailの未読メール(件名に「【お問い合わせ】」を含む)から内容を抽出し、Googleチャットに自動で通知されます。

チャットには以下のような情報が表示されます

  • 差出人(From)
  • 件名(Subject)
  • 本文の冒頭部分(最大200文字程度)

また、チャットへの通知後は、該当のメールが未読から既読に変わります。

次のステップでは、これらの通知を定期的に自動実行するための「トリガー設定」を行います。

トリガー設定

GASの手動実行だけでは、毎回スクリプトを開いてボタンを押す必要があります。

そのため、「トリガー」を設定して、一定時間ごとに自動実行されるように設定します。

(Gmail受信のタイミングでGASを実行するトリガーがないため、時間で設定)

STEP
トリガーページを開く

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

STEP
「トリガーを追加」をクリック

トリガーを追加」または「新しいトリガーを作成します」をクリックします。

STEP
トリガーを実行するイベントを設定

(時間主導型を選択した例)

実行する関数を選択
  • トリガーを実行した際に動かす関数を指定します。
  • ここでは、スクリプト内で作成した sendUrgentMailToChat を選択します。
実行のデプロイを選択:
  • どのバージョンのスクリプトを使用してトリガーを実行するかを選びます。
  • 通常は「Head」を選択して、最新のバージョンを使用します。
イベントのソースを選択
  • トリガーのきっかけとなるイベントを指定します。
  • 「時間主導型」を選ぶと、指定したスケジュールに従ってスクリプトが自動実行されます。
時間ベースのトリガーのタイプを選択
  • 時間主導型のイベントソースを選択した場合に表示されます。
  • ここでどのくらいの頻度で実行するかを設定します。

例えば:

  • 時間ベースのタイマー →「5分おき」などの短い間隔
  • 日付ベースのタイマー →「毎日〇時」など決まった時刻

問い合わせをすぐ把握したい場合は「5分おき」など短い間隔を選択すると便利です。

STEP
トリガーを保存

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

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

STEP
設定完了

これで毎回決まった時間にスクリプトが実行され、該当するメールがチャットに通知されます。

注意事項

  • 今回のGASではメール件名に【お問い合わせ】が含まれるものを通知対象としています。
    必要に応じて検索条件を調整してください。
  • 本文は最大200文字まで抜粋しています。長文の場合は「…」がつきます。
  • 同じメールが何度もチャットに通知されないよう、処理済みメールは既読に設定しています。
  • GASには「1日の実行回数制限」などもあるため、大量運用の場合は制限にご注意ください。

まとめ

毎日の業務でメールを1件ずつ確認するのは大変ですが、今回のようなGASを活用すれば、未対応の問い合わせメールをチャットに自動で通知できます。

重要なメールにすぐ気づける環境を整えることで、対応のスピードアップだけでなく、見落としによる機会損失も防ぐことができます。

できることから業務を自動化して、対応の遅れを防ぎ、業務のスピードや信頼性を高めていけるといいですね。

弊社では、Google Apps Script(GAS)を活用した業務効率化サポートのほか、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

ぜひお気軽にご相談ください。貴方の業務改善を全力でサポートいたします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次