- Gmailの「検索演算子」は、フィルターの条件には推奨されていません。
- 送信者や受信者、件名など、「わかりやすい項目」の方が推奨されています。
- しかし、警告されている検索演算子でも、「含む」に入力すれば既存メールを対象に動かすことはできました。
できるんだか、できないんだかハッキリしてほしいよね。
1. フィルターに検索演算子は推奨されていない
Gmailでフィルターを作成するときには、一つ注意点があります。
それは、検索演算子が推奨されていないことです。
検索演算子は、詳しい条件でメールを絞り込むために便利です。
たとえば、「before: 2023-01-01」検索演算子を使った検索から、フィルターを作成してみました。
フィルタの作成を確認
「label:」、「in:」、「is:」、日付範囲(「before:」、「after:」など)、またはスター(「has:yellow-star」など)の条件を指定したフィルタ検索は、受信メールに一致しないためおすすめしません。本当に次のステップに進んでもよろしいですか?
「OK」を押すと「無効なキーワード:すべてのメールを表示しています」と表示されてしまいます。
「受信メールに一致しないためおすすめしません」というのは、原文では「are not recommended as they will never match incoming mail」と表現されています1。
1-1. 状態変化と動作の整合性の問題
つまり、検索演算子は使っちゃダメってこと?
うーん。
これは「推奨されていない」という方が実態に近いようです。
確かに、検索演算子をフィルターに使ってしまうと、正しく機能しないおそれがあります。
たとえば、「is:」や日付範囲、スターなどの条件は、メールの状態が変わる可能性があります。
もし、フィルター内で状態を変更するような処理があれば、無限ループになり一貫した適用が難しくなります。
フィルターが期待通りに動作せず、重要なメールを見逃したり、誤って分類したりする可能性があるのです。
そこで、フィルターの条件は、以下のものが想定されています。
- 送信者(From)
- 受信者(To)
- 件名(Subject)
- 本文に含まれる言葉(Has the words)
- 本文に含まれない言葉(Doesn’t have)
- 添付ファイルの有無(Has attachment)
これらの条件なら、新しく届くメールに対して一貫して適用できます。
フィルターの信頼性が高めることができるのです。
2. 本当に使えないの?
しかし、検索演算子もフィルターに活用できることはできるようです。
たとえば、ハングアウトの履歴がGmailの受信トレイに表示される問題への解決方法として、「in:chats」をフィルタ機能で使う事例がありました2。
フィルタを作成して、ハングアウトの履歴を受信トレイから自動的に除外できたというのです。
2-1. 検索演算子が「抜け落ちる」
素直にフィルターに設定しようとするとできません。
非推奨のキーワードをみると、
- 「label:」、
- 「in:」、
- 「is:」、
- 日付範囲(「before:」、「after:」など)、
- スター(「has:yellow-star」など)
となっています。
たとえば、「before: 2020-01-01 category:promotions」で検索してみました。
フィルタを作成しようとすると、警告が表示されます。
無視してそのままフィルタを作成すると、「無効なキーワード」と表示されて勝手に検索条件が解除されています。
不穏な気配です。
処理を指定して「フィルタを作成」します。
「フィルタを作成しました」とは表示されたものの、いつまで経っても古いメールが削除されません。
フィルタ設定を確認すると、「条件」のないフィルタが追加されていました。
「before: 2020-01-01 category:promotions」という検索条件は、フィルタ作成時に抜け落ちてしまうのです。
3. なぜかラベルではできた?(label)
ところが、あれこれ試してみていくと、なぜかラベルでは有効なようでした。
- 条件:label: ちいラボのメルマガ
- 処理:削除する、〜通の一致するメールにもフィルタを適用する
フィルタ設定を確認してみると、「含む」の中に「label: ちいラボのメルマガ」と追加されていました。
3-1. 未読メールへの自動処理もできた(is: unread)
また、「is: unread」で検索した場合も、自動的に「label: unread」に変換されていたので、処理できました。
ただし、このままでは期間指定が使えないので、あまり有効に活用できません。
4. 実は「含む」に入れればよい(before)
どうも、「含む」の欄にポイントがありそうです。
実は、推奨されていない検索演算子でも「含む」に入れればよかったのです。
検索欄に検索演算子を入れた状態からフィルタを作成しようとすると、含むの条件から演算子が抜け落ちていました。
そこで、いったん表示された「含む」に検索演算子を手動で入力してみました。
すると、今度はフィルター条件がそのままで、処理を指定できました。
実際に、一致するメールにも適用する形でフィルターを作成すると、該当するメールをすべて削除できました。
もともと設定のメールフィルタの作成から、「含む」に条件を入れてもよかったんですね。
(補足)
- 英語版では、「Filter searches containing “label:”, “in:”, “is:”, date range (e.g. “before:” or “after:”) or stars criteria (e.g. “has:yellow-star”) are not recommended as they will never match incoming mail. Do you still wish to continue to the next step?」- Can I filter emails by a date range? – Gmail Community
- Gmail の受信トレイに残るハングアウトの履歴を非表示にしたいときの設定メモ : Way to Go