Gmailの特定のメール(スレッド)をSlackに飛ばす
こちらの改変です。
ChatworkをSlackに置き換えてみました。
準備:SlackのIncoming Webhooks
- 専用のチャンネルをつくります。
- 「チャンネル設定」->「アプリを追加する」-> "Incoming Webhooks"を検索して追加します。
- 発行されたURLをメモしておきます。
スクリプトを書く
こんな感じです。
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。