はじめに
メールに通知するよう設定していること多いですよね?
でも頻繁に確認していないし気づくのが遅くなってしまう…
ということでメールの内容をHangouts Chatに送るスクリプトを作成しました。
非常に簡単なものですし、汎用的なものになりますので色々応用できると思います。
今回はGsuiteアップデートブログを通知していきたいなと思います。
準備
・Gmail
・Hangouts Chat(以下チャット)
・Google Apps Script
webhookの設定
今回はwebhookという、何らかのイベントをきっかけにHTTPで通知する仕組みを使います。
通知を受けたいルームでwebhookの設定を開きます。
webhookの追加をクリックして追加するwebhookの名前を入力します。
アバターのURLは省略可能なので今回は省略します。
新しいwebhookが追加されました。
後で使いますのでクリップボードにコピーしてどこかに張り付けておいてください。
これでチャット側の設定は完了です。
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に本文が格納されていますので加工して使ってください。
まとめ
Gsuiteってすばらしい。