0

私は3つ(またはそれ以上)の部門を持っています。各部門には、電子メールの受信者がいます。例えば:

部門A:ジョン、メアリー。部門B:ジョン、クリス。部門C:ジョン。

このフィールド(テキストリスト)は、Deptという形式でEmailRecipientと呼ばれます。現在、各部門の各受信者に電子メールを送信することができました。しかし、メールの内容は同じなので、ジョンにメールを送信する必要があるのは1回だけです。テストエージェントで現在行ったことは次のとおりです。

Dim view As NotesView, doc As NotesDocument
Set view=db.Getview("Department")
Set doc=view.Getfirstdocument()
Do While Not doc Is Nothing
    ForAll x In doc.EmailRecipient
        Set doc=db.Createdocument()
        doc.form="Memo"
        doc.subject="test"
        Call doc.Send(True, x)
    End ForAll
Loop

すでにEメールを送信している場合、次の部門のEmailRecipient配列でJohnをスキップするにはどうすればよいですか?

4

1 に答える 1

2

リストを使用します。LotusScriptのリストデータ型がわからない場合は、DominoDesignerヘルプデータベースで「リストの操作」を検索してください。

ループの外側で、リストを作成します。

dim alreadySent List as String

forall内で、それぞれの名前をリストに追加します。

alreadySent(x) = departmentName

そして最後に、doc.Sendを呼び出して、リストをチェックするifステートメントを作成します。

if isElement(alreadySent(x)) = True then
   ' print "Skipping " + x + " because the message was already to this recipient sent for department " + alreadySent(x) 
   Call doc.send(True,x)
end if

ここで少し即興していることに注意してください。あなたの部門フォームには名前のフィールドがあると思います。あなたが実際にそれを読んでいないことは知っていますが、追加するのは簡単です。'alreadySent List as Boolean'を簡単に宣言し、alreadySent(x)= Trueを割り当てることができるため、実際に行う必要はありませんが、文字列リストを使用して各受信者にdepartmentNameを割り当てることで、どの部門を追跡できます。あなたはすでにこのユーザーを見ました。私はそれがどのように役立つかを示すためにコメントアウトされたprintステートメントを含めました。

于 2012-09-29T00:35:52.913 に答える