Hallo liebe @Notes-ler!
Lang lang ist's her, aber heute bitte ich mal wieder sehr um Hilfe.
Bei einem aktuellen Problem habe ich schon versucht, dies durch Recherchieren, Ausprobieren und Lernen zu lösen. Die ein oder anderen Anregungen habe ich schon versucht einzubauen.
Im Moment verzweifel ich aber eher.
Mir geht es darum, eine Anwendung zu erweitern, welche Besprechungstermine mit mehreren Teilnehmern erstellt und diese denen zur Annahme zukommen lässt.
Meine Rangehensweise ist derzeit wie folgt:
1. Ich erstelle (u.a. aus Platz- und Sicherheitsgründen) einen Kalendertermin (Besprechung) per Script ausgehend von meiner Anwendung in einer zweiten Datenbank (R8-Mail-Schablone).
2. Der Besprechung sollen Teilnehmer hinzugefügt werden und diese dann per Einladungen .. tja eingeladen werden.
3. Die Annahmen / Ablehnungen werde ich dann später wieder auswerten. (da bin ich aber noch lange nicht..)
Zu 1. habe ich folgenden Quellcode zur Verfügung:
Public Function Agent_ErstelleEinladungsmailXXX(strDocID As String)
Const strMailInDBPfad = "mail/mailin_bespiel.nsf"
On Error Goto Myerrorhandler
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim doc As NotesDocument
Set doc = db.GetDocumentByUNID(strDocID)
If doc Is Nothing Then
Print "ABBRUCH - doc not found"
Exit Function
End If
'*************************************************************************************************************************************************
Dim dbMailX As NotesDatabase
Dim docMailX As NotesDocument
Dim rtiMailX As NotesRichTextItem
Dim varStrBody As Variant
Dim arrTeilnehmerListe(2) As Variant
Dim ndtStart As NotesDateTime
Dim ndtEnde As NotesDateTime
Dim strTimeZone As String
Dim strExcludeFromView(1) As String
arrTeilnehmerListe(0) = "Teilnehmer 1"
arrTeilnehmerListe(1) = "Teilnehmer 2"
arrTeilnehmerListe(2) = "Teilnehmer 3"
strExcludeFromView(0) = "D"
strExcludeFromView(1) = "S"
'Daten für Mail/Kalender-DB des Vorstandssekretariats (für TOP-Planung & zu Terminvereinbarungen)
Set dbMailX = session.GetDatabase( db.Server, strMailInDBPfad )
If dbMailX Is Nothing Then
Call dbMailX.Open(db.Server, strMailInDBPfad )
If dbMailX Is Nothing Or Not(dbMailX.IsOpen) Then
Print "ABBRUCH - dbMailX not found"
Exit Function
End If
End If
' Termineinladung...................
Set docMailX = New NotesDocument(dbMailX)
docMailX.Form = "Appointment"
docMailX.From = session.UserName
docMailX.AppointmentType = "3"
docMailX.Subject = "Besprechnungsbeispiel"
Set rtiMailX = New NotesRichTextItem( docMailX, "Body" )
Call rtiMailX.AddNewline(2, False)
Call rtiMailX.AppendText("Folgende Besprechung soll geplant werden … usw." )
Call rtiMailX.AddNewline(1)
Call rtiMailX.Compact
Set ndtStart = New NotesDateTime( doc.Datum_von_NDT(0) )
Set ndtEnde = New NotesDateTime( doc.Datum_bis_NDT(0) )
docMailX.Location = "ABC"
docMailX.Chair = session.UserName
docMailX.AltChair = session.UserName
docMailX.Principal = session.UserName
docMailX.~$AltPrincipal = session.UserName
strTimeZone = "Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=97$ZN=W. Europe"
docMailX.CalendarDateTime = ndtStart.LSLocalTime
docMailX.StartDateTime = ndtStart.LSLocalTime
docMailX.StartDate = ndtStart.DateOnly
docMailX.StartTime = ndtStart.TimeOnly
docMailX.StartTimeZone = strTimeZone
docMailX.EndDateTime = ndtEnde.LSLocalTime
docMailX.EndDate = ndtEnde.DateOnly
docMailX.EndTime = ndtEnde.TimeOnly
docMailX.EndTimeZone = strTimeZone
docMailX.Alarms = "1"
docMailX.PreventCounter = "1"
docMailX.PreventDelegate = "1"
docMailX.ExcludeFromView = strExcludeFromView
docMailX.~$Alarm = 1
'docMailX.~$CSVersion = "2"
'docMailX.~$CSFlags = "c"
docMailX.~$PublicAccess = "1"
docMailX.~$HFFlags = "1"
docMailX.~$IconSwitcher = "Meeting"
docMailX.~$TableSwitcher = "Description"
docMailX.~$SMTPKeepNotesItems = "1"
docMailX.SchedulerSwitcher = "1"
docMailX.SequenceNum = 1
docMailX.UpdateSeq = 1
docMailX.WebDateTimeInit = 1
docMailX.SendTo = arrTeilnehmerListe
docMailX.EnterSendTo = arrTeilnehmerListe
docMailX.RequiredAttendees = arrTeilnehmerListe
docMailX.~$BusyPriority = "1"
docMailX.~$NoPurge = ndtEnde.LSLocalTime
docMailX.MailOptions=""
docMailX.tmpWhichList = ""
docMailX.OrgTable = "C0"
docMailX.OrgState = "x"
docMailX.Repeats = ""
docMailX.Resources = ""
docMailX.SaveOptions = ""
Call docMailX.ComputeWithForm(False, False)
Call docMailX.Save(True, False)
'Call docMailX.Send(False) 'Sende Mail
Ende:
Print "End"
'Agenthilfsdok wird beim nächsten Löschturnus mit gelöscht
doc.DeletionFlag = "X"
Call doc.Save( True, False )
Exit Function
Myerrorhandler:
Print "Error: " & Error$ & " (" & Cstr(Err) & ") - Line: " & Cstr(Erl)
Resume Ende
End Function
Mein Problem ist, dass dies nicht funktioniert.
Die Besprechungstermine (per Script) unterscheiden sich von den Feldern her immer recht stark von den manuell erstellten Terminen. Merkwürdiger Weise fliegen auch immer die Teilnehmer raus.
Es muss doch möglich sein, derartige Besprechungen mit Teilnehmern per Script zu erstellen!?
Fragen:
Wo steckt der Fehler im Script? Dürfen einige der Felder noch nicht gesetzt werden oder müssen diese teilweise andere Werte haben?
Oder ist die grundsätzliche Herangehensweise falsch? Wie schaut ggf. eine bessere aus?
Jeder gute Gedanke hilft.
Danke in jedem Fall schonmal, ich blicke nämlich nicht mehr durch!
Viele Grüße
Thomas