GAS Gmail検索完全ガイド|Google Apps Scriptでメール自動化を実務レベルまで引き上げるquery活用術
Google Apps Script(GAS)を触り始めると、多くの人が最初に「メール取得」に挑戦します。
ただ、実務で本当に役立つのは単なるメール取得ではありません。
「必要な情報だけを高速で抽出し、データ化して自動処理する」
これができるようになると、GASは一気に業務改善ツールへ変わります。
旅行先で宿の予約確認メールを探したり、航空券情報を見返したりするとき、Gmail検索が強い人ほど必要な情報へ最短でたどり着けます。 GASでも考え方は同じです。
この記事では、GAS Gmail検索(query)の基本から実務レベルの活用方法まで、現場目線で体系的に解説します。
GAS Gmail検索とは? GmailApp.searchの基本
GASではメール検索を次のコードで実行します。
const threads = GmailApp.search("検索クエリ");
返り値はスレッド配列(Thread[])です。
基本の流れはシンプルです。
- 検索
- スレッド取得
- メッセージ取得
- 必要な情報を抽出
イメージとしては、巨大なメール倉庫から必要な荷物だけをピックアップする感覚です。
Gmail検索クエリ(query)とは?
GASのGmail検索は、普段Gmail画面上で使っている検索構文をそのまま利用できます。
GmailApp.search("from:test@example.com");
つまりqueryとは、
条件を文字列で定義する検索DSL(Domain Specific Language)
この考え方を理解すると、Gmailを「メールソフト」ではなくデータベースとして扱えるようになります。
GAS Gmail検索クエリの基本条件
送信元で絞る(from)
from:example@gmail.com
特定クライアントや社内システム通知だけ抽出したい場面で便利です。
宛先指定(to)
to:test@example.com
件名検索(subject)
subject:請求書
経理業務の自動化ではかなり頻出です。
本文キーワード検索
報告書
件名にない情報も探せます。
AND条件
from:test subject:請求書
スペース区切りでANDになります。
OR条件
from:a OR from:b
複数送信元を対象にできます。
除外検索
-from:spam
不要メール除外は処理速度改善にも効きます。
日付条件はGAS実務で超重要
Gmail検索で最も実務インパクトが大きいのが期間指定です。
期間検索
after:2026/05/01 before:2026/05/31
直近〇日
newer_than:7d
よく使う単位はこちら。
- 1日 → 1d
- 7日 → 7d
- 1か月 → 1m
- 1年 → 1y
業務自動化では期間を必ず指定するクセを付けるのがおすすめです。
全メール対象は想像以上に重くなります。
状態条件検索で必要メールだけ拾う
未読メール
is:unread
スター付き
is:starred
添付ファイル付き
has:attachment
請求書PDF回収やレポート自動保存では定番です。
ラベル検索で業務整理を加速
label:重要
ラベル運用とGASを組み合わせると、自動分類システムを作れます。
例えば旅行ブログ運営なら、
- 案件
- 取材依頼
- 予約確認
- 広告関連
こんな整理も自動化できます。
GAS Gmail検索 query 実務パターン3選
① 直近7日の未読請求メール取得
const query =
"subject:請求書 is:unread newer_than:7d";
経理自動化の入り口です。
② 添付付きメール抽出
from:client@example.com has:attachment";
クライアント資料収集に便利です。
③ 月次レポート回収
subject:レポート after:2026/05/01 before:2026/05/31";
毎月決まったメールを回収する処理に向いています。
メール情報をスプレッドシートへ自動出力する方法
GAS実務で非常に多いのが「メール → データ化」です。
function exportMail(){
const sheet =
SpreadsheetApp.getActiveSpreadsheet()
.getActiveSheet();
const threads =
GmailApp.search("newer_than:7d");
let output=[];
threads.forEach(thread=>{
thread.getMessages().forEach(msg=>{
output.push([
msg.getDate(),
msg.getFrom(),
msg.getSubject()
]);
});
});
sheet.getRange(
1,1,
output.length,
3
).setValues(output);
}
これだけでメール情報が一覧化されます。
旅行予約管理、問い合わせ管理、請求管理など応用範囲はかなり広いです。
添付ファイルを自動保存するGAS実装
threads.forEach(thread=>{
thread.getMessages().forEach(msg=>{
const attachments =
msg.getAttachments();
attachments.forEach(file=>{
DriveApp.createFile(file);
});
});
});
PDF請求書や画像ファイルを自動保存できます。
毎日同じ作業をしているなら、かなり時短になります。
GAS Gmail検索のパフォーマンス改善ポイント
件数制限を使う
GmailApp.search(query,0,50);
- 第2引数:開始位置
- 第3引数:取得件数
分割処理する
for(let i=0;i<5;i++){
GmailApp.search(
query,
i*50,
50
);
}
大量メール環境では重要です。
GAS Gmail検索で初心者がやりがちなミス
- 件数制御をしない
- messagesの二重ループを忘れる
- 期間条件を入れない
- getBody()とgetPlainBody()を混同する
特にこれ。
getBody()
HTMLが返ります。
getPlainBody()
テキストが返ります。
後から文字解析するなら後者が便利です。
GAS Gmail検索の本質は「メールをデータベース化すること」
GASを実務で強く使う人は、メールをただ読む対象として見ていません。
考え方はこうです。
Gmail = 非構造データDB
そこから、
- 検索する
- 構造化する
- 集計する
- 通知する
- 自動処理する
この流れを作れると、業務改善の幅が一気に広がります。
まとめ|GAS Gmail検索 queryを使いこなして実務レベルへ
最後に重要ポイントを整理します。
- queryは条件定義そのもの
- 期間指定は必須
- 件数制限で高速化
- メールはデータとして扱う
- スプレッドシート連携で真価を発揮する
GASで一段レベルアップしたいなら、
query → 取得 → オブジェクト化 → 集計 → 出力
この流れを自然に組めるようになること。
ここまで来ると、GASは単なる自動化ツールではなく、業務を仕組み化する武器になります。







0 件のコメント:
コメントを投稿