Autor Thema: Besprechungstermine mit mehreren Teilnehmern per Script erstellen  (Gelesen 3311 mal)

Offline Thomses

  • Frischling
  • *
  • Beiträge: 28
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • trimco
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




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

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich

Offline Thomses

  • Frischling
  • *
  • Beiträge: 28
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • trimco
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...

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
a) ja
b) nein
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Thomses

  • Frischling
  • *
  • Beiträge: 28
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • trimco
Ich ahnte es ;-) ... Warum kann es nur nicht leichter gehen? (Antwort bekannt  ;) )
Danke Dir/Euch!!!

Offline Thomses

  • Frischling
  • *
  • Beiträge: 28
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
    • trimco
Also wer sich mit Besprechungen, Terminen usw. auseinandersetzt, hat wirklich eine ganze Weile lang einiges zu tun... Da gibt es schon eine Menge Stoff zum Durcharbeiten und Testen.

Für die Infosuche empfehle ich statt z.B. nach "Termin Besprechung Einladung Lotus Script" o.ä. dann doch eher nach dem englischen "Calendaring & scheduling" kurz "C&S" zu suchen. Man findet dann doch mehr  ;D


Neben den von Bernhard genannten Seiten haben mir dann noch folgende Seiten geholfen.

http://www.ibm.com/developerworks/lotus/library/cs-pt1/
http://www.ibm.com/developerworks/lotus/library/cs-pt2/


Achja und beachtet werden sollte, dass via individuellem Script versendete Teilnehmerbenachrichtigungen (Form "Notice") Antwortdokumente zum Termin darstellen. Das ist insb. für spätere Termin-Updates usw. wichtig.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz