【GAS】特定のGmailをLINEに転送する方法(GmailとLINEの連携)

Gmail

LINEとの連携一覧

ご訪問ありがとうございます。

スプレッドシートマスターのひろしです。

前回

【GAS】GoogleスプレッドシートからLINEにメッセージを送る方法(トークルームの作成、LINE Notify APIの登録)
  • 簡単にスプレッドシートからLINEにメッセージが送れます。
  • スプレッドシートに貼り付けたボタンからマクロを起動することができます。
  • 今回は、とっても価値の高い方法をお伝えします。

    これを知ることであなたは、

    • 特定のメールをLINEに通知させることが
      できます。

    ようするに、LINEでメールの管理も
    できてしまうのです。

    なので、

    • LINEは韓国に情報が漏れて危険だから使わない。
    • ガラケーで十分、スマホは嫌だ。

    とか言って、LINEを断固として使わない人からのメールも
    あなたのLINEに通知されるようになります。

    逆に、知らないと

    あなた:「あー、あのメール来たかな。」

    と、わざわざ最近開いていない
    メーラーを開く必要があります。

    もちろん、スマホで新着メールを
    通知させる機能もありますが、
    いろんなメールが多すぎて
    使用していないと思います。

    なので、今回の
    特定のGmailをLINEに転送する方法」を
    ぜひ、取り入れてください。

     

    そして

    こんな感じで答えてみてください。

     

    やり方は簡単です。

    ステップ by ステップでGASのスクリプトを
    貼り付けるだけなので
    そんなに難しいことはありません。

    もしあなたが現時点で

    「GAS?」
    「スクリプト?」

    っていう状態であっても大丈夫です。

    動画を見ながら、そのとおりに、
    ゆっくりと確実に行っていけば、
    必ずできます。

    ときどき、動画を止めたりしても
    いいと思います。

    とにかく動画の通りに行ってください。

    そして、10分後には。。

    。。。

     

    あの、待ちに待った大切な人からのメールが

    あなたのLINE画面に通知されるようになるのです。

    GmailをLINEに転送する

    準備するもの

    • Gmailアカウント
    • LINEアカウント

    これだけです。

    では、動画を見ながらやってみてください。

    【GAS】特定のメール(Gmail)をLINEに通知する方法(Google Apps Script)

    動画内のアイテム

     

     

    LINE Notify APIの登録

     

    LINE Notify
    LINE NotifyはGitHub,IFTTT,MackerelなどのWebサービスからの通知を、LINEで受信することが出来る便利なサービスです。

     

    LINE アクセストークンの取得方法はこちら

     

    Google Apps Script

    Googleドライブを開きます。

    Step1.

    ①「Googleドライブ」を開きます。

    Step2.

    ①「+新規」をクリックします。

    Step3.

    ①「その他」ー「Google Apps Script」をクリックします。

    スクリプト

    Step1.

    スクリプトエディタに以下をコピペします。

    var LINE_NOTIFY_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXX";
    var query = "subject:テスト";
    //例) var query = "subject:(テスト) from:xxxx@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
        }
      });
    }
    

     

     

     

    Step2.

    • 「LINE Notify APIの登録」で取得したトークンを貼り付けます
    • メールの条件を指定します。

    ※ここで、getMail関数を実行してみて
    実際にLINEに通知されることを確認します。

    ①[SendMail]を選択する
    ②[▲]をクリックする

     

     

    トリガーの設定

    Step1.

    ①[時計]アイコンをクリックする

     

    Step2.

    ①[トリガーを追加]をクリックする

     

     

    Step3.
    ①[getMail]を選択する
    ②[時間主導型]を選択する
    ③[分ベースのタイマー]を選択する
    ④[10分おき](あなたがチェックしたいタイミング)を選択する
    ⑤[保存]をクリックする

     

    これで、自動的にLINEに通知されるようになります。

     

     

     

    マインドセットします。

    マインドセット
    メールをLINEに集約することで業務が爆発的に改善する

     

    まあ、爆発的とまではいきませんが、
    なんだかんだ言っても多くの人が
    LINEを使っています。

    なので、いろんな事をLINEに集約させることで
    かなり便利になります。

    では、今回のスプレッドシートマスターへの究極の方法です。

    Step1.
    https://notify-bot.line.me/ja/
    でトークンを発行する

    Step2.

    GASにスクリプトを貼り付ける

    Step3.

    スクリプトをあなた用に変更する

    Step4.
    トリガーを設定する

    では、早速トークンを発行してください
    今すぐです。

    さあ、これであなたのスマホに
    メールの通知が届くようになります。

    最後までご覧いただきありがとうございます。

    つぎはこちら

    Googleスプレッドシートの変更をLINEに通知する方法
    スプレッドシートに行が追加されるとLINEに通知することができます。 スプレッドシートでセルが変更されるとLINEに通知することができます。 とても簡単に設定できます。

     

    LINEとの連携一覧
    GASで制御する Gmail

    コメント

    1. タカギ より:

      コメント失礼致します。

      メールからLINEに流す作業は実用的で私も参考に使用させていただきました。ありがとうございます。一方で、LINEからメールは可能なのでしょうか?文章や添付ファイルを送れると、とても利便性が上がります。
      たくさんの動画をアップしておられるのでお忙しいと思いますが、こちらの動画もアップしていただきたいです。
      よろしくお願いいたします。

    2. たか より:

      娘の学校の自習室の入退室時刻の自動通知メールを家族のLINEグループに通知させるのに参考にさせて頂きました。notifyのサービスは便利なのですが、家族のLINEグループに通知専用とはいえ、身内以外のIDを追加するのに少々抵抗がありました。例えば自分のIDで代理投稿するようなイメージでできないものか思案しています。

      • hiroshi より:

        たかさんコメントありがとうございます。
        良い使い方ですね。
        しかしながら、家族のLINEグループに身内以外のIDというのは、抵抗がありますね。

        イマイチですが通知用に別グループを作ってみてはいかがでしょうか?

    3. シルバ より:

      お世話になります。
      実行すると下記のようなエラーが出ます。

      Exception: Request failed for https://notify-api.line.me returned code 400. Truncated server response: {“status”:400,”message”:”LINE Notify account doesn’t join group which you want to send.”} (use muteHttpExceptions option to examine full response)
      sendLineMessage @ コード.gs:40
      getMail @ コード.gs:28

      どこを直せばよいのでしょうか。

      • 匿名 より:

        こちらの件、解決しました。

        LINEグループにLINE Notifyを友達追加したら解決しました。
        もし必要なければ、先ほどのコメント削除しておいてください。

        • hiroshi より:

          返信ありがとうございます。
          他の方の助けになると思いますので、残しておきます。

    4. そざき より:

      コメント失礼します。以下のようなエラーが出るのは何がおかしいでしょうか。
      1度は転送出来たのですが、
      Exception: 1 日にサービス gmail を実行した回数が多すぎます。
      Exception: Gmail の操作を行うことはできません。

      エラー
      Exception: Service invoked too many times for one day: gmail.
      getMail @ コード.gs:13

      となります。

    5. takahasi より:

      コメント失礼致します。

      subjectを二種類指定したい場合はどのようなコードにすればいいでしょうか?

      (例えば、 テスト という件名と 問題 という件名のものをlineに通知させたい場合などです。)

      • hiroshi より:

        すみません、二種類指定の意味がわかりません。
        上記の場合、元のメールのsubjectは何なのでしょうか?
        1通のメールを2回通知するという意味なのでしょうか?
        具体例(元のメールSubject、LINEに送信するSubject)を提示してください。

        • takahasi より:

          現在のコードだと、件名にテストと記載されたメールのみがラインに通知されると思うのですが、それに加えてもう一つ 問題 と件名に記載されたメールも同じようにラインに通知してほしい場合はどうすればいいですか?という質問です。分かりにくい質問で申し訳ありません。 

          • hiroshi より:

            ■元のメール
            Subject テスト
            本文A

            ■LINEに送信
            Subject テスト
            本文A

            Subject 問題
            本文A

            1件のメールに対し2通をLINEに送信する

            という意味ですか?

            • takahasi より:

              ■元のメール
              Subject テスト
              本文A

              Subject 問題
              本文A

              ■LINEに送信
              Subject テスト
              本文A

              Subject 問題
              本文A

              という意味です。

    6. hiroshi より:

      2通メールが来るなら普通の動きじゃないですか?
      そうならないですか?

      • takahasi より:

        通知してほしいと思っている、二通の別々の件名のメールが来ても
        件名:テスト 
        と書かれた分のメールしかlineに通知されないので、
        件名:問題
        と書かれたメールもlineに通知させたいということです。

        • hiroshi より:

          なるほど。
          すみません、ようやく質問の意味がわかりました。

          var query = “subject:テスト”;
          は、”テスト”でフィルタリングするという意味なので、
          queryを空っぽにすればいいですよ。

          var query = “”;

    7. へっぽこ初心者 より:

      非常にわかりやすくまとめられていて初心者の私でも簡単に条件を変えたりして利用できました。ありがとうございます。
      他の部分は引数の意味も書いてある内容からわかるのですが10行目のGmailApp.search(query, 0, 10)の部分については引数の意味なども載せていただけると初心者でももっと理解できるかと思います。

      • hiroshi より:

        コメントありがとうございます。
        さすがですね。私自身、サンプルからコピペしていたので気にしていませんでした^^

        GmailApp.search(query, 0, 10)
        search(query: string, start: any, max: any):

        query → 検索文字列
        例の場合、”subject:テスト” ←これの指定方法は、Gamilの検索窓と同じです。

        0,10 → これを指定することで直近の10スレッドを取得しています。

        さらに詳しくはこちらをどうぞ↓
        https://tetsuooo.net/gas/1267/

    8. キャプ より:

      コメント失礼します。
      実用的な方法を教えて頂きありがとうございます!

      複数のメールから、通知を受けたい場合は、どうすれば良いでしょうか?
      Var query = “XXX.com”
      Var query = “YYY.com”
      のように、しようとすると1番最後のアドレスにしか反応しない様でして・・・

      同じコードをコピーして1通知に1シート使ってメールを管理する分には問題ないようなんですが。
      出来れば、上記のように1つのコードで管理できるとありがたいなと思っていまして。
      何か方法があったら教えて頂けたら幸いです。

    タイトルとURLをコピーしました