39
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LINE DC Advent Calendar 2021 (クリスマスプレゼント付き)Advent Calendar 2021

Day 24

もう悲しい思いはさせない!幼稚園からの連絡メールの見逃しを LINE Notify で解決した話

Last updated at Posted at 2021-12-23

キッカケ

ある週の後半にサツマイモ掘りの日がありました。
サツマイモ掘りの日は、体操服+長靴で登園です。

しかし、天気予報を見ると週の後半は雨の予報で、雨で延期になっちゃうかな~などと親子で話をしていました。

その週の前半、いつも通り幼稚園へ送り、家で一息付くと iPhone の通知履歴の中から保育内容変更のメール通知が目に入りました。

📧 週後半に予定しておりましたサツマイモ堀りですが、雨天予報の為、明日に変更致します。

そうです。前日に、サツマイモ掘りの日程変更のメールが来ていたのです。

メールは自分と妻の両方に届くようになっていますが、2人共メールが埋もれてしまって見逃していました。
子どもは、普通の靴で体操服無しで登園してしまいました。

概要

フィルタ等でラベルを分けても埋もれがちなメールを Google Apps Script で定期的に検索し、LINE Notify で LINE グループに転送し、二重で通知を受け取るようにしました。ほとんど見ることのない大量に来るメールよりも LINE の方が目付きやすいからです。

システム構成

image.png

LINE Notify

https://notify-bot.line.me/ja/ からログインして、
マイページで通知を送りたい LINE グループ向けのトークンを発行します。

20211223221337.png
20211223221843.png

Google Apps Script

https://script.google.com からログインして、新規スクリプトを作成します。

20211223222308.png

コード.gs
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時頃に通知を受け取るようにしています。
また、当日準備に慌てる可能性もあるので、夕方や夜にも通知を受け取るように何個かタイマーを設定しています。

結果

20211223223346.png

※テスト用に直接 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

39
11
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
39
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?