【GAS入門】複数条件と日付でメールを検索する方法

GASでメール検索をしたいんだけど、複数の条件や日付を指定する方法が全然わからなくて…
猫男
猫男
catman
catman
よし、catmanが「GASで複数条件と日付を使ったメール検索」を伝授しよう!

GASでメール検索を複数条件でおこなう方法

GASのメール検索で複数条件を設定するには、検索クエリを工夫する必要がある。

ズバリ、検索クエリを半角スペースでつなげてやるんだ。

次の例を見てくれ。


function searchEmails() {
  const query = 'from:example@gmail.com subject:重要';
  const threads = GmailApp.search(query);

  for (let i = 0; i < threads.length; i++) {
    Logger.log(threads[i].getFirstMessageSubject());
  }
}
  • GmailApp.search(query): 指定した検索クエリに基づいて、メールスレッドを取得する。
  • threads[i].getFirstMessageSubject(): 各スレッドの最初のメッセージの件名を取得する。

このスクリプトは「example@gmail.com」から送信され、テーマに「重要」を含むメールを検索している。

 

検索クエリの記述を見てくれ。

const query = 'from:example@gmail.com subject:重要';

from:example@gmail.com subject:重要という2つのクエリが半角スペースで繋がっているだろう?

こんな感じで複数条件を指定してやるんだ。

 

GASで日付条件を使ったメール検索を行う方法

日付のクエリを活用することで、特定の期間内のメールを検索することも簡単に可能だ。

日付条件を指定するには、Gmailの検索条件から「after:」や「before:」というクエリを使おう。


function searchEmailsByDate() {
  const query = 'after:2023/01/01 before:2023/12/31';
  const threads = GmailApp.search(query);

  for (let i = 0; i < threads.length; i++) {
    Logger.log(threads[i].getFirstMessageSubject());
  }
}
  • GmailApp.search(query): 日付範囲を含む検索クエリで指定されたメールスレッドを取得する。
  • threads[i].getFirstMessageSubject(): スレッド内の最初のメッセージの件名を表示するために使われる。

このスクリプトは2023年の1月1日以降、12月31日までのメールを検索する。

すごい!GASでこんなに細かくメール検索できるなんて!どんな検索クエリがあるのか気になってきた〜
猫男
猫男
catman
catman
その好奇心、大切にしよう。次の表で検索クエリをチェックしておくんだ。

 

検索クエリ 意味 使用例
from:example@gmail.com 送信者が example@gmail.com のメール GmailApp.search("from:example@gmail.com")
to:example@gmail.com 宛先が example@gmail.com のメール GmailApp.search("to:example@gmail.com")
subject:重要 件名に「重要」を含むメール GmailApp.search("subject:重要")
label:仕事 ラベル「仕事」が付いているメール GmailApp.search("label:仕事")
has:attachment 添付ファイル付きメール GmailApp.search("has:attachment")
after:2025/01/01 2025年1月1日以降に受信したメール GmailApp.search("after:2025/01/01")
before:2025/01/01 2025年1月1日より前に受信したメール GmailApp.search("before:2025/01/01")

 

練習問題

GASで以下の条件を満たすメールを検索して件名をログに出力しなさい。

  • 送信者が「support@service.com」
  • 「お知らせ」というテーマを含む
  • 2023年の3月1日以降に受信されたメール

 

 

 

解答・解説


function searchCustomEmails() {
  const query = 'from:support@service.com subject:お知らせ after:2023/03/01';
  const threads = GmailApp.search(query);

  for (let i = 0; i < threads.length; i++) {
    Logger.log(threads[i].getFirstMessageSubject());
  }
}

このスクリプトでは、送信者が「support@service.com」で、「お知らせ」というテーマを含む3月1日以降のメールを検索する。

検索した結果、各スレッドの最初のメッセージの件名をログに出力している。

完璧にできた!GASのメール検索がちゃんと理解できたよ!
猫男
猫男
catman
catman
いい仕事してるな。この調子でさらに複雑なスクリプトにもチャレンジしていこう!