LoginSignup
6
8

More than 5 years have passed since last update.

無料でSlack(プライベートチャンネル含む)へGmailを通知する(slack + mail)

Last updated at Posted at 2017-08-13

目的は、とにかくお金かけたくないってことで。

先に結論から言うと、

  1. Gmail(対象フォルダ用意する)受信して、
  2. GAS(Google Apps Script)で、上記にSlackへpostする

以上、これだけです。

具体的にやりたいこと

 1. 特定のメール(レポートメールとか)をgmailで定期受信して(※使っているツールの都合もありメール通知しか機能がないのでここは変えられない :cry:
 2. 上記をデイリー
 3. Slackの特定のチャンネルに通知

どう実現したか

 
1. これはGmailの設定の話なので割愛(下準備)
2. GASのtriggerを使って定期実行
3. Slackの特定のチャンネルに通知するGASを用意

1. 下準備

  • incoming webhook url取得
  • 通知したいメールフォルダ(ラベル、フィルタの設定含む)を用意 ※こちらは説明割愛

2. GASのtriggerを使って定期実行

スクリーンショット 2017-08-13 12.07.21.png

3. google apps script準備

function sendEmailsToSlack() {
    // target_label
    var label = GmailApp.getUserLabelByName('target_label');
    var messages = [];
    var threads = label.getThreads();

    for (var i = 0; i < threads.length; i++) {
      messages = messages.concat(threads[i].getMessages())
    }

    var message = messages[messages.length - 1];
    Logger.log(message);

    var output = '\n' + message.getPlainBody();
    Logger.log(output);

    // payload is customizable if u need
    var today = new Date();
    var payload = {
        "username": "hogehoge",
        "attachments": [
          {
            "color": "#36a64f",
            "author_link": "https://author_link",
            "title": "Something like title",
            "title_link": "Something like title_link",
            "fields": [
              {
                "value": output,
                "short": false
              }
            ],
          }
        ],
        "channel" : "#target_channel", if send public channel
//            "channel" : "@target_person", if send to person
        "icon_emoji": ":cart:"
    };

    var options = {
        'method' : 'post',
        'payload' : Utilities.jsonStringify(payload),
    };

    var webhookUrl = 'https://hooks.slack.com/services/xxxx/hogehoge/HOGEhoge';
    UrlFetchApp.fetch(webhookUrl, options);
}

以上(冗長な部分ありますが、ご勘弁)

調査談義

最初Slackとメールの連携ってことで調べると、 出てくるのは、

に関することばかりで、無料で使いたいのでsomosomoNG。

また、
https://zapier.com/

を用いたやり方も散見されたが、これだと、パブリックチャンネルにしか通知できない。。。。
※やりたいのはプライベートチャンネルへの通知

ってことで、今回のやり方に着地した結果です。

6
8
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
6
8