Domino 9 und frühere Versionen > ND7: Entwicklung
Inbox bereinigen
HarryB:
--- Zitat von: m3 am 19.08.08 - 11:19:46 ---1) "ich schreibe gerade einen Agenten, der einmal die Woche über die Mailbox Inbox laufen soll und alle Mails, die älter sind als 30 Tage, in einen anderen Ordner verschieben. Zusätzlich soll das ganze nur laufen, wenn mehr als 200 Dokumente in der Mailbox Inbox sind." - dann versteht man auch, was Du meinst.
--- Ende Zitat ---
Wir korrigiert. :-[
--- Zitat von: m3 am 19.08.08 - 11:19:46 ---2) Ich würde eher über NotesView.AllEntries iterieren. Mit Löschen/Verschieben und GetNextDocument bin ich schon mal eingefahren.
--- Ende Zitat ---
Über AllEntries bin ich auch gestolpert. Ich probiere das mal.
--- Zitat von: m3 am 19.08.08 - 11:19:46 ---3) Oder gleich mit NotesView.FTSearch nur die Dokumente bearbeiten, die den Kriterien entsprechen.
--- Ende Zitat ---
Es sind nicht alle Datenbanken volltextindiziert. Das ist dann auch kein Spaß.
Viele Grüße
Harry
HarryB:
--- Zitat von: m3 am 19.08.08 - 11:19:46 ---2) Ich würde eher über NotesView.AllEntries iterieren. Mit Löschen/Verschieben und GetNextDocument bin ich schon mal eingefahren.
--- Ende Zitat ---
Damit klappt es. :D
Anbei das funktionierende Script.
--- Code: ---Sub Initialize
'Inbox Maintenance
'Periodisches Aufräumen des Meileingangs zur Performanceverbesserung
Const archiveFolder = "Maileingang - Archiv" 'Name des anzulegenden Ordners
Const inboxLimit = 200 'Anzahl Dokumente
Const maxAge = 30 'in Tagen
Dim ses As New NotesSession
Dim currentDb As NotesDatabase
Dim inbox As NotesView
Dim allEntries As NotesViewEntryCollection
Dim mailEntry As NotesViewEntry
Dim mailDoc As NotesDocument
Dim moveDoc As NotesDocument
Dim movedDocs As Integer
Dim mailCreated As NotesDateTime
Dim cutoffDate As NotesDateTime
Set currentDb = ses.CurrentDatabase
'Eingangsordner heranziehen
Set inbox = currentDb.GetView("($Inbox)")
'Prüfen, wie viele Dokumente im Eingang liegen; wenn Limit überschritten, aktiv werden
If (inbox.EntryCount > inboxLimit) Then
'Wenn Schwellwert überschritten, alls Mails die älter sind als x Tage in Archiv verschieben
Set cutoffDate = New NotesDateTime(Cstr(Today))
Call cutoffDate.AdjustDay(-1 * maxAge)
Set mailCreated = New NotesDateTime("")
Set allEntries = inbox.AllEntries
Set mailEntry = allEntries.GetFirstEntry
While Not (mailEntry Is Nothing)
Set mailDoc = mailEntry.Document
mailCreated.LSLocalTime = mailDoc.Created
If (cutoffDate.TimeDifference(mailCreated) > 0) Then
Set moveDoc = mailDoc
End If '(cutoffDate.TimeDifference(mailCreated) > 0)
Set mailEntry = allEntries.GetNextEntry(mailEntry)
If Not (moveDoc Is Nothing) Then
movedDocs = movedDocs + 1
Call moveDoc.PutInFolder(archiveFolder, True)
Call moveDoc.RemoveFromFolder("($Inbox)")
Set moveDoc = Nothing
End If 'Not (moveDoc Is Nothing)
Wend 'Not (mailDoc Is Nothing)
End If '(inbox.EntryCount > inboxLimit)
End Sub
--- Ende Code ---
Hirnbeisz:
Im Ausgangsscript hätte aus meiner Sicht auch ein
If Not (moveDoc Is Nothing) Then
Set mailDoc = inbox.GetfirstDocument
else
Set mailDoc = inbox.GetNextDocument(mailDoc)
gereicht!
Gruß Aloisius! ;)
koehlerbv:
Das ist richtig.
Probleme treten sonst allein schon bei ResponseDocs auf, da mit RemoveFromFolder diese automatisch mitgenommen werden. An sich ist das lieb und nett von Notes, aber mit solchen Konstrukten fällt man dann eben auf die Nase.
Bernhard
@"Hirnbeisz": Hast Du auch einen richtigen Namen? Das wird hier sehr gern gesehen.
Auf jeden Fall aber Danke einen Deinen helfenden Einstieg hier.
HarryB:
--- Zitat von: koehlerbv am 19.08.08 - 20:28:04 ---Probleme treten sonst allein schon bei ResponseDocs auf, da mit RemoveFromFolder diese automatisch mitgenommen werden. An sich ist das lieb und nett von Notes, aber mit solchen Konstrukten fällt man dann eben auf die Nase.
--- Ende Zitat ---
Ist das auch bei Ansichten/Ordnern so, in denen die Antworten nicht hierarchisch angezeigt werden?
Viele Grüße
Harry
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln