Attendee availability online

D

Dan Williams

Can anyone tell me how to go about creating my own custom ASP page that can
show several different peoples availability from their Outlook/Exchange 2000
calendars?

I don't want to have to ask users to setup permissions for their respective
calendars, i just want to be able to see if they're busy or not.

Many thanks

Dan Williams.
 
R

Ray at

People don't need special permissions to see if others are free or not. You
can use OWA, start an appointment item, select your requested attendees, and
then view the availability of each recipient without actually sending the
appointment.

Ray at work
 
D

Dan Williams

Sorry, i should have mentioned that i wanted an alternative to OWA.

I'd like to be able to use some form of CDO or ActiveX component to create
my own
ASP pages.

Dan
 
D

Dan Williams

You people need to get out more

Dan


Ray at said:
Heh heh. I thought about it, but then I was like, "well, it does have to do
with asp, vbscript (perhaps), exchange clients, and exchange applications."
Exchange admin is another story though. And I was afraid Aaron would yell
at me for posting his links in Exchange groups. :p

Ray at work
 
R

Ray at

Now there's a good way to encourage people to help you in the future.

echo Dan Williams>>vendetta.log

Ray at work
 
R

Robert Cohen

echo Ray>>he cracks me up.log

I actually had to clean soda off my monitor because I read that while
drinking some soda.

but yeah, talk about bitting the hand that feeds you. Dan should have
learned from William Shatner.

But the funny thing is I didn't know you could do that with a bat file like
that. So I learn things in the wierdest ways.

--
Sorry, I am no longer including my e-mail address as I am getting to much
spam. I really have no desire to enlarge "it" by three inches, that is even
if I get e-mailed 10 times a day from different e-mail addresses so I can't
block it.
Besides I finally came to believe what others have said, if you have a
question, you should ask the group as others might benefit from it. Anyone
on the group who I converse with off topic or on the side, can easily find
my e-mail address.
 
R

Ray at

heh heh. cmd.exe rules. I find myself reverting back to that instead of
using the FSO quite often. I mean, what's easier? A or B?

A:
Dim objFSO, objDir, objFiles
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDir = objFSO.GetFolder("D:\Path")
Set objFiles = objDir.Files
For Each f in objFiles
sOutput = sOutput & f.Name & vbCrLf
Next
Set objDir = Nothing
Set objFiles = Nothing


Set oOutputFile = objFSO.CreateTextFile("D:\Path\file.txt", True)
oOutputFile.Write sOutput
oOutputFile.Close
Set oOutputFile = Nothing
Set objFSO = Nothing


B:
dir D:\Path /B /A:-D>D:\PathFile.txt


Ray at work cross posting off topic posts and will now stop.
 
D

Dan Williams

Without the help of you two (cheers for your time anyway, i was only using a
bit of English sarcasm!!), i've managed to create my own custom ASP page
that will show the attendee availability of other users.

The codes as follows (if your at all interested!):-

Copy and paste it to a freebusy.asp file, then edit the strServer,
strMailbox and strDistListName variables to your own values.

<%@ LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
Response.Expires = 0
%>
<!--#include file="adovbs.inc"-->
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
<META HTTP-EQUIV="Content-Type" content="text/html;charset=iso-8859-1">
<TITLE>Marketing Staff availability</TITLE>
</HEAD>
<BODY>
<%

Const CdoAddressListGAL = 0
Const CdoUser = 0
Const CdoDistList = 1
Const blnDisplayOnlyOutOfOffice = FALSE

Dim objSession, objAddressList, objAddressEntries, objAddressEntry,
objMembers, objMember
Dim dteStartDate, dteEndDate, strDistListName, strServer, strMailbox,
strProfileInfo, strFreeBusyInfo
Dim intCounter, intTimeCounter

If Request.ServerVariables("LOGON_USER") = "" Then
Response.Status = "401 Access Denied"
End If

On Error Resume Next

strServer = "EXCHANGESERVER" <-- insert your Exchange Mail server name here.
strMailbox = "EXCHANGEMAILBOX" <-- insert your mailbox name here
strDistListName = "DISTRIBUTIONLIST" <-- insert your own ActiveDirectory
distribution group here.

dteStartDate = Request.Form("date")
if dteStartDate = "" then dteStartDate = Date()

SELECT CASE Request.Form("Submit")
CASE "Previous" dteStartDate = DateAdd("d",-1,dteStartDate)
CASE "Next" dteStartDate = DateAdd("d",1,dteStartDate)
END SELECT

dteEndDate = DateAdd("d",1,dteStartDate)
strProfileInfo = strServer & vbLF & strMailbox

set objSession = Server.CreateObject("MAPI.Session")
objSession.Logon "", "", False, True, 0, True, strProfileInfo
%>
<form name="form1" action="freebusy.asp" method="POST">
<TABLE width="100%">
<tr>
<td width="20%"><INPUT size="8" value="<%=dteStartDate%>" name="date">
&nbsp<input type="submit" name="Submit" value="Submit"></td>
<td width="60%" align=center><H3><font color='#000000' face='Arial,
Helvetica, sans-serif'>Marketing Staff availability</font></h3></td>
<td><input type="submit" name="Submit" value="Previous">&nbsp<input
type="submit" name="Submit" value="Next"></td>
</tr>
</table>
</form>
<%

set objAddressList = objSession.GetAddressList(CdoAddressListGAL)
set objAddressEntries = objAddressList.AddressEntries
set objAddressEntry = objAddressEntries.Item(strDistListName)

if objAddressEntry.DisplayType = CdoDistList then
set objMembers = objAddressEntry.Members
Response.Write("<table align=center cellpadding='0' cellspacing='0'
cols='2' width='80%' bordercolor='#ffffff' " _
& "border='1' bordorcolorlight='#ffffff' bordorcolordark='#ffffff'
bgcolor='#ffff99'>")
Response.Write("<tr valign='top'>")
Response.Write("<th align='left' width='20%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>Name</font></th>")
Response.Write("<th align='left' width='80%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>&nbsp;" & formatdatetime(dteStartDate, 1) &
"</font></th>")
Response.Write("<tr valign='top'>")
Response.Write("<td>&nbsp</td>")
Response.Write("<td rowspan='" & objMembers.Count + 1 & "'>")
Response.Write("<table border='1' cellpadding='0' cellspacing='0'
width='100%' bordercolor='#ffffff' " _
& "bordercolordark='#ffffff' bordercolorlight='#ffffff'>")
Response.Write("<tr>")

For intCounter = 0 to 23
Response.Write("<td width='200' colspan='2'>" & intCounter & ":00</td>")
next

for each objMember in objMembers
if objMember.DisplayType = CdoUser then
strFreeBusyInfo = objMember.GetFreeBusy(dteStartDate, dteEndDate, 30)
if err.number <> 0 then
strFreeBusyInfo = String(48, "9")
err.clear
end if

if blnDisplayOnlyOutOfOffice then
Response.Write("<TR>")
for intCounter = 1 to 48
Select case mid(strFreeBusyInfo, intCounter, 1)
Case "0"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
Case "1"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
Case "2"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
Case "3"
Response.Write("<td width='100' bgcolor=purple>&nbsp</td>")
Case "9"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
end select
next
else
Response.Write("<TR>")
for intCounter = 1 to 48
Select case mid(strFreeBusyInfo, intCounter, 1)
Case "0"
Response.Write("<td width='100' bgcolor='#c0c0c0'>&nbsp</td>")
Case "1"
Response.Write("<td width='100' bgcolor=lightblue>&nbsp</td>")
Case "2"
Response.Write("<td width='100' bgcolor=blue>&nbsp</td>")
Case "3"
Response.Write("<td width='100' bgcolor=purple>&nbsp</td>")
Case "9"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
end select
next
end if
end if
next

Response.Write("</tr>")
Response.Write("</table>")
Response.Write("</tr>")

for each objMember in objMembers
if objMember.DisplayType = CdoUser then
Response.Write("<tr valign='top'>")
Response.Write("<td nowrap>&nbsp;" & objMember.Name & "&nbsp</td>")
Response.Write("</tr>")
end if
next

Response.Write("<td align='left' width='20%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>&nbsp</font></td>")
Response.Write("<td align='left' width='80%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>&nbsp</font></td>")
Response.Write("</table>")

Response.Write("<br>")

Response.Write("<center><table align=center cellpadding='0' cellspacing='0'
cols='2' width='80%' bordercolor='#ffffff' " _
& "border='1' bordorcolorlight='#ffffff' bordorcolordark='#ffffff'>")
Response.Write("<tr valign='top'>")

Response.Write("<td width='2%' bgcolor=lightblue>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Tentative</font></th>")

Response.Write("<td width='2%' bgcolor='#c0c0c0'>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Free</font></th>")

Response.Write("<td width='2%' bgcolor=blue>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Busy</font></th>")

Response.Write("<td width='2%' bgcolor=purple>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Out of Office</font></th>")

Response.Write("<td width='2%' bgcolor='#000000'>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;No Information</font></th>")

Response.Write("</tr>")
Response.Write("</table></center>")
end if

%>
<BR>
<table border='0' cellspacing='10' height='12' width='100%'>
<tr>
<td height='5' width='295'><font color='#000000' face='Arial, Helvetica,
sans-serif'>Last updated <%=Now%></td>
<td align=right><input type='button' name='Close' value='Close'
onClick="window.close()"></td>
</tr>
</table>

<%
objSession.Logoff
set objSession = nothing
set objAddressList = nothing
set objAddressEntries = nothing
set objMembers = nothing
set objMember = nothing

%>

</BODY>
</HTML>
 
D

Dan White

What to you have in the adovbs.inc file?

Dan
Dan Williams said:
Without the help of you two (cheers for your time anyway, i was only using a
bit of English sarcasm!!), i've managed to create my own custom ASP page
that will show the attendee availability of other users.

The codes as follows (if your at all interested!):-

Copy and paste it to a freebusy.asp file, then edit the strServer,
strMailbox and strDistListName variables to your own values.

<%@ LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
Response.Expires = 0
%>
<!--#include file="adovbs.inc"-->
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual InterDev 1.0">
<META HTTP-EQUIV="Content-Type" content="text/html;charset=iso-8859-1">
<TITLE>Marketing Staff availability</TITLE>
</HEAD>
<BODY>
<%

Const CdoAddressListGAL = 0
Const CdoUser = 0
Const CdoDistList = 1
Const blnDisplayOnlyOutOfOffice = FALSE

Dim objSession, objAddressList, objAddressEntries, objAddressEntry,
objMembers, objMember
Dim dteStartDate, dteEndDate, strDistListName, strServer, strMailbox,
strProfileInfo, strFreeBusyInfo
Dim intCounter, intTimeCounter

If Request.ServerVariables("LOGON_USER") = "" Then
Response.Status = "401 Access Denied"
End If

On Error Resume Next

strServer = "EXCHANGESERVER" <-- insert your Exchange Mail server name here.
strMailbox = "EXCHANGEMAILBOX" <-- insert your mailbox name here
strDistListName = "DISTRIBUTIONLIST" <-- insert your own ActiveDirectory
distribution group here.

dteStartDate = Request.Form("date")
if dteStartDate = "" then dteStartDate = Date()

SELECT CASE Request.Form("Submit")
CASE "Previous" dteStartDate = DateAdd("d",-1,dteStartDate)
CASE "Next" dteStartDate = DateAdd("d",1,dteStartDate)
END SELECT

dteEndDate = DateAdd("d",1,dteStartDate)
strProfileInfo = strServer & vbLF & strMailbox

set objSession = Server.CreateObject("MAPI.Session")
objSession.Logon "", "", False, True, 0, True, strProfileInfo
%>
<form name="form1" action="freebusy.asp" method="POST">
<TABLE width="100%">
<tr>
<td width="20%"><INPUT size="8" value="<%=dteStartDate%>" name="date">
&nbsp<input type="submit" name="Submit" value="Submit"></td>
<td width="60%" align=center><H3><font color='#000000' face='Arial,
Helvetica, sans-serif'>Marketing Staff availability</font></h3></td>
<td><input type="submit" name="Submit" value="Previous">&nbsp<input
type="submit" name="Submit" value="Next"></td>
</tr>
</table>
</form>
<%

set objAddressList = objSession.GetAddressList(CdoAddressListGAL)
set objAddressEntries = objAddressList.AddressEntries
set objAddressEntry = objAddressEntries.Item(strDistListName)

if objAddressEntry.DisplayType = CdoDistList then
set objMembers = objAddressEntry.Members
Response.Write("<table align=center cellpadding='0' cellspacing='0'
cols='2' width='80%' bordercolor='#ffffff' " _
& "border='1' bordorcolorlight='#ffffff' bordorcolordark='#ffffff'
bgcolor='#ffff99'>")
Response.Write("<tr valign='top'>")
Response.Write("<th align='left' width='20%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>Name</font></th>")
Response.Write("<th align='left' width='80%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>&nbsp;" & formatdatetime(dteStartDate, 1) &
"</font></th>")
Response.Write("<tr valign='top'>")
Response.Write("<td>&nbsp</td>")
Response.Write("<td rowspan='" & objMembers.Count + 1 & "'>")
Response.Write("<table border='1' cellpadding='0' cellspacing='0'
width='100%' bordercolor='#ffffff' " _
& "bordercolordark='#ffffff' bordercolorlight='#ffffff'>")
Response.Write("<tr>")

For intCounter = 0 to 23
Response.Write("<td width='200' colspan='2'>" & intCounter & ":00</td>")
next

for each objMember in objMembers
if objMember.DisplayType = CdoUser then
strFreeBusyInfo = objMember.GetFreeBusy(dteStartDate, dteEndDate, 30)
if err.number <> 0 then
strFreeBusyInfo = String(48, "9")
err.clear
end if

if blnDisplayOnlyOutOfOffice then
Response.Write("<TR>")
for intCounter = 1 to 48
Select case mid(strFreeBusyInfo, intCounter, 1)
Case "0"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
Case "1"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
Case "2"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
Case "3"
Response.Write("<td width='100' bgcolor=purple>&nbsp</td>")
Case "9"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
end select
next
else
Response.Write("<TR>")
for intCounter = 1 to 48
Select case mid(strFreeBusyInfo, intCounter, 1)
Case "0"
Response.Write("<td width='100' bgcolor='#c0c0c0'>&nbsp</td>")
Case "1"
Response.Write("<td width='100' bgcolor=lightblue>&nbsp</td>")
Case "2"
Response.Write("<td width='100' bgcolor=blue>&nbsp</td>")
Case "3"
Response.Write("<td width='100' bgcolor=purple>&nbsp</td>")
Case "9"
Response.Write("<td width='100' bgcolor='#000000'>&nbsp</td>")
end select
next
end if
end if
next

Response.Write("</tr>")
Response.Write("</table>")
Response.Write("</tr>")

for each objMember in objMembers
if objMember.DisplayType = CdoUser then
Response.Write("<tr valign='top'>")
Response.Write("<td nowrap>&nbsp;" & objMember.Name & "&nbsp</td>")
Response.Write("</tr>")
end if
next

Response.Write("<td align='left' width='20%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>&nbsp</font></td>")
Response.Write("<td align='left' width='80%' valign='top'
bgcolor='#f28a8a'><font color='#000000' face='Arial, " _
& "Helvetica, sans-serif'>&nbsp</font></td>")
Response.Write("</table>")

Response.Write("<br>")

Response.Write("<center><table align=center cellpadding='0' cellspacing='0'
cols='2' width='80%' bordercolor='#ffffff' " _
& "border='1' bordorcolorlight='#ffffff' bordorcolordark='#ffffff'>")
Response.Write("<tr valign='top'>")

Response.Write("<td width='2%' bgcolor=lightblue>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Tentative</font></th>")

Response.Write("<td width='2%' bgcolor='#c0c0c0'>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Free</font></th>")

Response.Write("<td width='2%' bgcolor=blue>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Busy</font></th>")

Response.Write("<td width='2%' bgcolor=purple>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;Out of Office</font></th>")

Response.Write("<td width='2%' bgcolor='#000000'>&nbsp</td>")
Response.Write("<td align='left' width='18%' valign='top'><font
color='#000000' face='Arial, Helvetica, sans-serif'>" _
& "&nbsp;No Information</font></th>")

Response.Write("</tr>")
Response.Write("</table></center>")
end if

%>
<BR>
<table border='0' cellspacing='10' height='12' width='100%'>
<tr>
<td height='5' width='295'><font color='#000000' face='Arial, Helvetica,
sans-serif'>Last updated <%=Now%></td>
<td align=right><input type='button' name='Close' value='Close'
onClick="window.close()"></td>
</tr>
</table>

<%
objSession.Logoff
set objSession = nothing
set objAddressList = nothing
set objAddressEntries = nothing
set objMembers = nothing
set objMember = nothing

%>

</BODY>
</HTML>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,056
Latest member
GlycogenSupporthealth

Latest Threads

Top