Google Apps Script ✕ Line Notifyで子どもの習い事入退室通知を一括管理

# はじめに

息子が小学生になり、一人で習い事に行くようになってから、彼の「安全を確認」することは私にとって非常に大切になりました。子どもの習い事への入退室を知らせる通知は、まさに安心に直結しています。しかし、息子のある習い事からの通知はGmailで届くのです。私はこれがとても不便だとずっと思っていたのです。


私たちの日常は、数え切れないほどのメールや通知にあふれています。残念ながら、日々の忙しさの中でGmailの通知を見逃すことはよくあります。重要な情報であるにも関わらず、メールボックスの中に埋もれてしまうのです。皆さんのお宅ではどうでしょうか？
この問題を解決し、子どもの習い事の入退室の情報を確実に把握するための効果的な方法として、LINEの活用を考えました。

この記事では、なぜLINEを活用することが有効なのか、そしてその具体的な方法を紹介します。親として、子どもの安全を守るために、私たちができる工夫を共有したいと思います。

# 問題提起


子どもの安全に関する情報の共有は、家族全員にとって重要です。我が家の場合、夫はほとんどGmailに届く習い事入退室の通知をチェックしません。もし私だけの問題であれば、Gmailの設定を変更して確実に通知を受け取るようにすることもできたでしょう。しかし、夫も含めて家族全員が情報を共有することが必要です。

# LINEを利用するメリット

ここで重要な役割を果たすのがLINEです。夫も頻繁に使用するLINEでは、通知を見落とすことがほとんどありません。そこで私たちは、Gmailに入退室の通知が来たら、それを私と夫が参加するLINEグループに自動転送するように設定しました。

よく考えてみると、習い事の通知だけでなく、小学校の正門通過通知も含め、子どもに関する多くの情報がGmailに届きます。他の習い事に関する通知も、習い事ごとの専用アプリで受け取っていましたが、実はGmailにも通知が来ていることに気づきました。これらの通知を全てLINEで一括して確認できれば、管理がずっと楽になると考えたのです。

この方法により、夫も私も、子どもが小学校や習い事の施設に安全に到着したこと、そして無事に帰宅する準備ができたことを色んなアプリを確認することなく、LINEでリアルタイムに知ることができるようになりました。これにより、子どもの安全に対する不安が大きく軽減されました。

# 具体的な方法
では、具体的にはどうやってGmailの通知をLINEに転送するのでしょうか？このプロセスは意外と簡単で、以下のステップで実現できます。

## １．LINE Notify からアクセストークンを発行:

まずは、PCでLINE Notifyにアクセスし、アクセストークンを発行します。このトークンは、Gmailの通知をLINEに送るための「鍵」のようなものです。ウェブサイトの指示に従えば、数分で完了します。

## ２．Google Apps Scriptでプログラムを作成:
次に、Google Apps Scriptを使って通知転送用のプログラムを作ります。難しそうですが、実際はほんの数ステップで完了します。必要なコードはインターネット上にもたくさん例があり、コピーアンドペーストで簡単に導入できます。私も以下でコードを載せていますので、それをコピペですぐに使えます。

##３．変更する項目とプログラムの実行:
最後に、プログラムにアクセストークンなど必要な情報を入力して実行します。これで、設定したGmail通知がLINEグループに自動的に送信されるようになります。

「LINE NotifyやGoogle Apps Scriptって何？難しそう…」と思われるかもしれません。でも、心配はいりません。テクニカルな知識がなくても、簡単に設定できます。一度設定すれば、自動で運用されるので、日々の手間もかかりません。

# 詳細な設定方法

## 1.LINE Notifyでアクセストークンを取得
### (1) PCでLINE Notifyのウェブサイトにアクセスします。
[LINE Notify](https://notify-bot.line.me/ja/)


### (2) QRコードを読み取って、LINE Notify を友達に追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/3d6f9b0f-4dc6-e8c6-4578-e69ff09590a8.png)


###(3)LINEアカウントでログインした後、「トークンを発行する」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/33c1c531-bdec-2602-f22d-d088d4def1c8.png)


(4)発行するトークンの名前を入力し、通知を受け取りたいLINEグループを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/d82b125a-087d-4b00-b995-ca13d49125af.png)


(5)「発行する」をおすと、トークンが生成されるので、これをコピーしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/851234fa-8f4f-5467-3f27-8ea100683923.png)

以上でトークンの発行は完了です。

## 2.Google Apps Scriptを使用してスクリプトを作成
### (1)Google Apps Scriptを開始:

Googleドライブにアクセスし、「Google Apps Script」を選択します。

新しいスクリプトエディタが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/3da290ad-94cc-1e3d-e2ff-4674d2522445.png)
画像


（２）スクリプトの入力:

ここに、Gmailの通知をLINEに転送するためのスクリプトを入力します。基本的なスクリプトはインターネット上で見つけることができますし、私の書いたスクリプトをコピー・アンド・ペーストで大丈夫です。

```Javascript
function sendNotificationForUnreadMessages() {
  var accessToken = '***************'; // LINE Notifyのアクセストークンをここに置き換える
  var labelName = 'ラベル名'; // 通知を受けたいGmailのラベル名
  var searchQuery = 'label:' + labelName + ' is:unread'; // ラベルと未読の条件を指定
  var threads = GmailApp.search(searchQuery); // 検索クエリに基づいてスレッドを取得
  var messages = GmailApp.getMessagesForThreads(threads); // スレッド内のメッセージを取得

  for (var i = 0; i < messages.length; i++) {
    for (var j = 0; j < messages[i].length; j++) {
      var message = messages[i][j];
      if (!message.isUnread()) continue; // 念のため未読のメッセージのみを確認（この行は基本的に不要）

      var subject = message.getSubject();
      var bodyText = message.getPlainBody();
      var snippet = bodyText.substring(0, 70); // 本文の最初の70文字を取得

      // LINE Notifyに送信するメッセージを準備
      var payload = {
        'message': '新しいメール: ' + subject + '\n' + snippet
      };

      // LINE Notifyにメッセージを送信するためのオプションを設定
      var options = {
        'method': 'post',
        'payload': payload,
        'headers': {'Authorization': 'Bearer ' + accessToken}
      };

      // LINE Notify APIを呼び出して通知を送信
      UrlFetchApp.fetch('https://notify-api.line.me/api/notify', options);

      // 処理したメッセージを既読にする
      message.markRead();
    }
  }
}


```
このスクリプトは、Gmailで特定のラベルが付けられた未読メールを検索し、その内容をLINEに通知する機能を持っています。

## ３．個人で変更する項目とプログラムの実行:
### （１）個人で設定が変更が必要な項目:

・アクセストークンの設定: スクリプトの"************"のところに、LINE Notifyから取得したアクセストークンを含めます。
```Javascript
 var accessToken = '**************'; 
```
・メールの条件設定: LINEで通知するメールの条件を設定します。私の場合は、特定のラベルが付けられたメールが来たらLINEに通知するようにしています。'ラベル名'のところに自分が通知したいラベル名を記入します。
```Javascript
 var labelName = 'ラベル名'; // 通知を受けたいGmailのラベル名
 ```
 
 ### (２）プログラムの実行:

・プログラムの保存：作成したプログラムを保存します。画面上部にある「名前を付けて保存」を選択し、プログラムにお好みの名前を付けます。

・プログラムの実行：保存後、エディタ上部のドロップダウンメニュー「関数を選択」から「sendNotification」を選択します。
右隣にある実行ボタン（▶︎マーク）をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/04534d57-9595-1ef0-076c-8d054e21672f.png)

初めての実行時には、Googleからの許可を求められます。画面に表示される警告に惑わされず、「詳細」をクリックし、「（安全ではないページへ）移動」を選択して進んでください。
続いて表示される画面で、プログラムに必要な権限を許可します。

・プログラムの実行条件（トリガー）の設定:
スクリプトエディタの左上にある時計マークのアイコンをクリックし、「トリガー」を選択します。

画面右下にある「＋トリガーを追加」をクリックします。

「実行する関数を選択」で「sendNotification」を選びます。

「イベントのソースを選択」では「時間主導型」を選択します。

「時間ベースのトリガータイプを選択」で「分ベースのタイマー」を選びます。

「時間の感覚を選択（分）」で「1分おき」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3686020/0cafa7dc-6791-a6ff-fe51-d874eeaa98f3.png)

この設定により、作成したプログラムは1分ごとに実行され、Gmailに新しい通知があった場合、それをLINEに転送します。

これで、指定した条件の新着メールが届くたびに、通知が届くようになります。はじめは難しく思うかもしれませんが、一度設定しておけばとても便利なので、みなさんもぜひチャレンジしてみてください。

わからないことがあれば、コメントで教えてください！