【GAS入門】複数条件と日付でメールを検索する方法
GASでメール検索をしたいんだけど、複数の条件や日付を指定する方法が全然わからなくて…

猫男

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
その好奇心、大切にしよう。次の表で検索クエリをチェックしておくんだ。
検索クエリ | 意味 | 使用例 |
---|---|---|
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
いい仕事してるな。この調子でさらに複雑なスクリプトにもチャレンジしていこう!