16
18

More than 5 years have passed since last update.

GASを使ってGmailの内容をHangoutsChatに通知する

Posted at

はじめに

メールに通知するよう設定していること多いですよね?
でも頻繁に確認していないし気づくのが遅くなってしまう…
ということでメールの内容をHangouts Chatに送るスクリプトを作成しました。
非常に簡単なものですし、汎用的なものになりますので色々応用できると思います。
今回はGsuiteアップデートブログを通知していきたいなと思います。

準備

・Gmail
・Hangouts Chat(以下チャット)
・Google Apps Script

webhookの設定

今回はwebhookという、何らかのイベントをきっかけにHTTPで通知する仕組みを使います。
通知を受けたいルームでwebhookの設定を開きます。
image.png

webhookの追加をクリックして追加するwebhookの名前を入力します。
アバターのURLは省略可能なので今回は省略します。
image.png

新しいwebhookが追加されました。
後で使いますのでクリップボードにコピーしてどこかに張り付けておいてください。
image.png

これでチャット側の設定は完了です。

Google Apps Script

https://script.google.com/u/0/home/my
新しいプロジェクトを作成して下記スクリプトをはりつけてください。


function gsuiteUpdateBlog() {
  //対象のメールの件名
  var subject = 'G Suite アップデート情報';
  var mailMax = 500;
  var chatMessage;
  var threads = GmailApp.search(subject, 0, mailMax);
  var messages = GmailApp.getMessagesForThreads(threads);

  var url = 'クリップボードにコピーしたwebhookのURL';

  for(var i = 0;i < threads.length; i++){
    for(var t = 0;t < messages[i].length; t++){
      //メール本文取得
      //chatMessageを加工してメール本文から一部を抜き出して通知することも可能
      //chatMessage = messages[i][t].getPlainBody();
      chatMessage = 'Gsuite アップデートブログが更新されたよ!';

      var botMessage = { 'text' : chatMessage}
      var options = {
        'method': 'POST',
        'headers' : {
          'Content-Type': 'application/json; charset=UTF-8'
        },
        'payload':JSON.stringify(botMessage)
      }
      var result = UrlFetchApp.fetch(url, options);
    }
    threads[i].moveToTrash();
  }
}

※最初に実行すると権限の承認やスコープの承認があると思いますがすべて承認して進めてください。

大まかな流れとしては、以下となります。

1.メールの件名で検索
2.スレッドごと、メールごとにループ
3.メールごとにチャット通知
4.スレッドを削除

今回のサンプルではメールの件数だけ「Gsuite アップデートブログが更新されたよ!」という通知が送信されるようにしておりますが、Gsuite アップデートブログの本文を取得すると一度のチャットの最大文字数を超えるため本文の内容は送りませんでした。すみません。

実際は本文中のURLやタイトル等を取得して送ることになるかと思います。chatMessage = messages[i][t].getPlainBody();chatMessageに本文が格納されていますので加工して使ってください。

image.png
このように通知がきました。非常に簡単!

まとめ

Gsuiteってすばらしい。

16
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
18