はじめに(コメント)
特定のメール(メーリングリストのメール)を、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);
}
とにかく、コピペして、XXXXXXXX
とAAAAAAAA
だけ変えると、動きます。
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