コメントありがとうございます。 サービス終了した今なら、安く中古が手に入りそ…
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分毎で設定する
これで、通知遅延問題は強引に回避できるかな
検索
コメントを残す