キッカケ
ある週の後半にサツマイモ掘りの日がありました。
サツマイモ掘りの日は、体操服+長靴で登園です。
しかし、天気予報を見ると週の後半は雨の予報で、雨で延期になっちゃうかな~などと親子で話をしていました。
その週の前半、いつも通り幼稚園へ送り、家で一息付くと iPhone の通知履歴の中から保育内容変更のメール通知が目に入りました。
📧 週後半に予定しておりましたサツマイモ堀りですが、雨天予報の為、明日に変更致します。
そうです。前日に、サツマイモ掘りの日程変更のメールが来ていたのです。
メールは自分と妻の両方に届くようになっていますが、2人共メールが埋もれてしまって見逃していました。
子どもは、普通の靴で体操服無しで登園してしまいました。
概要
フィルタ等でラベルを分けても埋もれがちなメールを Google Apps Script で定期的に検索し、LINE Notify で LINE グループに転送し、二重で通知を受け取るようにしました。ほとんど見ることのない大量に来るメールよりも LINE の方が目付きやすいからです。
システム構成
LINE Notify
https://notify-bot.line.me/ja/ からログインして、
マイページで通知を送りたい LINE グループ向けのトークンを発行します。
Google Apps Script
https://script.google.com からログインして、新規スクリプトを作成します。
const FROM_EMAIL_ADDRESS = '${検索対象のメールアドレス}'
const ENDPOINT = 'https://notify-api.line.me/api/notify'
const ACCESS_TOKEN = '${先程取得した LINE Notify のトークン}'
/**
* LINE Notify で通知を送る
*/
function postLineNotify(messages) {
return UrlFetchApp.fetch(ENDPOINT, {
method: 'post',
headers: {
Authorization: 'Bearer ' + ACCESS_TOKEN
},
payload: {
message: [''].concat(messages).join('\n')
}
})
}
/**
* エントリポイント
*/
function myFunction() {
// 時々メールが来るくらいなので最新5件のみを処理する
const threads = GmailApp.search(`from: ${FROM_EMAIL_ADDRESS}`, 0, 5)
threads.forEach(thread => {
const messages = thread.getMessages()
// 古い順に処理するので配列をリバースする.
messages.reverse().forEach(message => {
if (!message.isUnread()) {
// 既読であればスキップする.
return
}
const res = postLineNotify([
message.getDate().toLocaleString(),
message.getSubject(),
'',
message.getBody()
])
if (res.getResponseCode() === 200) {
// 通知を送ったら既読にする
message.markRead();
}
})
})
}
タイマートリガーの設定
Google Apps Script はトリガーを設定できます。
朝に気付ければ良いので、朝7時頃に通知を受け取るようにしています。
また、当日準備に慌てる可能性もあるので、夕方や夜にも通知を受け取るように何個かタイマーを設定しています。
結果
※テスト用に直接 LINE Notify を受け取るようになっていますが、
※実際は LINE グループに LINE Notify をメンバー追加して使用しています。
工夫したところ
- メール数はそんなに多くないので、検索個数を絞って無駄な処理をしないようにしました。
- 既読フラグを使って通知済みかどうかを判定し、無駄な通知は行わないようにしました。
まとめ
- LINE Notify は、手軽に LINE 通知が行えてとても使いやすい
- 見逃しが減った!
- 妻にも久々に喜ばれた!
参考リファレンス
https://notify-bot.line.me/doc/ja/
https://developers.google.com/apps-script/reference/gmail/gmail-app?hl=en
https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app?hl=en