【Google Apps Script】GmailApp.searchで拾えないメール対策
前記事の続きです。
さてさて、ネットでも簡単に見つかるサンプルを参考に、
取得したいgmailをGoogle Apps ScriptのGmailApp.searchで取得して
スプレッドに張り付けちゃうぞ、っと。
あっさり実行できて、スプレッドも見た。
おお、あっさり張り付いている張り付いている。
あれ?
GmailApp.searchで取得できてないメールがある?!
自分のgmailの受信トレイとスプレッドをにらめっこすると、
どうもスプレッドのほうが足りないんです。
受信トレイで GmailApp.searchと同じ条件で検索してみると、
受信トレイの方はそのメールも抽出できているのに、スプレッドにはない。
んで、 GmailApp.search でメール取得できない、とかでネットで検索したんだけど、見つからず。。。
ちなみにこういう良くあるコード。
デバッグして分かった、対処法
ネットで探しても埒が明かず。
あまり期待せずデバッグで実行してみたら、対処法があっさりわかったよ。
結論から先に。
先ほどのコードをこうしたら解決したよ。
上記との違いは、
for分をネストして、myMsgs[i][0]だけでなくmyMsgs[i][j]を取得している。
これで漏れなく取得できるようになった^^
こうした経緯
興味ある人だけ読んでね。
当初の状態でデバッグしたら、
んんー、myMsgs[5]だけ要素が多い??
さらにmyMsgs[5]を展開すると
あら、このあたりにスプレッドに張り付けられないメールがあるのでは?
となったのだ。
スレッド化されてmyMsgs配列が要素数1だけじゃなかったっぽい(これ以上追求しないアバウトさ・・・)
最初、こちらのgmailの設定がスレッド化となっていたので、それも怪しいと解除したけど解決しなかったのだ。
でも今回のメールは大元から転送されてきたものを取得しているので、
そちらの設定で何かしてたのかなあ。。
大元の設定は私からは簡単に確認できないので、このあたりは結局分からず。
まあ、解決したからいいやー。
ん?まてよ?
valMsgs[i][4] = myThreads[i].getPermalink()
はこの場合、違うと思うぞ?!
(って、今気づいた。。)
試しにクリックすると、myMsgs[i][1]などのメールが表示されないのだ。
説明省くけど、意味伝わるよね??
そして パーマリンク取得のため次回に続く
この辺りは次回にまとめます。