A programmatic way to get/set Out of Office profile in Lotus Notes
Alex Chan May 7 2015 10:00:00 AM
Thanks to Kevin, he has created a LotusScript class which allows developers to manipulate OOO profile information in your Notes applications easily. This class allows you to:
- get or set Out-of-Office profile for yourself or on behalf of someone else
- query other people Out-of-Office status
The class works in conjunction with OOO Manager. So, you need to have OOO Manager in place on one of your Domino server.
Use method GetOOOProfile(username) to get the OOO profile of the user.
Use method SaveOOOProfile(profile) to save the OOO profile after changes.
Below is a sample program to get and set OOO profile for any user.
Option Public Option Declare Use "OOOManager_LS" Sub Initialize ' Create an instance of the OOOManager class for server "Server/ACME" Dim ooomgr As New OOOManager("Server/ACME") Dim profile As OOOProfile ' Get an instance of the OOOProfile class for user "John Doe/ACME" Set profile = ooomgr.GetOOOProfile("John Doe/ACME") If Not (profile Is Nothing) Then ' OOO Profile found ' Modify the properties of the OOOProfile Set profile.LeavingDate = New NotesDateTime("Today") ' Set Leaving Date Set profile.ReturnDate = New NotesDateTime("Tomorrow") ' Set Return Date profile.SpecifyHours = False ' Do not display the time component for the leaving date and return date profile.AppendReturnDateToSubject = True ' Append return date to the subject line profile.DateFormat = OOO_DATETIME_FULL ' Display date in full date format profile.AdditionalBodyText = "If you need immediate assistance, please contact:" _ & Chr(13) & "For Sales: sales@extracomm.com" _ & Chr(13) & "For Support: support@extracomm.com" profile.ExcludeInternetAddresses = False profile.Enable = True ' Enable OOO notification If ooomgr.SaveOOOProfile(profile) Then ' OOOProfile has been saved successfully ' Display the latest properties after saving the OOOProfile Messagebox "Save result: " & ooomgr.ReturnMsg & Chr(13) & _ "Enable: " & profile.Enable & Chr(13) & _ "Leaving date: " & profile.LeavingDate.LocalTime & Chr(13) & _ "Return date: " & profile.ReturnDate.LocalTime & Chr(13) & _ "Specify hours: " & profile.SpecifyHours & Chr(13) & _ "Subject: " & profile.ComputedSubject & Chr(13) & _ "Body: " & profile.ComputedBody & Chr(13) & _ "Additional body text: " & profile.AdditionalBodyText & Chr(13) & _ "Append return date to subject: " & profile.AppendReturnDateToSubject & Chr(13) & _ "Date format: " & profile.DateFormat & Chr(13) & _ "OOO type: " & profile.OOOType & Chr(13) & _ "Exclude Internet addresses: " & profile.ExcludeInternetAddresses Else ' Display the error code and error message if necessary Messagebox "Save Error " & ooomgr.ReturnCode & ": " & ooomgr.ReturnMsg End If Else ' Display the error code and error message if necessary Messagebox "Error " & ooomgr.ReturnCode & ": " & ooomgr.ReturnMsg End If End Sub |
To retrieve other people OOO status, you can use methods:
- GetOOOStatus(username_or_groupname As String)
- GetOOOStatusXML(username As String)
Below is a sample program how you can retrieve other people OOO status.
Option Public Option Declare Use "OOOManager_LS" Sub Initialize ' Create an instance of the OOOManager class for server "Server/ACME" Dim ooomgr As New OOOManager("Server/ACME") Dim resultArray As Variant Dim paramArray As Variant ' Get the OOO status for user "John Doe/ACME" as a string array resultArray = ooomgr.GetOOOStatus("John Doe/ACME") If resultArray(0) <> "" Then ' OOO status has been successfully retrieved Forall s In resultArray paramArray = Split(s, ooomgr.Delimiter ' Use the Split function to separate each delimited string ' Display the attributes of the OOO entry Messagebox ("IsValid: " & paramArray(0) & Chr(13) & _ "Username: " & paramArray(1) & Chr(13) & _ "ErrorMsg: " & paramArray(2) & Chr(13) & _ "OOOEnable: " & paramArray(3) & Chr(13) & _ "LeavingDate: " & paramArray(4) & Chr(13) & _ "ReturnDate: " & paramArray(5) & Chr(13) & _ "SpecifyHours: " & paramArray(6)) End Forall Else ' Display the error code and error message if necessary Messagebox "Error " & ooomgr.ReturnCode & ": " & ooomgr.ReturnMsg End If End Sub |
Script Library and sample code database
OOOManagerLib.nsf (updated on Jun 4 2015)
Class OOOManager
Properties:
Name | Remark |
String ServerName | |
String Delimiter | Defaults to "%~%". |
Integer ReturnCode | Read-only. Defaults to 0. |
String ReturnMsg | Read-only. Defaults to "". |
Methods:
Name | Remark | ||||||||||||||||
Sub New (servername As String) | Return an OOOManager instance for a specific server. | ||||||||||||||||
Function GetOOOProfile(username As String) As OOOProfile | Return an OOOProfile instance for a specific user. If error occurs, this function will return Nothing, while the ReturnCode property and ReturnMsg property will contain the corresponding error code and error message respectively. | ||||||||||||||||
Function SaveOOOProfile(profile As OOOProfile) As Boolean | Return True if the OOO profile of a specific user has been enabled, disabled or updated successfully. In addition, the following return code and return message will be set to the ReturnCode property and ReturnMsg property respectively:
If error occurs, this function will return False, while the ReturnCode property and ReturnMsg property will contain the corresponding error code and error message respectively. | ||||||||||||||||
Function GetOOOStatus(username_or_groupname As String) As Variant | Return the OOO status of a specific user or user group as a string array. Each element in the array is a delimited string, which contains the attribute values of an OOO entry for a user. You can use the LotusScript Split function to separate the delimited string into a string array of attribute values with the following structure:
If error occurs, this function will return an array with a single empty string element, while the ReturnCode property and ReturnMsg property will contain the corresponding error code and error message respectively. | ||||||||||||||||
Function GetOOOStatusXML(username As String) As String | The purpose of this function is similar to the GetOOOStatus function, but it will return an XML string instead of a string array. The resulting XML string looks like this: If error occurs, this function will return an empty string, while the ReturnCode property and ReturnMsg property will contain the corresponding error code and error message respectively. |
Class OOOProfile
Properties:
Name | Remark |
String ServerName | Read-only. |
String Username | Read-only. |
Boolean Enable | |
DateTime LeavingDate | |
DateTime ReturnDate | |
Boolean SpecifyHours | |
String Subject | |
String ComputedSubject | Read-only. The resulting subject line to be displayed in the profile. |
String ComputedBody | Read-only. The resulting body line to be displayed in the profile. |
String AdditionalBodyText | |
Boolean AppendReturnDateToSubject | |
String DateFormat | Possible values: OOO_DATETIME_DEFAULT = "DEFAULT" OOO_DATETIME_SHORT = "SHORT" OOO_DATETIME_MEDIUM = "MEDIUM" OOO_DATETIME_LONG = "LONG" OOO_DATETIME_FULL = "FULL" OOO_DATETIME_PATTERN1 = "PATTERN1" (i.e. DD/MM/YYYY) OOO_DATETIME_PATTERN2 = "PATTERN2" (i.e. MM/DD/YYYY) OOO_DATETIME_PATTERN3 = "PATTERN3" (i.e. YYYY/MM/DD) OOO_DATETIME_PATTERN4 = "PATTERN4" (i.e. DD MMM, YYYY) OOO_DATETIME_PATTERN5 = "PATTERN5" (i.e. MMM DD, YYYY) OOO_DATETIME_PATTERN6 = "PATTERN6" (i.e. day, DD MMMM, YYYY) OOO_DATETIME_PATTERN7 = "PATTERN7" (i.e. day, MMMM DD, YYYY) |
String OOOType | Read-only. OOO_TYPE_AGENT = "AGENT" OOO_TYPE_SERVICE = "SERVICE" |
Boolean ExcludeInternetAddresses |
Methods:
Name | Remark |
Sub New(servername As String, username As String) | Return an OOOProfile instance for a specific user. Raise errors under some conditions. |
Sub Reset() | Reset the property values of the current OOOProfile instance to the ones previously retrieved or saved. |
Function Save() As Integer | Possible return values: OOO_PROFILE_SAVE_ENABLED_CODE = 1001 OOO_PROFILE_SAVE_DISABLED_CODE = 1002 OOO_PROFILE_SAVE_UPDATED_CODE = 1003 Raise errors under some conditions. |
- Comments [0]