はじめに
所属会社ではセコムの安否確認サービスを利用して安否確認を行っています。
私は自分のスマホのGmailへ案内が届くように設定しています。
しかし、Gmailは1日でかなり多くのメールが届くことと、発信条件が日本全国が対象となっており、今回のように自分の地域でも揺れれば気づくのですが、遠い地域などではニュースなどを見ていないと気づかず、メールを見落とすことがありました。
そのため、よく使うLINEへ通知できないかとGAS経由でLINEに通知することにしました。
Gmail側設定
自分はわかりやすいように「セコム安否確認」というタグをメールにつくようにしました。
差出人と差出メールとの組み合わせで取りこぼしがないよう設定
GAS側の設定
Gmailでセコム安否確認というメールが来たら実行されます。
内容は本文全文そのまま転載のため、安否確認の返信はLINEからリンクを開けばいいので、メールの見落としもなくスムーズになるかと思います。
実行後にはメールを既読に変更し、新着メールとの区分けをすることで
重複通知がLINEに行かないようにさせています。
またトリガー実行は5分毎
Gmail 1/2 10:21 → LINE 1/2 10:24
Gmail 1/2 17:19 → LINE 1/2 17:19
Gmail 1/3 10:58 → LINE 1/3 10:59
時間もこのような形で動いてます。
この時間はご自由に変更ください。
GASのコード
var lineToken = "AAAAAAAAAA"; //ここにはご自身のLINE Notifyのトークンを入れてください
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 ISREAD_LABEL = GmailApp.getUserLabelByName('セコム安否確認');
var strTerms = 'label:セコム安否確認 is:unread';
var myThreads = GmailApp.search(strTerms);
var myMsgs = GmailApp.getMessagesForThreads(myThreads);
var valMsgs = [];
for (var i = 0; i < myMsgs.length; i++) {
var subject = myMsgs[i].slice(-1)[0].getSubject() || "(No subject)";
var body = myMsgs[i].slice(-1)[0].getPlainBody().slice(0, 600) || "(No body)";
var from = myMsgs[i].slice(-1)[0].getFrom() || "(No from)";
valMsgs[i] = "\n■" + subject + "\n" + body + "\n" + from;
}
myThreads.forEach(function (t) {
t.addLabel(ISREAD_LABEL);
t.markRead(); // 追加:既読にする
});
return valMsgs;
}
function main() {
var 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から直接返信可能なので、LINEの通知で対応するようにすれば、返信忘れ防止に役に立つかもしれませんね。