しろあじ備忘録

システム関係の備忘録。ザルのような記憶力なので、こうして書いておかないと忘れるのだよ。

【Google Apps Script】GmailApp.searchで拾えないメール対策

前記事の続きです。


さてさて、ネットでも簡単に見つかるサンプルを参考に、
取得したいgmailGoogle Apps ScriptのGmailApp.searchで取得して
スプレッドに張り付けちゃうぞ、っと。

あっさり実行できて、スプレッドも見た。
おお、あっさり張り付いている張り付いている。

あれ?

GmailApp.searchで取得できてないメールがある?!

自分のgmailの受信トレイとスプレッドをにらめっこすると、
どうもスプレッドのほうが足りないんです。

受信トレイで  GmailApp.searchと同じ条件で検索してみると、
受信トレイの方はそのメールも抽出できているのに、スプレッドにはない。

んで、 GmailApp.search でメール取得できない、とかでネットで検索したんだけど、見つからず。。。

ちなみにこういう良くあるコード。
f:id:ramapipi:20171225000134p:plain

デバッグして分かった、対処法

ネットで探しても埒が明かず。
あまり期待せずデバッグで実行してみたら、対処法があっさりわかったよ。

結論から先に。
先ほどのコードをこうしたら解決したよ。
f:id:ramapipi:20171225000227p:plain
上記との違いは、
for分をネストして、myMsgs[i][0]だけでなくmyMsgs[i][j]を取得している。

これで漏れなく取得できるようになった^^

こうした経緯

興味ある人だけ読んでね。

当初の状態でデバッグしたら、
f:id:ramapipi:20171225000431p:plain

んんー、myMsgs[5]だけ要素が多い??

さらにmyMsgs[5]を展開すると
f:id:ramapipi:20171225000544p:plain

あら、このあたりにスプレッドに張り付けられないメールがあるのでは?

となったのだ。

スレッド化されてmyMsgs配列が要素数1だけじゃなかったっぽい(これ以上追求しないアバウトさ・・・)

最初、こちらのgmailの設定がスレッド化となっていたので、それも怪しいと解除したけど解決しなかったのだ。

でも今回のメールは大元から転送されてきたものを取得しているので、
そちらの設定で何かしてたのかなあ。。
大元の設定は私からは簡単に確認できないので、このあたりは結局分からず。

まあ、解決したからいいやー。
ん?まてよ?

valMsgs[i][4] = myThreads[i].getPermalink()

はこの場合、違うと思うぞ?!
(って、今気づいた。。)
試しにクリックすると、myMsgs[i][1]などのメールが表示されないのだ。
説明省くけど、意味伝わるよね??

そして パーマリンク取得のため次回に続く

この辺りは次回にまとめます。