6
0

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 3 years have passed since last update.

やってみた|メーリングリストに届いた投稿をLINEに転送する

Posted at

はじめに(コメント)

特定のメール(メーリングリストのメール)を、LINEのグループに転送できると便利かなとおもって、やってみたので記録。

  • お客様からの問い合わせメールを、お店のスタッフのグループLINEに転送するとか、応用範囲は広いかも

  • かつてはIFTTTを使うとかんたんにできたようだが、Gmailのポリシーが変わって、今はダメ(試したが、やはりダメだった)

環境

ここで書いていることは、下記のバージョンで実施しました。

  • Gmail(フリー版)
  • Safari バージョン14.1 (16611.1.21.161.6)
  • macOS BigSur 11.3.1

できること

  • 条件に合うメールの本文を、LINEのグループに転送
  • かなりリアルタイム(5分以内)に転送

できない/わからないこと

  • 添付書類は転送されない(メールを開いて見ることになる)
  • Gmailじゃなくても同じことができると思うけれど、やり方はわからない

手順

メールをラインに転送する方法! iPhone/AndroidのGmailを自動でLINEに通知しよう
に詳しく書いてあるので、追加することもない……。

書いていないことの補足を3つ。

  • フィルタの設定
  • スクリプト実例
  • Line Notifyを招待する

フィルタの設定

Gmailのフィルタ機能をつかって、

  • 特定のメールアドレス(2箇所)から来たものに対して
  • ラベル「AAAAAAAA」をつける

スクリプト実例

メールをラインに転送する方法! iPhone/AndroidのGmailを自動でLINEに通知しよう のほとんどコピペだが……

  • 上記で設定したラベル「AAAAAAAA」を指定
  • 既読でも送るように変更
  • 日付などのフォーマットを好みに合わせて変更(下図ご参照)

さて、実際に使っているスクリプトは下記(一部伏せ字)。XXXXXXXXには、取得したトークンを貼り付ける。

var lineToken = "XXXXXXXX";  // 5x期 愛●保護者LINEグループ
var get_interval = 5; //●分前~現在の新着メールを取得 #--トリガーの時間間隔をこれに合わせる


/**
 * LINEにメッセージを転送します
 */
function main() {
 
  // 転送するメール情報を取得
  new_Me = fetchContactMail()
  
  // メール情報をLINEに転送
  if (new_Me.length > 0) {
    for (var i = new_Me.length-1; i >= 0; i--) {
      send_line(new_Me[i])
    }
  }
}


/**
 * LINEに転送するメッセージを取得します
 */
function fetchContactMail() {
  //取得間隔
  var now_time= Math.floor(new Date().getTime() / 1000);    // 現在時刻を変換
  var time_term = now_time - ((60 * get_interval) + 3);     // 秒にして+3秒しておく

  // 検索条件をここで指定
  // NOTE: 「転送用」ラベルをGmailで指定
  //  var strTerms = '(after:'+ time_term + ')';            // modified 既読も送る
  var strTerms = '(label:AAAAAAAA after:'+ time_term + ')';
  
  //取得
  var myThreads = GmailApp.search(strTerms);
  var myMsgs = GmailApp.getMessagesForThreads(myThreads);
  var valMsgs = [];
  for(var i = 0; i < myMsgs.length;i++){
    valMsgs[i] = " " 
      // コメント欄を参考に、日付のフォーマットの仕方を変更
      + Utilities.formatDate(myMsgs[i].slice(-1)[0].getDate() , 'Asia/Tokyo', 'MM/dd HH:mm')
      + "\n\n[送信者]" + myMsgs[i].slice(-1)[0].getFrom()
      + "\n\n[件名]" + myMsgs[i].slice(-1)[0].getSubject()
      + "\n\n[本文]\n"+ myMsgs[i].slice(-1)[0].getPlainBody();
  }

 return valMsgs;
}


/**
 * LINEにメッセージを転送します
 * @param {String} Me メッセージの内容
 */
function send_line(Me) {
  var payload = {'message' :   Me};
  var options = {
    "method"  : "post",
    "payload" : payload,
    "headers" : {"Authorization" : "Bearer "+ lineToken}  
  };
  UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

とにかく、コピペして、XXXXXXXXAAAAAAAAだけ変えると、動きます。

Line Notifyを招待する

  • Gmailから、自分のLINEのLine Notifyにメッセージが行く。

  • したがって、転送したいグループに、Line Notifyを招待する必要がある。

ここのところがわからなくてハマった。

その他リソース

メールをラインに転送する方法! iPhone/AndroidのGmailを自動でLINEに通知しよう
https://sp7pc.com/gadget/line/23926

Gmail to LINE GASで新着メールをLINEに転送する
https://qiita.com/Damon/items/bbe6350ef1a4a10fe397

Gmailの新着通知をLINEで受け取る by Google App Script
https://note.com/yuut6/n/nb3528b53ddfa

6
0
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
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?