34
Help us understand the problem. What are the problem?

posted at

updated at

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

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

GmailNotify.png

OutlookからGmailに転送する

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

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

スクリーンショット 2022-01-13 1.21.56.png

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

image.png

LINEBotのセットアップ

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

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

スクリーンショット 2022-01-13 15.22.02.png

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

スクリーンショット 2022-01-13 2.53.53.png

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

スクリーンショット 2022-01-13 2.54.58.png

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

スクリーンショット 2022-01-13 2.57.08.png

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

スクリーンショット 2022-01-13 15.25.21.png

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

スクリーンショット 2022-01-13 15.27.13.png

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

スクリーンショット 2022-01-13 15.27.31.png

GoogleAppsScriptにプログラムを記述

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

スクリーンショット 2022-01-13 1.46.26.png

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

スクリーンショット 2022-01-13 1.50.31.png

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

スクリーンショット 2022-01-13 1.53.02.png

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

スクリーンショット 2022-01-13 1.57.41.png

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);
}

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

スクリーンショット 2022-01-13 2.15.40.png

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

スクリーンショット 2022-01-13 2.23.55.png

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

スクリーンショット 2022-01-13 2.30.15.png

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

スクリーンショット 2022-01-13 2.29.06.png

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

スクリーンショット 2022-01-13 2.36.12.png

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

スクリーンショット 2022-01-13 2.39.05.png

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

スクリーンショット 2022-01-13 2.41.52.png

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
34
Help us understand the problem. What are the problem?