スプレッドシートで特定の問い合わせ一覧を作成したり、未読の通知だけを抽出してリスト化したいとき、GASから直接Gmailを検索する必要があります。今回は条件を指定して目的のメールを探す方法を取り上げます。
条件を指定してメールを探すスクリプト
まずは、指定した条件に合致するメールスレッドを取得するコードです。
const threads = GmailApp.search("is:unread from:noreply@example.com", 0, 10);
Logger.log("取得件数: " + threads.length);
スプレッドシートのGmailを条件付きで、GASから探すときの挙動
GASからメールを探す際、GmailApp.search()を使用します。このとき引数に渡す検索構文は、普段ブラウザでGmailのWeb検索窓に入力しているクエリ文字列がそのまま利用可能です。
上記のコードでは送信元を指定するfrom:や、未読状態を指定するis:unreadを使っています。スプレッドシートのセルにこれらの条件を入力しておき、GASで読み取って引数に渡すような作りにすれば、スクリプトを書き換えることなくシート上から自由に検索条件を変更できるようになります。
取得件数のコントロールとページネーション
条件に合致するメールが大量にある場合、すべてを一度に取得しようとするとGASの実行時間制限に引っかかる原因になります。これを避けるため、第2引数(開始位置)と第3引数(取得上限数)を指定して処理件数をコントロールします。
今回のコードでは、0番目(最新)の位置から最大10件を取得する指定になっています。大量のメールをスプレッドシートに書き出したいときは、この開始位置の数値をずらしながら少しずつ取得する形にします。

