なぜか質問を投稿すると反映されない。。 何かしら問題があってはじかれている??
gmailの通知が遅延する問題について
gmailを受信した際にAndroidに通知がくるが
たまに数分~数時間遅延するので、代わりにLINEへ通知してみた
必須条件として、サーバ(プログラム)からLINEにメッセージを飛ばせる環境が必要
(こちらについても時間があるときに記載予定)
サンプルのコードでは、
プログラムURLをhttps://HOGEHOGE.com/gmail.php
渡すパラメータを
日時:date
送信者:from
件名:subj
と、しています
各自、URLとパラメータを変更してください
まず、同じ通知が送信されないように、
通知済みのメールを保存しておくスプレッドシートを作成します
Googleドライブにアクセスして、新規 > スプレッドシートをクリック

新しく作成されたスプレッドシートのURLが後に必要になる
次に、Google Apps Scriptsにアクセスして、空のプロジェクトを作成する
そこに記載するコードは次の通り
function myFunction() {
// 通知済みを保存するスプレッドシート
var url = "https://docs.google.com/spreadsheets/d/ユニークキー/edit#gid=0";
var SS = SpreadsheetApp.openByUrl(url);
var sheet = SS.getSheetByName('シート1');
// 通知済みを配列に格納
var row = sheet.getLastRow() + 1;
var notified = new Array();
for(var i=1; i<row; i++) notified.push(sheet.getRange(i, 1).getValue());
// 未読メールを取得
var unreads = GmailApp.search("label:inbox is:unread");
// 未読メール処理
for(var i in unreads){
var unread = unreads[i];
var msgs = unread.getMessages();
for(var j in msgs){
var msg = msgs[j];
var date = msg.getDate();
var from = msg.getFrom();
var subj = msg.getSubject();
var id = msg.getId();
// 通知済みはスキップ
if(notified.indexOf(id) > -1) continue;
// LINEで通知
var res = UrlFetchApp.fetch("https://HOGEHOGE.com/gmail.php", {
"method" : "POST",
"payload" : {
"date" : date,
"from" : from,
"subject" : subj
}
});
var content = res.getContentText("UTF-8");
// スプレッドシートに保存
sheet.getRange(row, 1).setValue(id);
sheet.getRange(row, 2).setValue("" + date);
sheet.getRange(row, 3).setValue("" + content);
row++;
}
}
}
GASではGmailの受信をトリガーにできないので、
毎分Gmailをチェックするようにする
時計マークをクリックして

分タイマーの1分毎で設定する

これで、通知遅延問題は強引に回避できるかな
検索

コメントを残す