Gmailの自動アーカイブ条件を実行前に確認|GASで対象メールをdry-run監査
ツールおじ|GoogleアカウントをAIエージェント化
古い通知メールを自動アーカイブしたい場合、検索条件が広すぎると必要なメールまで受信トレイから外れるおそれがあります。この記事では、Gmail検索条件に一致する件数と少量の匿名化IDだけを確認する、無料のGAS例を紹介します。アーカイブ、削除、ラベル変更、送信は行いません。
先に知っておきたいこと
- `DRY_RUN = true` を固定し、メールを変更しません。
- 検索条件は `in:inbox` と期間条件を必須にし、最大100件で停止します。
- 件名、本文、差出人、宛先はログへ出しません。
- 自動アーカイブを実装する前の候補確認専用です。
コピーして使える最小コード
const DRY_RUN = true;
const SEARCH_QUERY = 'in:inbox older_than:30d label:notifications';
const MAX_RESULTS = 100;
function auditGmailArchivePlanFree() {
if (DRY_RUN !== true) throw new Error('安全のためDRY_RUN=trueで実行してください');
const query = String(SEARCH_QUERY).trim();
if (!query.includes('in:inbox')) throw new Error('in:inbox を検索条件へ含めてください');
if (!/(older_than:|before:)/.test(query)) throw new Error('期間条件を指定してください');
if (MAX_RESULTS < 1 || MAX_RESULTS > 100) throw new Error('MAX_RESULTSは1〜100にしてください');
const threads = GmailApp.search(query, 0, MAX_RESULTS + 1);
if (threads.length > MAX_RESULTS) {
throw new Error('候補が100件を超えました。検索条件を絞ってください');
}
const sample = threads.slice(0, 10).map((thread, index) => ({
row: index + 1,
idSuffix: thread.getId().slice(-6),
messageCount: thread.getMessageCount()
}));
console.log(JSON.stringify({ query, candidateCount: threads.length, sample, dryRun: DRY_RUN }));
}実行手順
1. Apps Scriptへコードを貼り付け、検証用ラベルを用意します。
2. `SEARCH_QUERY` を少数のメールだけに一致する条件へ変更します。
3. `auditGmailArchivePlanFree` を実行し、権限を確認します。
4. 実行ログの候補件数と匿名化IDを確認します。
5. 件数が想定外なら条件を絞り、必要なメールが含まれないことを人が確認します。
失敗しやすい点と停止条件
- `in:inbox` または期間条件がなければ停止します。
- 候補が100件を超えた場合は停止し、検索条件を絞ります。
- Gmail検索演算子の結果はアカウントの状態で変わります。少量の検証用ラベルから始めてください。
- このコードは候補を読むだけで、`moveToArchive` やラベル操作を呼びません。
公開前チェックリスト
- メールをアーカイブ・削除・送信していない
- 件名、本文、差出人、宛先をログへ出していない
- 検索件数に上限がある
- 期間条件と受信トレイ条件を必須にしている
- 少量の検証用ラベルで確認した
まとめ
自動アーカイブは、先に検索条件の広さを確認すると誤処理を避けやすくなります。まずは変更を加えないdry-runで候補件数を確認し、必要なメールが混ざらない条件を作ってから次の工程を検討してください。
Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Proを見る

GasおじのTips商品一覧を見る

※学習・検証用の例です。実データへ適用する前に少量の検証用メールで確認してください。Google公式・Google公認の商品ではありません。
