HCL Notes / Domino / Diverses > Entwicklung
Agent zum Ändern vom SendTo Feld?
Peter Klett:
Du musst dann auch beachten, dass SendTo ein Mehrfachwert sein kann.
sendto und newsendto dürfen kein String sein, sondern Variant, und die Überprüfung, ob die alte Domäne enthalten ist, musst Du je Element vornehmen. Die alte Domäne könnte ja z.B.auch im zweiten Element stehen
EDIT: Ach ja, und copyto und blindcopyto müsstest Du auch noch berücksichtigen.
Also ehrlich, ich würde den Zirkus nicht machen. Wenn die nicht dran denken, den Empfänger rauszunehmen, bekommen die eben selbst eine Mail, ja und? Entf F9 weg is. Und beim dritten Mal werden sie wohl dran denken ...
schroederk:
Vielen Dank für die Hinweise.
Ich bin schonmal einen Schritt weiter, aber würde jetzt doch nochmal eure Unterstützung gebrauchen können.
Das script bricht jetzt an der Formel ab: Error 221 invalid formuila.
Die angewendete Formel sieht so aus:
--- Code: ---(@ReplaceSubstring(""max mustermann" <max.mustermann@altedomain>" ; "@altedomain" ; "@neuedomain"))
--- Ende Code ---
Ich bin mir recht sicher, dass das an den im zu dursuchenden String enthaltenen Anführungsstrichen liegt.
Habt ihr eine Idee, wie damit umgehen könnte?
Vorher ersetzen (z.B. durch ein Sternchen) und danach wieder zurück?
Peter Klett:
--- Zitat von: schroederk am 20.03.20 - 07:13:14 ---
--- Code: ---(@ReplaceSubstring(""max mustermann" <max.mustermann@altedomain>" ; "@altedomain" ; "@neuedomain"))
--- Ende Code ---
--- Ende Zitat ---
Du willst doch bestimmt nicht den zusammengebauten String ersetzen, wenn Du den kennst, kannst Du ihn doch auch gleich richtig setzen. Aber vielleicht verstehe ich es auch nicht wirklich, was Du da machst ;). Du könntest es mit einfachen Anführungszeichen probieren
--- Code: ---(@ReplaceSubstring('"max mustermann" <max.mustermann@altedomain>' ; "@altedomain" ; "@neuedomain"))
--- Ende Code ---
Was Du aber wohl wirklich brauchst, ist ein
--- Code: ---(@ReplaceSubstring(SendTo ; "@altedomain" ; "@neuedomain"))
--- Ende Code ---
schroederk:
Naja, ich will, dass bei jeder eingehende Mail geprüft wird, ob die alte Domain bei den Empfängern vorkommt und wenn ja, dann durch die neue Domain ersetzen. Damit die lieben Kollegen, 2 Sekunden Zeit sparen und nicht mehr beim Antworten die Kopie an die alte Domain entfernen müssen.
Das Script sieht aktuell wie folgt aus (die Schleife, mit der ich vorher jeden einzelnen Empfänger geprüft habe, habe ich aktuell auskommentiert)
Das Script wirft aktuell einen Fehler auf der Console: *** CheckRecipientOldDomain: Error occured 0: in line 0. Agent stopped.
--- Code: --- Dim session As New NotesSession
Dim doccol As NotesDocumentCollection
Dim newemail As NotesDocument
Dim newsendto() As String
Dim formula As String
Dim i As Integer
On Error GoTo HandleError
Set doccol = session.currentdatabase.unprocesseddocuments ' hole alle neuen eMails
Set newemail = doccol.getfirstdocument ' fange beim ersten Document an
While Not (newemail Is Nothing)
Print "*** Test ***"
Print "*** CheckRecipientOldDomain Subject=" & CStr(newemail.Getitemvalue("Subject")(0))
' Erase newsendto
' i = 0
' ForAll xsendto In newemail.SendTo
' ReDim Preserve newsendto(i)
' Print "*** untersuche: " & xsendto
' If (InStr(xsendto, "@altedomain") > 0) Then ' Wenn Adresse noch alte Domain beinhaltet, dann
' Print "*** gefunden!! "
' formula = |@ReplaceSubstring("| & xsendto & |" ; "@altedomain" ; "@neuedomain")|
' xsendto = Evaluate(formula)
' Print "**** geändert auf " & xsendto
' End If
' newsendto(i) = xsendto
' i = i + 1
' End ForAll
' Call newemail.Replaceitemvalue("SendTo", newsendto) ' setze korrigerte Empfängerliste
formula = |@ReplaceSubstring(newemail.SendTo ; "@altedomain" ; "@neuedomain" )|
Evaluate(formula)
Call newemail.Save(True, False)
Set newemail = doccol.getnextdocument(newemail)
Wend
doccol.Updateall
HandleError:
Print "*** CheckRecipientOldDomain: Error occured " & Str(Err) & ": " & Error$ & " in line " & Str(Erl) & ". Agent stopped."
Exit Sub
--- Ende Code ---
Peter Klett:
Mal aus dem Bauch unter Beibehaltung Deiner Scriptteile, ohne Anspruch auf Fehlerfreiheit
--- Code: --- Dim session As New NotesSession
Dim doccol As NotesDocumentCollection
Dim newemail As NotesDocument
Dim newsendto As Variant
On Error GoTo HandleError
Set doccol = session.currentdatabase.unprocesseddocuments ' hole alle neuen eMails
Set newemail = doccol.getfirstdocument ' fange beim ersten Document an
While Not (newemail Is Nothing)
Print "*** Test ***"
Print "*** CheckRecipientOldDomain Subject=" & CStr(newemail.Getitemvalue("Subject")(0))
If Instr (Join (newemail.SendTo, ":"), "@altedomain") > 0 Then
newsendto = Evaluate (|@ReplaceSubstring(SendTo ; "@altedomain" ; "@neuedomain")|, newemail)
Call newemail.Replaceitemvalue("SendTo", newsendto) ' setze korrigerte Empfängerliste
Call newemail.Save(True, False)
End If
Set newemail = doccol.getnextdocument(newemail)
Wend
doccol.Updateall
HandleError:
Print "*** CheckRecipientOldDomain: Error occured " & Str(Err) & ": " & Error$ & " in line " & Str(Erl) & ". Agent stopped."
Exit Sub
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln