it-swarm-ja.com

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

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

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

1
tHeSiD

ここにあります。これは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
1
horatio

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

カテゴリはExchangeアカウントで使用することを目的としており、クライアント側のルールを割り当ててサーバーと同期することができます。また、カテゴリが割り当てられ、電子メールがクライアント側のルールでソートされるPOP3アカウントでも正常に機能します。

(サーバー側のルールを使用して)E​​xchangeサーバー上のフォルダーに既に並べ替えられている電子メールに(クライアント側のルールを使用して)カテゴリcanを割り当てると、ルールが機能していないと思います。カテゴリは、Exchange以外のアカウントで使用することを意図したものではありません。

私の意見では、IMAPメールボックスの設定方法が変わっているため、GMailをデスクトップの電子メールクライアントで十分に使用できるとは思いません。

1
paradroid

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

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

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

ニーズに合わせて変更できると思われる場合は、ソースコードを投稿できます。

0
horatio