前提・実現したいこと
GASを用いて特定のメールをLINEへ通知する機能を作成しようとしております。
詳細は、以下の通りです。
・Amazonからの配達完了メールが届いたときにLINEへ通知する。
・LINEへ通知したメールは既読ラベルをつける。
発生している問題・エラーメッセージ
mapでループを回し、取得したメールを全て既読にしたのですがいくつか既読にならないメールがある。
該当のソースコード
JavaScript
1 // 検索条件 2 const strTerms = "配達完了 label:unread"; 3 4 // 取得 5 const myThreads = GmailApp.search(strTerms); 6 const myMsgs = GmailApp.getMessagesForThreads(myThreads); 7 8 const valMsgs = myMsgs.map(function( [myMsg] ) { 9 10 const month = myMsg.getDate().getMonth() + 1; // 月を取得 11 const date = myMsg.getDate().getDate(); // 日を取得 12 const hour = myMsg.getDate().getHours(); // 時間を取得 13 const minute = myMsg.getDate().getMinutes(); // 分を取得 14 15 let valMsg = `${month}/${date} ${hour}:${minute}` 16 + "\n\n[題名]\n" + myMsg.getSubject() 17 + "\n\n[本文]\n" + myMsg.getPlainBody(); 18 19 GmailApp.markMessageRead(myMsg); 20 return valMsg; 21 }) 22 23 return valMsgs; 24} 25 26 27function main() { 28 newMails = fetchContactMail(); 29 newMails.forEach(newMail => sendToLine(newMail)); 30}
試したこと
元々、forループで記述していったのですがコードが複雑で見にくかったたmapを使った記述に変更をしました。map内でmapを記述しメールの配列を一つずつ既読にしようとしたのですがそれもうまく行きませんでした。また、markRead()を使用して見たのですが"~is not function"といったエラーが出力されうまく行きませんでした。
説明が不足していればご指摘いただければ幸いです。
あなたの回答
tips
プレビュー