GAS入門① LINEへの発送通知集約

※感想記事です
さくっと手順を知りたい方は、リンク先の方の記事が大変分かりやすいのでご参照ください。(時間空きすぎて細かい手順や詰まった所など忘れてしまった)

きっかけ

GAS(Google Apps Script)で遊んでみよう!
と思いたち、簡単なところから試してみた。(ので備忘録的にnoteに書いてみる)


まず「プログラミング=効率化」ということで解決したい課題を設定してみた。

今回の課題は

「通販購入が多すぎて、何がいつ届くのか分からない」

というもの。


もちろん各種発送通知はメールで届くのだが、
Gmailがカオス化している(整理できていないのが悪い)ので

「ヤマトさん来たけど何頼んだっけ」
「メールを見落としてたー 再配達だ…」

となりがちであった。

個人的にLINE通知だと管理が容易だなと思っていたが、ヤマトさんはLINE通知もあるが佐川さんはないし...


というわけで、まずはGmailに送られてくる発送通知をLINEに全て転送することとした。


やったこと

ざっくり手順は以下の通り。
   ①LINE NotifyでToken発行
   ②スクリプト作成
   ③マイトリガーの設定


手順についてはリンクを参照いただくとして、作成したコードを下記に貼った。
「件名に"発送"という文字列を含むメールをGmailが受信した時に、メール本文をLINE Notifyから通知する」というコードとなっている。

var lineToken = "LINEのトークンを貼り付ける"; //LINE notify token
var get_interval = 30; //〇分前~現在の新着メールを取得 #--トリガーをこれに合わせておく!!


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);
}


function fetchContactMail() {
 //取得間隔
 var now_time= Math.floor(new Date().getTime() / 1000) ;//現在時刻を変換
 var time_term = now_time - (60 * get_interval); //変換

 //検索条件指定
 var strTerms = '( is:unread after:'+ time_term + '{ subject:発送 subject:出荷 } )';

 //取得
 var myThreads = GmailApp.search(strTerms);
 var myMsgs = GmailApp.getMessagesForThreads(myThreads);
 var valMsgs = [];
 for(var i = 0; i < myMsgs.length;i++){
   valMsgs[i] = "\n【date】: " + myMsgs[i].slice(-1)[0].getDate() 
                 + "\n【From】: " + myMsgs[i].slice(-1)[0].getFrom()
                 + "\n【Subject】: " + myMsgs[i].slice(-1)[0].getSubject()
                 + "\n【Body】: \n" + myMsgs[i].slice(-1)[0].getPlainBody().slice(0,200); 
 //  myMsgs[i].markRead(); //メッセージを既読にする
 }

 return valMsgs;

}

function main() {
 new_Me = fetchContactMail()
 if(new_Me.length > 0){
   for(var i = new_Me.length-1; i >= 0; i--){
     send_line(new_Me[i])
   }
 }
}


特定アドレスからの送信を転送することも考えたが、アドレスのリスト化が手間だったので、まずはざっくり件名条件のみの設定とした。

余分な通知が多ければ条件を再設定するつもりだったが、意外にも余分な通知はほぼ来ていない。逆に通知漏れはあったので、後からキーワードの追加は行なった。


検索条件や取得間隔は個々人によるが、それ以外は同じコードで問題なく動くかと思う。
検索条件は、Gmailの標準の検索演算子で設定ができた。
検索演算子は覚えておくと普段から役立つかもしれない。


やってみた感想


シンプルに発送情報をちゃんと把握できる状態となった。

「ヤマトさん来たけど何頼んだっけ」
「メールを見落としてたー 再配達だ…」



「昨日通知が来たから、今日の午前は〇〇を届けにヤマトさんが来るはず!」
「えーっと今日届くのは、、(LINEで確認)」

に変わった。

また付随効果として、配達がいつ来るか把握しているのでインターホンも安心して出れるようになった。

実際の通知イメージ↓

画像1



手順としてそこまで難しくなく、QOLも上がり、
初心者にはコスパが良いプログラミングだと思う。

参照させていただいた記事を貼っているので、
そちらを参考に試していただければ。


参考にさせていただいた記事↓↓


この記事が気に入ったらサポートをしてみませんか?