システムwiki

outlook:「本文に特定の単語がある」は、メールの会話履歴では機能しません

RasmusH 解決済 最終更新日:2020-08-21 11:01

たとえば、メールを受信するたびに特定の単語がないか本文をScanして、特定のカテゴリを与えるなどのアクションを実行するというルールを作成したいとします.

これはルールウィザードで問題なく機能しますが、問題は、その電子メールが一連の電子メールの一部である場合に発生します.ルールを最新のものにのみ適用したい チェーンの.ルールで「hi rasmus」をScanするとします.ジョンは、「Hi Rasmus」で始まるメールを私に書きます.その後、分類されます.問題ありません.

その後、私は彼に返信します.

その後、彼は返信しますが、返信のどこにも「こんにちはrasmus」と記載されていません.それ 会話履歴全体をScanするため、
まだ
分類されます.

これは、共有メールを使用し、カテゴリを使用して自分自身または同僚にメールを割り当てる場合の問題です.

ここでの回避策は何ですか?

返信リスト(回答:8)

1 #
DianePo
こんにちはラスムス.
残念ながら、ルールだけでは新しいテキストを取得したり、引用されたメッセージをスキップしたりすることはできません.
Outlookデスクトップソフトウェアを使用している場合は、マクロを使用してこれを実行できます.ただし、Windows上のOutlookデスクトップソフトウェアでのみ機能し、Web上のOutlookでは機能しません.
応答1# ->にスキップ
2 #
RasmusH

こんにちはDiane

私はこれにVBAを使用する必要があるかもしれません.私は

のようなものと仕事をすることができなかった

プライベートサブApplication_Newmail()

item.body= "こんにちはrasmus"

カテゴリ.「rasmus」

の場合終了

終了SUB

私は正確なコードを覚えていませんが、それを仕事にすることができなかったのでそれを与え、構文を理解できなかったのでそれを与えました.私はExcelでVBAを使ってたくさん働いていましたが、私は彼らがどのように働いていて、Outlookで操作されているのでしょう.

コードはどのように見えますか?私はデスクトップアプリを使っています.

3 #
DianePo

それよりもはるかに多くのコードが必要です.:)私はコードサンプルを持っています-近いものを見つけることができるかどうかを確認します.
タグを付けるだけでよい場合は、スクリプトルールの実行を使用できます.ルールを使用して条件を検索し、スクリプトを使用してテストします.これは、スクリプトの実行がどのように機能するかを示しています.本体をチェックするためにコードを記述するだけです.
https://www.slipstick.com/outlook/rules/outlook...
「rasmus」(または「hi rasmus」)が最初の10文字以内(または適切な低さ)になると予想される場合番号)instr関数を使用します.
if instr(1、item.body、 "rasmus")<10 then
item.categories.add( "Rasmus")
end if

ETA:

これは私にとってより効果的です-

If InStr(1、Left(Item.Body、20)、 "diane"、1)<>0 Then

応答3# ->にスキップ
4 #
RasmusH

私はregeditでスクリプトの実行ルールを再設定するように管理しており、私のコードは次のとおりです:

Public Sub AutoCat(Item As Outlook.MailItem)

If InStr(1、Left(Item.Body、10)、 "rasmus"、1)<>0 Then
Item.Categories="Rasmus"
End If

End Sub

私も試しました:

  1. あなたのversionwithitem.categories.add( "Rasmus")
  2. モジュールを使用する
  3. ThisOutlookSessionを使用する
  4. Outlookを再起動する

しかし、それは割り当てません:(

5 #
DianePo
カテゴリを追加した後、item.saveを追加します.
応答5# ->にスキップ
6 #
RasmusH

これまでのところ、私はそれを働かせました、しかし複数のIFSを作る代わりに、私は複数のエントリを使って変数を作ることを考えていました.このようなものはありますか?

x= "Hir Rasmus"または "Hello Rasmus"

if instr(1、左(項目、10)、x、1)<>0 item.categories= "rasmus" item.save の場合は終了します

と見通しも始めるときにそれを実行することは可能です.

プライベートサブApplication_Startup()

薄暗いnewmail

X=「こんにちはrasmus」または「こんにちはrasmus」

受信トレイ

の各Newmailの場合

newmail.categories= ""

IF instr(1、左(item.body、10)、x、1)<>0

item.categories= "rasmus"

item.save

の場合終了

の場合終了

次の

end sub

7 #
DianePo
変数を使用するのではなく、さまざまなイントロを考慮に入れるために、文字数(Left(Item.Body、10))を増やします.異なるイントロをチェックするには、caseステートメントまたは配列を使用する必要があります.
応答7# ->にスキップ
8 #
RasmusH

私は今フルコードを作っていて、私が自分のEメールでテストするときに機能しますが、共有された電子メールで作業する必要があります.これを含めるコードの変更を試みました:

DIM NSとしてネームスペース

薄暗い項目

DIM受信箱Mapifolder

Outlook.Recipient

としての

Dim Olsharename

set ns= getNamespace( "mapi")

inbox= ns.getShareddeFaultFolder(Olsharename、OlfolderInbox)

しかし、ルールはまだ燃えません.私はそれが言っているから(クライアントのみ)と私のITの男はそれがウェブメールを通して行う必要があると私たちは最初に戻ってきたとき、私たちはあなたが私にWebメールの規則を知らせたときに、私たちは最初に戻ってきました.できません
「スクリプトを実行する」右?

ここで共有Eメールを追加しようとしました:

VBAが共有された電子メールを見ることができないことを読んでください.しかし、私はパスワードの入力を求められていて、なしがあります.私はそれが会社の政策のことかもしれないと思います.