Gmailラベルの付け間違いを変更前に発見|GASで対象メールをdry-run監査

Gmailラベルの付け間違いを変更前に発見|GASで対象メールをdry-run監査

Gasおじ|GoogleアカウントをAIエージェント化

Gasおじ|GoogleアカウントをAIエージェント化

「自動整理を始めたいけれど、必要なメールまで誤って分類しそう」。そんな不安があるときは、いきなりラベルを付けず、まず検索条件と対象件数だけを確認します。この記事ではGmailを変更しない無料範囲のGASで、候補メールをdry-run監査する方法を紹介します。

この無料コードでできること

  • Gmail検索式の空欄と危険な広すぎる条件を検査する
  • 候補メールの件数、スレッドID、現在のラベル名だけをログへ出す
  • ラベルの追加・削除、送信、既読化を一切行わない
  • 最大確認件数を超えたら停止する

先に知っておきたい制限

  • コードは監査専用です。ラベルを自動付与しません。
  • 初回実行時はGmailを読む権限の承認が必要です。
  • 件名や本文、差出人アドレスはログへ出しません。
  • Gmail検索の結果や実行上限はアカウント状態により変わります。まずテスト用メールで確認してください。

コピーして使える最小コード

function previewGmailLabelCandidatesFree() {
  const CONFIG = {
    query: 'newer_than:7d has:nouserlabels',
    maxThreads: 20,
    DRY_RUN: true
  };

  if (CONFIG.DRY_RUN !== true) {
    throw new Error('安全のためDRY_RUNはtrue固定です。');
  }

  const query = String(CONFIG.query || '').trim();
  if (!query) throw new Error('検索条件が空です。');
  if (query === 'in:anywhere' || query === 'all') {
    throw new Error('対象が広すぎる検索条件です。');
  }

  const maxThreads = Number(CONFIG.maxThreads);
  if (!Number.isInteger(maxThreads) || maxThreads < 1 || maxThreads > 50) {
    throw new Error('maxThreadsは1〜50の整数にしてください。');
  }

  const threads = GmailApp.search(query, 0, maxThreads + 1);
  if (threads.length > maxThreads) {
    throw new Error('候補が上限を超えました。検索条件を絞ってください。');
  }

  const result = threads.map(function(thread) {
    return {
      threadId: thread.getId(),
      labels: thread.getLabels().map(function(label) {
        return label.getName();
      })
    };
  });

  console.log(JSON.stringify({
    dryRun: true,
    query: query,
    candidateCount: result.length,
    candidates: result
  }));
}

実行手順

1. Google Apps Scriptで新しい検証用プロジェクトを作ります。

2. コードを貼り、`query`を少量のテストメールだけに合う条件へ変更します。

3. `previewGmailLabelCandidatesFree`を実行し、Gmail読み取り権限を確認します。

4. 実行ログの`candidateCount`とラベル名を確認します。

5. 件数が想定外なら、ラベル操作を追加せず検索条件を見直します。

失敗しやすい点

  • `newer_than`や送信元などの条件を付けず、対象を広げすぎる
  • 個人情報を含む件名や本文をログへ残す
  • 確認前に`addLabel`や`removeLabel`を追加する
  • 実行結果が0件なのに、検索条件が正しいと思い込む

公開前チェックリスト

  • 元メールを変更しないdry-runになっている
  • 候補件数に上限がある
  • 件名、本文、差出人アドレスをログへ残さない
  • 検索条件が空または広すぎる場合に停止する
  • テスト用メールで結果を確認した

まとめ

Gmail整理は、ラベルを付ける処理より先に「どのメールが対象になるか」を確認すると安全です。まず読み取り専用のdry-runで件数と現在のラベルだけを監査し、検索条件を小さく調整してください。

関連する有料Tips「Morning ToDo Mail Pro(朝のToDoメールGAS)」を見る

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

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


あなたも記事の投稿・販売を
始めてみませんか?

Tipsなら簡単に記事を販売できます!
登録無料で始められます!

Tipsなら、無料ですぐに記事の販売をはじめることができます Tipsの詳細はこちら
 

この記事のライター

Gasおじ|GoogleアカウントをAIエージェント化

おう、Gasおじだ。 AIツールとSaaSに散々突っ込んで遠回りした結果、最後に強かったのは「今あるGoogleアカウント」だった。 今ではAIエージェントであらゆるタスクを自動化して無双してるぞ。 GAS、スプレッドシート、フォーム、Gmail、AIエージェントを組み合わせれば、個人でも小さな会社でも、手作業だらけの業務はかなり自動化できる。 ここでは机上のAI論じゃなく、現場で動くテンプレ、コード、手順だけを置いていくぞ。 高いツールを増やす前に、まずお前さんのGoogleアカウントを仕事するエージェントに変えようじゃないか。

このライターが書いた他の記事

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
  • GASのtry-catch入門|元データを守るエラー処理とログの実装例

  • Gasおじ式 X投稿キュー自動実行GAS Pro|危ない時だけ止まる

    ¥2,980
    1 %獲得
    (29 円相当)

関連のおすすめ記事

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
    Gasおじ|GoogleアカウントをAIエージェント化

    Gasおじ|GoogleアカウントをAIエージェント化

  • USBメモリで持ち運べるLinux Mint 22.1と永続的な書き込み領域の作成法【Rufus だけで作成する方法を初心者向けに徹底解説】

    ¥500
    1 %獲得
    (5 円相当)
    SmartSenior

    SmartSenior

  • 【Python】 Con-Que 【データベース接続】

    ¥3,000
    1 %獲得
    (30 円相当)
    GoGorilla

    GoGorilla