目的は、とにかくお金かけたくないってことで。
先に結論から言うと、
- Gmail(対象フォルダ用意する)受信して、
- GAS(Google Apps Script)で、上記にSlackへpostする
以上、これだけです。
具体的にやりたいこと
1. 特定のメール(レポートメールとか)をgmailで定期受信して(※使っているツールの都合もありメール通知しか機能がないのでここは変えられない )
2. 上記をデイリー
で
3. Slackの特定のチャンネルに通知
どう実現したか
- これはGmailの設定の話なので割愛(下準備)
- GASのtriggerを使って定期実行
- Slackの特定のチャンネルに通知するGASを用意
1. 下準備
- incoming webhook url取得
- 通知したいメールフォルダ(ラベル、フィルタの設定含む)を用意 ※こちらは説明割愛
2. GASのtriggerを使って定期実行

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。
を用いたやり方も散見されたが、これだと、パブリックチャンネルにしか通知できない。。。。
※やりたいのはプライベートチャンネルへの通知
ってことで、今回のやり方に着地した結果です。