HOWTO: CDO 1.21/VBS - Get Free/Busy information

' getfbCDO121.vbs - Get Free/Busy information using CDO1.21 and vbs
' Instructions:
'   Save to a file called getfbCDO121.vbs
'   Do the TODO: sections
'   Run from the command line using:  cscript getfbCDO121.vbs
    Dim ObjSession      'MAPI.Session
    Dim ObjMessage      'MAPI.Message
    Dim ObjAddressEntry 'MAPI.AddressEntry
    Dim sFreeBusy
    Dim sFBFrom
    Dim sFBTo
    Dim sLoginProfileInfo ' This is sLoginServer + lf + sLoginMailbox
    Dim sLoginServer
    Dim sLoginMailbox
    Dim sFBMailbox ' This is the mailbox of the user to get Free/Busy information for.

    ' -----------  Configure ------------------------------
    sLoginServer = ""    ' TODO: Change this to the name of you email server - Example: "NORTHAMERICA" for the Exchange server called "NORTHAMERICA" - you can also use a TCP address.
    sLoginMailbox = "maybemyuser"        ' TODO: Change this to the name of your mail box - Example: "danjones" for
    sProfileInfo = sLoginServer & vbLf & sLoginMailbox
    sFBMailbox = ""   ' TODO: Change this to the user you want to get Free/Busy Information for. You can also use just the mailbox name, without using the full email address.
                                                       ' Note that the user you log-in with must have access to this mailbox.
    sFreeBusy = ""
    'Specify the date/time of the beginning of the first time slot.
    sFBFrom = "6/4/2003 8:00:00 AM"  ' TODO: Change this
    'Specify the date/time of the end of the last time slot.
    sFBTo = "6/4/2003 6:00:00 PM"    ' TODO: Change this
    ' --------------- Startup a MAPI Session -------------------
    Set ObjSession = CreateObject("MAPI.Session")
    ObjSession.Logon , , False, True, 0, True, sProfileInfo
    Set ObjMessage = ObjSession.Inbox.Messages.Add
    Set ObjRecipColl = ObjMessage.Recipients
    Set ObjOneRecip = ObjRecipColl.Add
    'Type the alias of the person or the resource account.
    ObjOneRecip.Name = sFBMailbox
    Set ObjAddressEntry = ObjOneRecip.AddressEntry
    'Specify the length of each time slot in minutes.
    'If Interval parameter is less than 1, GetFreeBusy returns
    Interval = 30
    'Interval parameter determines the number of time slots.
    'For this example, Interval is set to 60 minutes. Therefore,
    'there will be 2 time slots between the StartTime and the EndTime.
    'The first time slot is between 8:00:00-9:00:00 AM.
    'The second time slot is between 9:00:00-10:00:00 AM.
    sFreeBusy = ObjAddressEntry.GetFreeBusy(sFBFrom, sFBTo, Interval)
    'Since there are two time slots, the GetFreeBusy method returns a
    'string with length 2. For example, FreeBusy = "21" indicates that
    'there is a tentative commitment during the time slot 1. Also,
    'there is a confirmed commitment during the time slot 2.
    WScript.echo "Freebusy: " & sFreeBusy
    ' Each element in the array corresponds to the time-span of
    ' the time interval.
    ' The meaning of each element is as follows:
    '    0 - Available for meetings/appointments during the time slot
    '    1 -At least one tentative commitment during the time slot
    '    2 -At least one confirmed commitment during the time slot
    '    3 -Out-of-office (OOF) for at leastpart of the time slot
    Set ObjMessage = Nothing
    Set ObjRecipColl = Nothing
    Set ObjOneRecip = Nothing
    Set ObjAddressEntry = Nothing
    Set ObjSession = Nothing