これまで毎日メール or アプリで受け取っていた通知をLINEで受け取れるようにしました。(体調管理報告は、会社の全従業員に対して毎朝7:00に通知が届き回答を送信します。)
皆さん、こんにちは。
私は現在入社2年目で、旅行会社に勤務しています。今回は、Google Apps Script(GAS)を新たに覚えてLINE Notifyとつなげてみた様子をご紹介します。
今回分かったのが、**GAS×LINE Notify、LINE通知が一番使いやすい私にとってはめちゃくちゃ便利でした。組み合わせも色々できて面白い!**活用事例を知りたい方は記事の続きも是非ご覧ください。
#【毎日の体調管理】報告漏れ&入力までの手間をなくしたい!
新型コロナウイルスの流行が始まってから、**毎日AM7:00に発信される「体調管理報告通知」**に全従業員が回答を送信しています。通知は、メール or アプリで届くのですが、それぞれこのようなポイントがあります。
メール
◎本文内のURLを押せば即回答可能 ×ほかのメールに埋もれてしまう
アプリ
◎設定をすればアプリ通知が入るため気づきやすい ×都度ログインが必要で回答までにいくつかのステップがある
すでに約2年間続けていることなので習慣になりましたが…危うく忘れてしまいそうな日もあります(特に休日)。また、回答までの時間は数秒ではあるものの、毎日のことだと手間に感じることもあります。さらに、社内の回答集計をしてくださる担当の方は、漏れがないよう未回答者へのリマインドなども行っています。
同僚と雑談しているときにも聞いてみたところ…
- 7:00の通知前に家を出るようなシフトの時など特に忘れてしまう…
- 出社の日は、電車に乗った時!って決めてるけどテレワークだと…
- 数秒であっても回答までに数ステップが必要
##LINEなら気づきやすいか?
**一番気づきやすく漏れない通知はやっぱりLINE?そんな話になったので、GASでGmailとLINE Notifyをつなげてみたところ、上に挙げたメールとアプリのいいとこどり通知ができるのでは?**と実装に取り掛かりました。
#使用ツールはこちら
下記のサービスはそれぞれインストールやアカウント登録などの事前準備が必要になります。
今回のGASの設定は、とても簡単な作業です。
試したい方はこちらのサイトを参考に是非!
私は以下のコードを使用しました。
//書き換えはここから
var lineToken = "xxxxx"; //LINE notifyで発行したトークンを入力
var words = ""; //メール内で検索したい文字を入力(スペースで区切りで複数入力できます)
var f_body = 1; //0:LINEの通知に本文を表示させない場合は0、LINE通知に本文を表示させる場合は1
//書き換えるのはここまで
var interval = 1; //未読確認時間(分単位):例)1の場合、1分前に未読だったメールを通知します
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 * interval) + 3); //秒にして+3秒しておく
//検索条件指定
var strTerms = '(subject:{' + words + '} is:unread 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] = " " + myMsgs[i].slice(-1)[0].getDate().getMonth() + "/"+ myMsgs[i].slice(-1)[0].getDate().getDate()
+ " " + myMsgs[i].slice(-1)[0].getDate().getHours() + ":" + myMsgs[i].slice(-1)[0].getDate().getMinutes()
+ "\n[from]" + myMsgs[i].slice(-1)[0].getFrom()
+ "\n" + myMsgs[i].slice(-1)[0].getSubject()
if(f_body == 1){
valMsgs[i] = valMsgs[i] + "\n\n[Message]\n"+ myMsgs[i].slice(-1)[0].getPlainBody();
}
}
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])
}
}
}
冒頭3行は、このように変更。
- var lineToken = "xxxxx"; //LINE notifyで発行したトークンを入力
→自分のトークンをコピー貼り付け - var words = ""; //メール内で検索したい文字を入力(スペースで区切りで複数入力できます)
→**「体調管理報告メール」に必ず宛先として入っている「会社名」をキーワードに** - var f_body = 1; //0:LINEの通知に本文を表示させない場合は0、LINE通知に本文を表示させる場合は1
→本文内のURLから回答フォームを送るWebサイトに飛びたかったため「1」を入力
##LINE Notifyの設定
LINEに「体調管理報告」のグループを作って自分とLINE Notifyをメンバーに入れています。毎日の通知は、このグループに届くよう設定をしました。
#通知をGmail▶LINEにしてみたら…
実装してから、**5日間毎日LINEで通知を受け取ってみました。**同じく同僚にも試してもらい頂いた感想は…
- LINEなら一度アプリ通知を見逃してしまっても必ず気づく!漏れがなくなりそう。
- 毎日のことだから入力ステップが減るのは嬉しい。
- LINEじゃない通知でも受け取れる?
- LINEで受け取れるのは便利。体調管理報告以外の通知も受け取れるの?
試していただく際に「個人LINEが会社に知られてしまうということ?」との声がありましたが、現状Gmailで受け取っているものをLINEに転送するようなイメージなので個人で完結しており、転送間に会社が入ったり、アカウントが知られたりするようなことはありません。
「報告漏れ対策」と入力ステップ削減の「時短」が実現できました
実際に試していただくことで、他の連携の可能性にも興味を持っていただけたので、GASと同時に覚えたIFTTTやIntegromatの活用も紹介していこうと思います。
#最後に
今回は、簡単な技術ではありましたが、GASを覚えた翌日には実装し、その後5日間で周りの方にも試してもらえたことに達成感を感じました。。引き続きできそうなことはどんどん形にしてアウトプットしていければと思います。
<追記>今回は短期間で形にすることを最優先で制作したため、この後「LINEに届くものをメール全体でなく関数で抜き出してURLのみにする」など使いやすくしていきたいです。