Google Apps Script:GmailApp.getMessagesForThreadsについてのメモ
GASでメール自動監視をする際に最新のメールを上手く取得できなかったので解決策をメモ
1 2 |
var myThreads = GmailApp.search(検索条件); var myMsgs = GmailApp.getMessagesForThreads(myThreads); |
このようにメールを取得した場合、2次元配列にスレッドが格納される。そのため、1番目に検索に引っかかったメールを取得するには
1 |
myMsgs[0][j] |
を参照することになるが、このjの値が分かりにくかった。サンプルだと[0]を参照してることが多いのだが、Gmailのスレッドで0は一番最初のメールなので、返信メールであろうと結局一番最初のメールしか取得できない。
最新メールを取得するには配列の最大の値を指定してやらないといけない。そのため
1 2 3 |
var newMail = myMsgs[0].length - 1; console.log(myMsgs[0][newMail]); |
このように、配列の要素数を調べてそこから-1したものの中身を調べればよい。最初気づかなかった。