Wie kann ich es denn bewerkstelligen dass ich automatisch alle Kalendereinträge die älter sind als 1 Jahr löschen lasse? Oder halt alle aus dem letzten Jahr?
Kalendereinträge automatisiert löschen
- geordi
- Erledigt
-
-
Z.b. über die Archivierungseinstellungen oder du baust dir einen Agenten der dies macht
-
Den musst du nicht von Grund auf bauen. In der 7er Schablone, bzw. in der OpenNTF-Schablone (aus ersterer übernommen) gibt es den CalendarCleanup-Agenten. Den kannst du als Ausgangspunkt hernehmen
-
Hab das mal getestet, hab einen Agenten gebastelt der auf den Ordner Kalender geht und dort alle Dokumente löschen soll die ein Erstellungsdatum haben vor dem 1.1.2005.
Beim Kollegen läuft der auch wunderbar ... aber bei mir nicht und bei nem anderen Kollegen auch nicht, kommt immer die Fehlermeldung dass kein Dokument ausgewählt wäre.
Idee? -
Erstelldatum halte ich nicht für ein gutes Feld, denn Du kannst heute einen Termin erstellen, der erst in x Jahren ist. Verwende besser StartDate.
Wie ist es mit wiederkehrenden Terminen?
Zu Deinem Fehler: Stell den Agenten auf alle Dokument, dann muss kein Dokument mehr markiert werden.
Gruß
Dirk -
Ich will ja aber nicht alle Dokumente löschen sondern nur die im Kalender ... wenn ich den auf alle Dokumente stelle dann löscht er doch auch Mails, oder?
-
bei dem Agenten kannst DU eine Dokumentenauswahl eintragen oder im Script kannst Du dies auch über eine Ansicht, Search usw. bewerkstelligen.
Gruß
Dirk -
Wie jetzt ...
ZitatZu Deinem Fehler: Stell den Agenten auf alle Dokument, dann muss kein Dokument mehr markiert werden
Zitatbei dem Agenten kannst DU eine Dokumentenauswahl eintragen
Was denn nun?
Ich hab von Script derzeit noch null Plan ... hab mir den also zusammengeklickt ... geh in meinem Mail auf Agent erstellen, Dokumente aus dem Kalender mit Startdate vor dem 1.1.2005 und die soll er aus der Datenbank löschen.
Dann schliess ich aus Vorsorge mal mein Mail, öffne es wieder, starte den Agenten und er bringt mir den Fehler dass keine Dokumente ausgewählt wären bzw. gefunden werden konnten.
Aber es sind defintiv noch alte Einträge drin im kalender und deren StartDate ist auch vor dem 1.1.05, das hab ich auch mal geguckt. -
Du kannst auch das $PurgeDate als Auswahlkriterium heranziehen... Schau Dir mal in der Ressourcendatenbank den Agenten an, der dort das selbe erledigt....
Mußt Du nur wieder auf Kalenderdokumente umbiegen...Gruß
Norbert
Code
Alles anzeigenSub Initialize Dim s As New NotesSession Dim db As NotesDatabase Dim dc As NotesDocumentCollection Dim doc As NotesDocument Dim dcNotice As NotesDocumentCollection Dim docNotice As NotesDocument Dim holdoc As notesdocument Dim nextdoc As Notesdocument Dim tmpdt As New NotesDateTime("") Dim purgedate As New NotesDateTime ("Today") Dim n As Integer Dim StartDate As Variant Dim OkToPurge As Integer Dim profile As NotesDocument Dim nextProfDoc As NotesDocument Dim ProfileDoc As NotesDocument Set db=s.CurrentDatabase Set dc=db.UnprocessedSearch("@Contains(Form;""Reservation"")", tmpdt,0) Set dcNotice=db.UnprocessedSearch("@Contains(Form;""Notice"")", tmpdt,0) ' to remove all docs with form="Notice" from db Set docNotice = dcNotice.GetFirstDocument For j=1 To dcNotice.count Set holddoc=dcNotice.GetNextdocument(docNotice) If Not(docNotice Is Nothing) Then docNotice.Remove (True) Set docNotice = holddoc Next ' to remove all profile docs with no "$Busyname" Set dcProf= db.GetProfileDocCollection("CalendarProfile") Set ProfileDoc = dcProf.GetFirstDocument For i=1 To dcProf.count Set nextProfDoc=dcProf.GetNextdocument(ProfileDoc) If Not(ProfileDoc.HasItem("$BusyName")) Then ProfileDoc.Remove (True) Set ProfileDoc = nextProfDoc Next Call purgedate.AdjustDay (-14) Set doc=dc.GetFirstDocument While Not (doc Is Nothing) If doc.HasItem("$NoPurge") And Not(Isempty(doc.GetItemValue("$NoPurge")(0))) Then Dim tmpNoPurge As New NotesDateTime(doc.GetItemValue("$NoPurge")(0)) If tmpNoPurge.IsValidDate And tmpNoPurge.DateOnly <>"" Then StartDate=doc.GetitemValue("$NoPurge") Else StartDate=doc.GetitemValue("StartDateTime") End If Else StartDate=doc.GetitemValue("StartDateTime") End If Forall eachstartdate In StartDate Dim tmpstartdate As New NotesDateTime(eachstartdate) If tmpstartdate.IsValidDate Then If purgedate.TimeDifference(tmpstartdate)>0 Then OkToPurge=True Else OkToPurge=False Goto DoNextDocument End If Else Goto donextdocument End If End Forall If OkToPurge Then Set nextdoc=dc.GetNextDocument (doc) doc.Remove (True) Else Call s.UpdateprocessedDoc(doc) End If DoNextDocument: If doc Is Nothing Then Set doc=nextdoc Else Set doc=dc.GetNextDocument (doc) End If Wend End Sub
-
Machs doch ganz einfach über die Archiveinstellungen.
Dort kannst du auch einstellen, daß eben nicht archiviert sondern nur gelöscht werden soll.
Auch kannst du dort problemlos auswählen, daß das nur für Kalendereinträge gilt -
Zitat
Was denn nun?
Die einstellung alle Dokument bezieht sich auf die Eigenschafts-Box des Agenten und im Programmierfenster bekommst Du bei den Objekten noch eine "Dokuemnetenauswahl". Die Dokumentenauswahl bekommst Du bei Funktionen, einfache Aktion, Lotusscript und importiertem Java.
Sind also wirklich verschiedene Einstellungen.
Gruß
Dirk -