Outlook で受信トレイ以外のフォルダーに対してルールを自動的に実行するようにする

Outlook で受信トレイ以外のフォルダーに対してルールを自動的に実行するようにする

現在、Outlook を Gmail でセットアップしています。アカウント内のさまざまなフォルダー (ラベル) で実行されるルールをいくつか定義しています。GMail には、メールが受信トレイをスキップしてそれぞれのフォルダーに格納されるフィルターがすでにセットアップされています。

これらのフォルダーに新しいメールが届いても、ルールは実行されません (カテゴリを設定するためのものです)。手動で実行する必要があります。メールが最初に受信トレイに届くのではなく、フォルダーに直接届くためだと思います。Outlook でこれらのフォルダーに対してルールを自動的に実行する方法はありますか? スケジュールされた実行でも問題ありません。

答え1

これがそれです。これは Junk フォルダーに固有のものであり (olFolderJunk は Outlook 定数です)、"JUNK_FILTER_" というプレフィックスが付いた、私が作成したすべてのフィルターが実行されることに注意してください。

これは楽観的であり、実質的にエラー チェックがないため、自己責任で使用してください。理解していない場合は使用しないでください :)

Sub runRulesOnJunkFolder()
    Dim st As Outlook.Store
    Dim myRules As Outlook.Rules
    Dim rl As Outlook.Rule
    Dim count As Integer
    Dim ruleList As String
    Dim rulePrefix As String
    Dim ruleFolder As Long

    '
    Dim outlookApp As Outlook.Application
    Dim objNS As NameSpace


    ruleFolder = olFolderJunk
    rulePrefix = "JUNK_FILTER_"

    Set objNS = Application.GetNamespace("MAPI")
    Set objJunkfolder = objNS.GetDefaultFolder(ruleFolder)

    ' get default store (where rules live)
    Set st = Application.Session.DefaultStore
    ' get rules
    Set myRules = st.GetRules

    ' iterate all the rules
    For Each rl In myRules
        ' determine if it's an Inbox rule and rule name prefix matches
        If rl.RuleType = olRuleReceive And Left(rl.Name, Len(rulePrefix)) = rulePrefix Then

            ' if so, run it
            rl.Execute ShowProgress:=True, Folder:=objJunkfolder
            count = count + 1
            ruleList = ruleList & vbCrLf & rl.Name
        End If
    Next

    ' tell the user what you did
    ruleList = "These rules were executed against the folder: " & objJunkfolder.Name & vbCrLf & ruleList
    MsgBox ruleList, vbInformation, "Macro: runRulesOnJunkFolder"

    Set rl = Nothing
    Set st = Nothing
    Set myRules = Nothing
    Set objJunkfolder = Nothing
    Set objNS = Nothing
End Sub

答え2

カテゴリは IMAP アカウントでは正しく機能しません。IMAP アカウントの Outlook オブジェクトに割り当てられたカテゴリはサーバーと同期されないため、特定の Windows インストールの特定のユーザー アカウントの特定の Outlook プロファイルにのみ表示されます。IMAP と Outlook で実際に使用できるのは、標準のオン/オフ フラグだけです (GMail や Exchange がサポートするさまざまなタイプではありません)。

カテゴリは Exchange アカウントで使用することを目的としており、クライアント側のルールで割り当ててサーバーと同期することができます。カテゴリは POP3 アカウントでも問題なく機能し、クライアント側のルールでカテゴリが割り当てられ、メールが並べ替えられます。

カテゴリーとしてできるExchange サーバー上のフォルダーに既に分類されている (サーバー側のルールを使用) 電子メールにカテゴリを割り当てる (クライアント側のルールを使用) ことができない場合、カテゴリは Exchange 以外のアカウントで使用することを意図していないため、ルールが機能していないと考えられます。

私の意見では、IMAP メールボックスの設定方法が特殊であるため、GMail はどのデスクトップ メール クライアントでも満足に使用できるとは思いません。

答え3

これを実行する 1 つの方法は、リマインダーが表示されるたびにマクロを起動できる定期的な予定を設定することです。マクロはフィルターを実行します。カレンダーに予定がたくさんある場合、これは少し面倒に思えますし、必要なときにマクロが起動される可能性は低いでしょう。私は個人的にこれを試したことはありませんが、可能だと確信しています。

私が持っている特定のフォルダーで特定のプレフィックスで名前が付けられたフィルターを実行するマクロを作成します。マクロはフォルダーを選択し、フィルターはアクション (私の場合は「削除」) を決定します。VBA を知っている人なら誰でも適応できます。

マクロを作成した後、それを実行するボタンを Outlook ツールバーに追加しました。気が向いたときにいつでもこのボタンをクリックします。

必要に応じて変更できると思われる場合は、ソース コードを投稿できます。

答え4

これらのルールは GMail で直接設定できます。リンク

関連情報