38
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【プログラミング知識0でもできる!】Gmailで受信したメールをLINEに通知させる方法

Posted at

概要

メールが煩雑化し、大事なメールが埋もれてしまうことがあり、日常的に頻繁に利用するLINEであれば見逃すことはないのでは?と思い実装してみました。
非常に多く参考となる記事があったため、それを参考にしながら自分なりにまとめてみました。

使用するツール

・LINE(通知を受け取るグループをあらかじめ作成しておくと◎)

・LINE Notify:LINEのトーク画面に自動で通知を飛ばすことができるサービス

・GAS(Google Apps Script):JavaScriptがベースとなるGoogleが提供するプログラミング言語

手順

(1)Google Chromeを開き、画面左上の「アプリ」から「Googleドライブ」を選択する

(2)ドライブ画面の左上にある「+新規」をクリックし、下記の手順でGoogle Apps Scriptを選択する

7851854A-86A4-4C8E-9D6F-EEB480A29235_1_105_c.jpeg

(3)デフォルトでプロジェクト名が「無名のプロジェクト」となっているので、任意のプロジェクト名に修正する

(4)下記のコードをコピペする(コピペ後この画面は開きっぱなしで!)

・1行目にはこの後に取得するトークンを貼り付ける

・2行目のqueryには今回LINEに通知を送るときの条件を記述する

例)fromの@以下が「@gmail.com」のメールを通知する

⇒”from:@gmail.com”

例)件名(subject)が「お知らせ」のメールを通知する

⇒”subject:お知らせ”

var LINE_NOTIFY_TOKEN = "取得したトークンを記載";
var query = "from:gmail.com";
//queryには条件を記述
//今回の場合はfromが「@gmail.com」のメールが届くように設定されている

//メールをチェックし条件に該当するメールをLINEに通知する
function getMail(){
 
  //指定した条件でスレッドを検索して取得 
  var myThreads = GmailApp.search(query, 0, 10);
  
  //スレッドからメールを取得し二次元配列に格納
  var myMessages = GmailApp.getMessagesForThreads(myThreads);
  
 
  for(var i in myMessages){
    for(var j in myMessages[i]){
 
      //スターがないメッセージのみ処理   
      if(!myMessages[i][j].isStarred()){ 
        
        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,200);//本文の先頭から200文字
        
        //LINEにメッセージを送信
        sendLineMessage(strmsg);
 
        //処理済みのメッセージをスターをつける
        myMessages[i][j].star(); 
      }
    }
  }
}
 
 
//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
    }
  });
}

(5)新規タブでhttps://notify-bot.line.me/ja/を開く

(6)右上の「ログイン」から自分のLINEアカウントにログインする

(7)ログイン後、アカウント名に切り替わるので右上のアカウント名をクリックし「マイページ」を開く

(8)ページ下部の「アクセストークンの発行(開発者向け)」からトークンを発行する(ここで発行したトークンを先ほどのコードの1行目に追加する)

・トークン名は任意の名前でOK

・あらかじめ通知を受け取るグループを作成している場合、そのグループを選択する(1:1でLINE Notifyから通知を受け取るでもOK!)

(9)LINEグループにLINE Notifyを招待し、追加する

(10)トークンが取得されたか確認する

・「アクセストークンの発行(開発者向け)」の下にあるLINE Nortify API Documentの中に動作確認用のコマンドがある。Macの場合は、下記をターミナルに入力すると確認できる。

curl -X POST -H "Authorization: Bearer 発行したアクセストークン" -F "message=ABC" [https://notify-api.line.me/api/notify](https://notify-api.line.me/api/notify)

・成功した場合、設定したLINEグループに「ABC」というメッセージが届く

(11)GASに戻り、実行ログの左隣にあるプルダウンから「getMail」を選択し、実行の左隣にある保存ボタン(またはcommand + S)にて保存する

65F28B2D-69A1-49DF-A37A-362E5D8D784D_4_5005_c.jpeg

(12)最後に「▷実行」を押して完了

まとめ

今回の実装で初めてLINEのAPIを使ってみました。他にも便利な機能がたくさんあるようなので、今後自分でアプリケーションを作成する際に積極的に使用していきたいなと思います。
最後までご覧いただきありがとうございました。

参考

https://technical.verybestcbp.com/gmailtoline/
https://qiita.com/chibi929/items/6e56ade1b65d1eef1051
https://qiita.com/chivi_dump/items/a62a7b8c32e6ea894a09

38
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?