スプレッドシートのGmailを条件付きで、GASから探す

GAS

スプレッドシートで特定の問い合わせ一覧を作成したり、未読の通知だけを抽出してリスト化したいとき、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件を取得する指定になっています。大量のメールをスプレッドシートに書き出したいときは、この開始位置の数値をずらしながら少しずつ取得する形にします。

タイトルとURLをコピーしました