大学から配信されているメールをGoogle Apps ScriptとLINE Notifyを使ってLINEに通知する

私が普段過ごしている大学では、大学から配布されているGmailアドレスに情報を配信するので、LINE NotifyとGAS(Google Apps Script)を使ってサクッと大学配信情報をLINEで通知するサービスを作ってみました。

手順

  • Line Notifyサービスにログインし、トークンを取得
  • GASでコーディング
  • トリガー設定

大まかにはこの手順を踏みます。

LineNotifyの準備

LINE Notifyの設定サイトから、LINEアカウントでログインして送信先のトークルームを選択しトークンを取得

 

トークンを取得したら、必ず控えておくこと

Google Apps Scriptの設定、構築

GASにアクセスし、新規のプロジェクトを作成し以下のコードをコピペし、必要な設定を入力

//2021 Kouki MATANO all rights reserved.
//THIS VERSION IS BETA. 学内向けのコードです。
var lineToken = “line_token”; //LINE Notifyのトークン
var fromAddress = ‘academic@example.ac.jp’; //LINE Notifyに通知するメールアドレス
var get_interval = 1; //n分前までの範囲で検索条件に該当するメールを取得する間隔(基本的にはトリガー周期と合わせる)
function notify_to_line() {
//クロール時間の処理関連
vartime = Math.floor(newDate().getTime() / 1000);
varget_timing = time – (60 * get_interval);
//メールのクロール条件(未開封メールの場合)
varsearch_items = ‘(‘ + fromAddress + ‘ is:unread’ + ‘ after:’+ get_timing + ‘)’;
//スターのついていないメールの場合
//var search_items = ‘(‘ + fromAddress + ‘ -is:starred’ + ‘ after:’+ get_timing + ‘)’;
//上記いずれかの使用しない方をコメントアウト、削除してください
//メールの取得と格納(未開封メール)
varmyThreads = GmailApp.search(search_items)
varmyMessages = GmailApp.getMessagesForThreads(myThreads)
for(variinmyMessages){
varstrDate = Utilities.formatDate( myMessages[i][0].getDate(), ‘Asia/Tokyo’, ‘M/d HH:mm’);
varstrSubject = myMessages[i][0].getSubject();
varstrMessage = myMessages[i][0].getPlainBody().slice(0,500);
send_to_Line(strDate,strSubject,strMessage);
myMessages[i][0].markRead();
//myMessages[i][0].star();
//開封、スターをつけるのいずれかをクロール条件と合わせて使用してください
//デフォルトは開封済み処理
}
}
function send_to_Line(strDate,strSubject,strMessage) {
varstrToken = lineToken;
varoptions =
{
“method” : “post”,
“payload” : “message=” + strDate + “\n 件名:” + strSubject + “\n 本文:” + strMessage,
“headers” : {“Authorization” : “Bearer “+ lineToken}
};
UrlFetchApp.fetch(“https://notify-api.line.me/api/notify”,options);
}

テストを便宜行ってください

トリガーの設定

トリガー欄から、トリガーを追加

設定内容は、実行する関数をnotify_to_lineに、実行を1分おきなど、必要に合わせて設定します。

以上で大学から配信されるメールをLINEで通知されるようにできました。