昨日はGmailからGoogle Apps Scriptを使ってGoogleスプレッドシートに書き込むスクリプトを書く仕事を請けたけれど、やり始めたらまた基本的なことを知らずに困ってしまったことを書きました。
シートに記入された最終タイムスタンプよりあとのメールを取得するために、GmailApp.search()メソッドの検索演算子after:にUNIX時間を設定したのにうまく行かなかったので、よく確認したらGmailのスレッド表示設定がOFFになっていたという落ちでした。
あるWebサイトのメールフォームのメールが同じ件名で転送されてくるので、果てしなく長いスレッドになりそうです。
スレッドのこと自体よく分かっていないので、スレッド化されないように違う件名でメールを送ってみて、GmailApp.search()の結果を比較していました。
同じスレッドに10時00分と10時20分のメールがあったとして、後者のメールを取得するためにafter:10時10分を指定しても両方拾ってしまいます。
スレッド表示OFFの状態で一方にラベルを付けて、検索演算子のlabel:ラベル名やhas:userlabelsを指定してみても結果は同じです。
スレッドの最初からsearchを何度もやっていると、そのうち読み取り件数制限に引っ掛かりそう。
定期的にゴミ箱に移動させて、どこかの時点で完全に削除しないといけないですね。
Googleが公開していないようなのでスレッド化される条件は分からないのですが、これが分かればもう少しフレキシブルにsearchできそうです。
というわけで、今日も知っている人はとっくに知っているだろうことを調べていて、時間が過ぎてしまいました。