LoginSignup
0
1

More than 1 year has passed since last update.

Gmailのメール本文から判断してGoogleチャットに転送

Last updated at Posted at 2021-09-14

背景

お客様に導入したシステムの運用保守しています。システム監視のツール
からアラートメールがよく飛んできます。アラートレベルが、軽度障害、重度障害、またお客様のシステムによっても対応方法が異なったりします。それぞれのアラートレベルなどによって、メールを振り分け、メールの本文をGoogleチャットに転送することをしたいので、その方法について記事を書いていきます。ポイントは、同じメールアドレスからアラートがくるのですが、軽度のアラートか重度かは、メール本文にしか違いが記載されていないので、それをどう情報を取得してチャットに転送するかです。

必要情報

①取得したいメールに独自のラベルがついている。黄色で囲まれてるやつなど。(コード内のラベル名のやつ)
image.png
②転送したい先のグループチャットのWebhook管理からリンクを取得する。(コード内の任意のWebhook)
image.png

コードの流れ

1 :合致するラベル名のスレッドを取得
(スレッドはメールとは別。スレッド内に複数のメールがあることも。)
2: 1で取得したスレッドで、未読のメールがあるスレッドのメールを取得し、配列に格納
3: for文繰り返し処理で、一つ一つのメールを message 変数に格納してからメール本文を取得し(Body変数)、本文に記載されているアラートレベルを取得(level変数)
4: level変数が、average など任意のストリングであれば転送したいチャットにメール本文を転送。転送したらメールを既読にする。

全体のコード

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('シート1');

function myFunction() {
  var threads = GmailApp.getUserLabelByName('G-Star_Zabbix').getThreads();
  var url = "https://chat.googleapis.com/v1/spaces/AAAAUW3Kp_U/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=uySHzlczWP7MIEGi2nyVEzh8RQtwWaQWqI0HnxeRImM%3D";
  console.log(threads);
  var messages = [];
  for(i=0; i < threads.length; i++){
    messages = threads[i].getMessages();
    for(j=0; j < messages.length; j++){
      var message = messages[j];
      var messageId = messages[j].getId();
      if( message.isUnread()){
        console.log(message);
        var Body = message.getPlainBody();
        var Body2 = {'text': Body};
        console.log(Body);
        var level = Body.match(/深刻度: (.*)/)
        console.log(level);

        var options ={
          'method': 'POST',
          'headers': {
          'Content-Type': 'application/json; charset=UTF-8'
        },
        'payload':JSON.stringify(Body2)
      };
      if(level != null && level[1] == 'average'){
        UrlFetchApp.fetch(url,options);
        message.markRead();
      }

    }
   }

  }

}

まとめ

テストチャットでいけたんで大丈夫だと思いますが、、、何かございましたらお伝えくださいm(__)m

0
1
0

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
0
1