24
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gmailに来たメールをSlackに転送する

Posted at

Gmailの特定のメール(スレッド)をSlackに飛ばす

こちらの改変です。
ChatworkをSlackに置き換えてみました。

準備:SlackのIncoming Webhooks

  • 専用のチャンネルをつくります。
  • 「チャンネル設定」->「アプリを追加する」-> "Incoming Webhooks"を検索して追加します。
  • 発行されたURLをメモしておきます。

(参考)
【初心者向け】GASを使ってSlackへ自動通知

スクリプトを書く

こんな感じです。

function main() {
  //Slack
  const SLACK_WEBHOOK = "https://hooks.slack.com/services/xxxxxxx/...";
  const SLACK_POSTUSER = "POSTするユーザー名(任意)";

  //Gmailから特定条件のスレッドを検索しメールを取り出す
  var strTerms = 'is:unread "メール取得条件"';
  var myThreads = GmailApp.search(strTerms, 0, 50); //条件にマッチしたスレッドを取得
  var myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する→二次元配列で格納

  //各スレッド×メール
  for (var i = myMsgs.length - 1; i >= 0; i--) {
    var msgsInThread = myMsgs[i];
    for (var j = 0; j < msgsInThread.length; j++) {
      var msg = msgsInThread[j];

      //未読のみ
      if (msg.isUnread()) {
        //メールを既読にする
        msg.markRead();

        //メッセージ作成(絵文字も可)
        var msgBody = ":simple_smile:*" + msg.getSubject() + "*\n" +
                      msg.getFrom() + "\n\n" +
                      msg.getPlainBody().slice(0,512) + "\n\n" +
                      msg.getDate() + "\n";

        var msgJson = {
          "username": SLACK_POSTUSER,
          "text": msgBody
        };
        var payload = JSON.stringify(msgJson);

        //Slackに送る
        var options = {
          "method": "post",
          "contentType": "application/json",
          "payload": payload
        };
        
        UrlFetchApp.fetch(SLACK_WEBHOOK, options);        
      }
    }
  }
}

Slackメッセージは絵文字やマークダウンで装飾できます。
EMOJI CHEAT SHEET
メッセージの書式設定

トリガーに登録

あとはスクリプトをトリガーに登録しておけばOK。

24
28
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
24
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?