備忘録と日記

備忘録・日記としていろいろ残していきます

Gmailのゼミ開始メールをLINEで受け取る【Google App Scripts, LINE Notify】

参考サイト

【GAS】特定のGmailをLINEに転送する方法(GmailとLINEの連携) | Googleスプレッドシート 完全攻略

notify-bot.line.me

公式ドキュメント

developers.google.com

実際のコード

アクセストークンは伏せ字にしてます。

var LINE_NOTIFY_TOKEN = "**********";
//未読を対象
//var searchCondition = 'is:unread';
var query = "subject:ゼミへの招待, is:unread";


//メールをチェックし条件に該当するメールをLINEに通知する
function getMail(){

  //指定した条件でスレッドを検索して取得 
  var myThreads = GmailApp.search(query, 0, 10);
  
  //スレッドからメールを取得し二次元配列に格納
  var myMessages = GmailApp.getMessagesForThreads(myThreads);
  
 
  for(var i in myMessages){
    j = myMessages[i].length - 1;
    var strDate = myMessages[i][j].getDate();
    var strmsg = Utilities.formatDate(myMessages[i][j].getDate(), 'Asia/Tokyo', 'yyyy-MM-dd HH:mm:ss')+"\n"; //タイムスタンプ
    strmsg += myMessages[i][j].getSubject() + "\n";  //Subject 
    strmsg += myMessages[i][j].getPlainBody().slice(0,300);  //本文の先頭から300文字
    
    //LINEにメッセージを送信
    sendLineMessage(strmsg);

    //処理したメッセージに既読をつける
    myMessages[i][j].getThread().markRead();
    
  }
}


//LINEにメッセージを送信する
function sendLineMessage(msg) {
  var response = UrlFetchApp.fetch("https://notify-api.line.me/api/notify", {
    "method": "post",
    "headers": {
      "Authorization": "Bearer " + LINE_NOTIFY_TOKEN
    },
    "payload": {
      "message": msg
    }
  });
}