Avatar billede tjeppsson Nybegynder
25. juli 2007 - 15:33 Der er 3 kommentarer

VBSCript til automatiseret Lotus Notes Kalender-oplysninger

Jeg skal kunne automatisere oprettelsen af kalender funktionen i Lotus Notes via vb-script. Scriptet er hentet fra nettet, og jeg har ikke kunne finde hjælp andre steder, og nu råber jeg om hjælp her hos jer.

Jeg er kommet så langt som til at scriptet udfylder de korrekte felter, men i den type kalender, som jeg har valgt (Møde - appointmentType 3), kan jeg ikke gemme og sende invitationen korrekt. Den gemmer som kladde i stedet for, når jeg kalder funktionen for gem, hvilket ødelægger det info som jeg lige har lagt i kalenderen-oplysningen.

Scriptet fungerer hvis det er en aftale (appointmentType 0), da "Gem/Save" er den eneste mulighed for denne type aftale.

Hvis jeg undlader at gemme og lukke dokumentet, og selv trykker på knappen "Gem og send invitation" når jeg har født data automatisk i felterne fungerer det, men jeg ville gerne have en fuld-automatiseret version uden bruger-interaktion.

'***************Kode***************
<script LANGUAGE="VBScript" >
Sub SendNotesAppointment()
On Error Resume Next

Dim UserName
Dim Subject
Dim Body
Dim AppDate
Dim StartTime
Dim MinsDuration
Dim MailDbName
    Dim strSTime
    Dim strETime
    Dim CalenDoc
    Dim WorkSpace
    Dim ErrCnt
    Set WorkSpace = CreateObject("Notes.NOTESUIWORKSPACE")
AppDate = "28-07-2007"
UserName = "tj"
Subject = "Her skal teksten stå i subject-linien"

StartTime = #15:00:00#
MinsDuration = 30

    MailDbName = "mail\" + UserName + ".nsf"

    strSTime = CStr(FormatDateTime(StartTime, vbShortTime))
    strETime = CStr(FormatDateTime(DateAdd("n", MinsDuration, StartTime), vbShortTime))

Set CalenDoc = WorkSpace.COMPOSEDOCUMENT("MIN SERVER", MailDbName, "Appointment")

CalenDoc.FIELDSETTEXT "AppointmentType", "3"

        CalenDoc.FIELDSETTEXT "StartDate", CStr(FormatDateTime(AppDate, vbShortDate))
        CalenDoc.FIELDSETTEXT "StartTime", CStr(strSTime)
        CalenDoc.FIELDSETTEXT "EndDate", CStr(FormatDateTime(AppDate, vbShortDate))
        CalenDoc.FIELDSETTEXT "EndTime", CStr(strETime)
        CalenDoc.FIELDSETTEXT "Subject", Subject

        CalenDoc.Refresh

'CalenDoc.Save
'CalenDoc.Close


    Set CalenDoc = Nothing
    Set WorkSpace = Nothing


If Err.Number <> 0 then
' Time to handle the error ourselves...
MsgBox "We've got an error here!" & vbcrlf & _
"Code: " & Err.Number & vbcrlf & _
"Description: "& Err.Description
End if

End Sub
</script>
'***************Kode slut***************

Er der nogen der kender koden for:
'CalenDoc.Save, således at den ikke gemmer kladden, men gemmer og sender invitationen i stedet?
Avatar billede jogii Nybegynder
29. juli 2007 - 00:06 #1
Problemet med Møder er, at sålænge der ikke er udsendt invitationer, så er de pr. definition kladder. Aftaler er enkle (udsender aldrig invitationer).
Derfor er koden for AftalerGemLuk det samme som MøderGemSomKladde

Jeg har her kopieret koden ind, som anvendes i selve Notes-formularen.

Aftaler:
[Save and Close]
FIELD SaveOptions := "";FIELD tmpAction := "2";
@If(@PostedCommand([FileSave]); @PostedCommand([FileCloseWindow]); "")

Møder:
[Save and Send Invitations]
FIELD tmpAction := "6";@If(@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow]); "")

[Save as Draft]
FIELD SaveOptions := "";FIELD tmpAction := "2";
@If(@PostedCommand([FileSave]); @PostedCommand([FileCloseWindow]); "")

Som du kan se, så er den primære forskel at feltet "tmpAction" sættes til "6" for at sende invitationer.

Så for at sætte værdien på tmpAction, skal du anvende koden
CalenDoc.Document.tmpAction = "6"
    eller
CalenDoc.Document.ReplaceItemValue("tmpAction", "6")

Jeg er ikke sikker på at det er det hele, men det er en del af vejen ...

Husk at du skal have andre mødedeltagere på

Kan du affyre dette script fra en IE-browser?
Avatar billede tjeppsson Nybegynder
30. juli 2007 - 09:48 #2
Det fungerede perfekt. Tusind tak jogii...

Linien hedder (for at være helt præcis):
CalenDoc.Document.ReplaceItemValue "tmpAction", "6"

Hvis du giver et svar på tråden, så får du dine velfortjente point...

Og ja, scriptet kører og fungerer i IE...
Avatar billede tjeppsson Nybegynder
30. juli 2007 - 09:56 #3
Forresten, så er det en god ide, at lægge ind, hvem man inviterer, så det fulde script vil se således ud:

***************Kode start***************
Sub SendNotesAppointment()
On Error Resume Next



Dim UserName
Dim Subject
Dim Body
Dim AppDate
Dim StartTime
Dim MinsDuration
Dim MailDbName
    Dim strSTime
    Dim strETime
    Dim CalenDoc
    Dim WorkSpace
    Dim ErrCnt
    Set WorkSpace = CreateObject("Notes.NOTESUIWORKSPACE")
AppDate = "05-08-2007"
UserName = "TJ"
Subject = "Her skal teksten stå"
Body ="Tekst til body"

StartTime = #15:00:00#
MinsDuration = 30

    MailDbName = "mail\" + UserName + ".nsf"

    strSTime = CStr(FormatDateTime(StartTime, vbShortTime))
    strETime = CStr(FormatDateTime(DateAdd("n", MinsDuration, StartTime), vbShortTime))

    Set CalenDoc = WorkSpace.COMPOSEDOCUMENT("MIN SERVER", MailDbName, "Appointment")

CalenDoc.FIELDSETTEXT "AppointmentType", "3"
   

        CalenDoc.FIELDSETTEXT "StartDate", CStr(FormatDateTime(AppDate, vbShortDate))
        CalenDoc.FIELDSETTEXT "StartTime", CStr(strSTime)
        CalenDoc.FIELDSETTEXT "EndDate", CStr(FormatDateTime(AppDate, vbShortDate))
        CalenDoc.FIELDSETTEXT "EndTime", CStr(strETime)
        CalenDoc.FIELDSETTEXT "Subject", Subject

        CalenDoc.FIELDSETTEXT "EnterSendTo", "TJ"
        CalenDoc.FIELDSETTEXT "Entercopyto", ""
    CalenDoc.FIELDSETTEXT "Enterblindcopyto", ""

CalenDoc.Document.ReplaceItemValue "tmpAction", "6"


        CalenDoc.Refresh

CalenDoc.Save(true)


Call CalenDoc.close



    Set CalenDoc = Nothing
    Set WorkSpace = Nothing


If Err.Number <> 0 then
' Time to handle the error ourselves...
MsgBox "We've got an error here!" & vbcrlf & _
"Code: " & Err.Number & vbcrlf & _
"Description: "& Err.Description
End if

End Sub
***************Kode slut***************
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester