なんで作ろうと思ったか
今すぐ見なくてもいい通知メールがかなりある。受信トレイが汚れるのでできれば週末に全部をまとめた一覧表をぱっと確認したくなったため。
UI
処理フロー
- 週に1度タグ付けされたメールの取得
- 一覧にしてメール
ソース
function combineBoringEmails() {
//一週間の間のautoArchiveタグがついたメールの取得
const boringEmails = GmailApp.search('label:autoArchive newer_than:7d');
const messages = GmailApp.getMessagesForThreads(boringEmails);
//メールの一覧作成。Html。メールのリンクはhttps://mail.google.com/mail/u/0/#all/ + そのメールのID
const hyperLinks = messages.map(function(msg) {
return makeHtmlHyperLink(msg[0].getSubject(), 'https://mail.google.com/mail/u/0/#all/' + msg[0].getId());
})
const htmlBody = makeHtmlList(hyperLinks);
GmailApp.sendEmail('email@adress.gmail', 'メールまとめ', '', {htmlBody: htmlBody})
}
function makeHtmlHyperLink(str, url) {
return '<a href="' + url + '">' + str + '</a>';
}
function makeHtmlList(arr) {
return arr.reduce(function(acc, cur) {
return acc + '<li>' + cur + '</li>';
}, '<ol>') + '</ol>';
}
これを1週間トリガーで実行
あとがき
Gmail側のフィルタ例
from:(information OR noreply OR no-reply OR info@ OR notification)
重要なメールも混ざるので程々に。タグ付はGmail側でできるので便利。
スレッドがあるメールはうまく動かない。