【非エンジニアでも簡単】大学メールをLINEに通知する


メールなんて見ねえよという大学生多いのではないでしょうか?自分も全くメールを確認しないせいで大学の情報を確認するのが遅れるなんてこと結構ありました。LINEに通知できたらなと思い立ち今回作成することにしました。非エンジニアでも実装できるようにハンズオン形式で解説します。*OutlookメールをGmailに転送してLINEに通知します。転送先のGmailが受け取ったメール全てをLINEに通知します。

OutlookからGmailに転送する

今回はブラウザ版のOutlookを開きます。

「Outlookのすべての設定を表示」をクリック

「転送を有効にする」にチェックを入れ、メールの転送先に自分のメールアドレスを記入してください。*「転送されたメッセージのコピーを保持する」にチェックを入れておかないとOutlookに履歴が残らないので注意

LINEBotのセットアップ

以下のサイトを開きます。

「コンソール」をクリックしてご自身のLINEアカウントでログインしましょう。

「Provider name」を決めましょう。大学メールなどとしておきましょう。

ログインできましたら「Create a Messanging API Channel」をクリックしてください。

LINEBotの各種設定があります。Channel iconやChannel nameなど様々な記入箇所がありますが好きな画像、名前でOKです。LINEBotのアイコン画像、名前になります。

記入できましたら「Create」をクリック

作成できましたらLINEBotを友達追加しましょう。QRコードを読み込んでください。

プログラムを動かすのに必要な「access token」を取得するため「issue」をクリックします。長い文字列がでてくると思いますので控えておいてください。

GoogleAppsScriptにプログラムを記述

GoogleChromeを開きGoogleドライブをクリックしてください。

「新規」をクリックしてください。

「その他」→ 「GoogleAppsScript」をクリックしてください。

以下のような画面が出てくると思います。現在記述されているコードを消して下記のコードを貼り付けてください。先程LINE Developersで取得した長い文字列(access token)と転送先Gmailのメールアドレスは自分のものに変更してください。

gmail.gs

var LINE_ACCESS_TOKEN = "<取得したaccess token>";
var query = "<転送先Gmailのメールアドレス>";

// 条件を満たすGmail検索
function searchGmail(){
  const date = new Date();
  const unixTime = date.getTime();
  const now = Math.floor(unixTime/1000);
  const term = now - 300;
  const strTerms = 'after:'+ term;
  const myThreads = GmailApp.search(strTerms, 0, 30);
  const myMessages = GmailApp.getMessagesForThreads(myThreads);
  getGmail(myMessages);
}

// 検索したGmailのメッセージを取得
function getGmail(myMessages) {
  for(var i in myMessages){
    for(var j in myMessages[i]){
        var strDate = myMessages[i][j].getDate();
        var strmsg = Utilities.formatDate(strDate, 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss')+"\n";
        strmsg += myMessages[i][j].getSubject() + "\n";
        // メールの本文全て受け取るなら.slice(0,200)を消してください
        strmsg += myMessages[i][j].getPlainBody().slice(0,200);
        sendLineMessage(strmsg);
    }
  }
}

//LINEにメッセージを送信する
function sendLineMessage(msg) {
  var headers = {
    "Authorization": "Bearer " + LINE_ACCESS_TOKEN,
    "Content-Type": "application/json"
  };
  var data = {
    'messages': [
            {
                "type": "text",
                "text": msg,
            }
    ]
  };
  var options = {
    "headers": headers,
    "method": "post",
    "payload": JSON.stringify(data),
  };
  var response = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/broadcast", options);
}

コードを貼り付けることができたら保存ボタンをクリックし「searchGmail」と表示されていることを確認してください。

次にプログラムを実行するトリガーを設定します。

実行する関数を「searchGmail」に設定し、エラー通知設定に関してはどちらでも構いません。

5分ベースのタイマーになるように設定します。完了したら「保存」をクリックします。

保存をクリックするとGoogleログインを求められログインすると以下のような画面が出てくる可能性があります。その場合は「詳細」をクリックします。

「安全ではないページに移動」をクリックします。

GoogleAppsScriptがGoogleアカウントへのアクセスを許可します。「許可」をクリックします。

以上で大学メールをLINEに通知されることを確認してみてください。何かわからないことがあれば是非ご質問ください。