前提・実現したいこと
Gmailで特定のラベルにメールが来た際にそのメールを既読にしてLineに連絡が来るようにしたい
発生している問題・エラーメッセージ
そのメールがスレッド化する場合(同じ件名のメールが複数来てる場合)既読にならない
該当のソースコード
GAS
var lineToken = "XXX"; //LINE notify token
var get_interval = 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 * get_interval + 3); //秒(バッファとして3秒追加)
//検索条件指定(指定ラベル先の未読メールを検索)
var strTerms = ('is:unread label:"test"');
//取得
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()+1) + "/" + myMsgs[i].slice(-1)[0].getDate().getDate()
+ " " + myMsgs[i].slice(-1)[0].getDate().getHours() + ":" + myMsgs[i].slice(-1)[0].getDate().getMinutes() // 日付
+ "\n[Subject]" + myMsgs[i].slice(-1)[0].getSubject() // 件名
//myMsgs[i][0].markRead();
}
myMsgs.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])
}
}
}
試したこと
for文のなかのmyMsgs[i][0].markRead(); を削除し
forの外に
myMsgs.markRead();
を追加した
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 14:45