公開日:12/31/2021  更新日:3/26/2022

  • twitter
  • facebook
  • line

GASとLINENotifyを使ってGmailのリマインドメールをLINEに通知してみた

はじめに

筆者は社会人サークルに所属しており、Gmailで出席のリマインドメールがイベント前日に送られてくる。
しかし、Gmailを見る習慣がないので度々見落としてしまう。
なので、Gmailが届いたらLineに通知するプログラムを作ろうと考えた。
これで予定ブッチをなんとか回避したい!

事前準備

GAS (Google Apps Script)

Google Apps Scriptとは、主にGoogleのサービスを自動化するスクリプト言語。
スプレッドシートの操作を自動化したりGmailからメールを取得が簡単に出来る。
使い方は簡単。Googleアカウントがあればログインしてスプレッドシートからツールバーの拡張機能>Apps Script を押下する。
function の中に実行したいソースを記述していく。

gasイメージ図

LINENotify

LINENotify のサイト (https://notify-bot.line.me/ja/ )から Lineに登録しているメールアドレスとパスワードでログイン。
そして、マイページのトークンを発行するボタンからトークンを取得。
通知を送信するトークルームを選択 では自分と1:1を選択。発行したトークンは必ずメモっておく。

LineNotifyトークン追加

要件

・【スケジュールアラーム通知】 という件名でメールが送られてくる
・ 1日前までに届いた新規メールから上記件名のメールが存在すればLine通知する(毎朝実行が前提)
・ Lineの通知内容はメール本文とするが、そのままだと長文なので不要部分はトリミングする

コード

以下の関数を Apps Script のトリガー追加より、時間主導型で指定時間帯に日時で実行されるように設定する。

function sendToLineFromGmail() {

  //1日前の日時を取得
  const d = new Date();
  d.setDate(d.getDate()-1);
  const y = d.getFullYear();
  const mon = d.getMonth() + 1;
  const d2 = d.getDate();
  const day = y+"/"+mon+"/"+d2;
 
  // LINENotifyから取得したトークンを設定  
  let token = "XXXXXXXXXXXXXXXXXXXXXXX"
  let url  = "https://notify-api.line.me/api/notify"
  let options = {
    "method" : "post",
    "headers" : {
    "Authorization" : "Bearer "+ token
    },
    "payload" : {
    "message" : ''
    }
  }

  //Gmailでメール検索に使うクエリを設定  
  const query = 'from:XXX@XXXXXXX subject:スケジュールアラーム通知 after:'+day;  
  //メールリストを取得  
  const threads = GmailApp.search(query);
  //リストからメールを1件ずつループで確認  
  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
       //メール内容取得  
      const body = message.getPlainBody();
       //メール内容に含まれる「イベント」前までと「集合」の文字以下をsliceでトリミングする  
       options.payload.message = body.slice(body.indexOf('イベント'),body.indexOf('- 集合'))
     //LINEに通知
       UrlFetchApp.fetch(url, options)
    });
  });
}

注意

初回実行時には以下の警告エラーが出る可能性がある。

このプロジェクトを実行するには、ご利用の Google アカウントへのアクアセスを許可する必要があります。再試行して、許可してください。

その際には、GmailとLineNotifyへのアクセスを許可してあげれば問題ない。
下記の画面などが出た場合は詳細ボタンを押下して安全でないページに移動する。

権限エラー

戻る