Domino 9 und frühere Versionen > ND8: Entwicklung
Besprechungstermine mit mehreren Teilnehmern per Script erstellen
Thomses:
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:
--- Code: ---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
--- Ende Code ---
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
Tode:
Lies Dir bitte das PDF mit dem Calendaring und scheduling schema durch... Da ist genau beschrieben, wie eine besprechung aufgebaut ist, wie man eine Notice verschickt, welche Felder wofür gefüllt werden müssen, etc. Etc.
Dann muss auch niemand den Spaghetticode nach möglichen fehlenden Feldern durchsuchen und Du lernst auch noch was dabei...
koehlerbv:
Torsten spricht wahr. Ich liefere dazu noch zwei Links:
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/cs_schema_toc
http://www-12.lotus.com/ldd/doc/uafiles.nsf/docs/WPNotesCSSchema/$File/csschema.pdf
Bernhard
Thomses:
Hallo Torsten, hallo Bernhard,
vielen Dank für Eure Hinweise und die Links! Da habe ich am Wochenende in jedem Falls reichlich "Stoff" zum Durcharbeiten.
Dennoch die Bitte zur Beantwortung der Verständnis-Frage bzgl der Herangehensweise - die Antwort würde mir sehr helfen.
a) Müssen ein Kalendereintrag für den Ersteller UND die Notice-Dokumente für die Teilnehmer erstellt werden?
oder
b) Muss "nur" das Kalendereintragdokument für den Ersteller erstellt werden und Notes kümmert sich dann gewissermaßen selbst um den Rest (Versenden der Einladungen beim Speichern)?
Ich vermute mal nach dem Hinweis von Torsten, dass a) der Weg ist...
Tode:
a) ja
b) nein
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln