
Gmailの検索演算子の勘ドコロ newer_than と -(ハイフン)とhas:
GAS勉強中です。
GASでGmailをうまく操ろうとするとGASそのものの知識もさることながら、Gmailの検索演算子、つまり検索でどう目的のメールを絞り込むかが重要だと感じます。
検索演算子に関してはこのあたりを参考にしました。
'newer_than' とトリガーの組み合わせ
Gmailから特定の検索条件に合致したスレッド群を取得するのには、GmailApp.searchメソッドを使いますが
const threads = GmailApp.search(query, start, max);
GmailApp.search(検索条件, 開始スレッドのインデックス, 最大取得数)
以上のように、検索条件だけでなくどのスレッドをどれだけ取得するかを指定できます。※いつも隣にITのお仕事を参考
この開始スレッドのインデックスの指定と最大取得数で、ピンポイントで取得したいメールのスレッド群を絞り込んでもよいのですが、今の私の運用だと検索演算子の 'newer_than' を使って「何日以内に受信したメール」を抽出するやり方のほうが使用頻度が高そうです。
'newer_than' は、日(d)、月(m)、年(y)を指定し、その時期より新しいメールを検索するもので、時期より古いメールを検索する'older_than' もあります。
例えば、
1週間に1回のトリガーで、1週間分の該当するスレッド群を取得する場合newer_than:7d(7日前から現在まで)
1日1回のトリガーで24時間以内の該当するスレッド群を取得する場合
newer_than:1d(24時間前から現在まで)
を用いたりします。
'-' で指定した条件を除外
もうひとつよく使う検索演算子は、'-'(ハイフン?ダッシュ?)です。これは、指定した条件を除外する演算子で、このあたりを駆使するとGmailの検索絞り込みもプログラミング的に感じます。
from:(-xxx@aaaa.com) → 特定アドレスからのメールを除外
subject:(-"ご案内") → 件名に「ご案内」を含むメールを除外
has: で添付ファイルだったりスターだったりの付いたメールを絞り込み
最後に'has:' です。
Gmailは設定すると色んな色のスターを付与することができますが、そのスターにあわせて絞り込みをしたり、添付ファイルがあるものを絞り込む際に活躍します。
has:yellow-star → 黄色のスターが付いたメールを絞り込み
has:attachment → 添付ファイルのあるメールを絞り込み
has:pdf filename:請求書 → 「請求書」がファイル名に含まれるpdfが添付されたメールを絞り込み
has:pdf filename:請求書 とかめちゃくちゃ登場頻度が高そうです。
ノンプロ研
ただいま、ノンプロ研でGAS勉強中です。