Custom calendar: show data from other calendars?

S

sean.gilbertson

Hi everyone,

I'm interested in creating a calendar that you would click on in
Outlook (it would be in the Public Folders), and then you'd see a
calendar that shows the "Out of Office" status for everyone in the
office. Is there a way to do this? Ideally I'd use the built-in
calendar widget to do this, but I can't find a way to get a calendar to
include information from other calendars.

If there's another group that might know about this, please let me know
that as well.

:)
- Sean
 
K

Ken Slovak - [MVP - Outlook]

You could read the Free/Busy status of everyone and create appointments
based on their status, with the subjects the people's names.
 
S

sean.gilbertson

Hmm.. maybe this would work. How would I do this? Dynamically on a
user's computer, as they open up the calendar? If so, how would I do
this? Is there an event fired when a calendar is open, that can run
local code? Is that a lot of information to grab (the free/busy
information for 110+ people for a given day)? I can say that most days
the number of Out-of-Office people per day will be at least 20-30
people.
 
S

sean.gilbertson

Is there an Exchange Server event for when people access a calendar?
I'm thinking that it would be good to return the data I want to return,
from here. Can I do that?
 
K

Ken Slovak - [MVP - Outlook]

Please retain part of the preceding thread in your posts, it makes it very
hard to follow when you don't.

One machine running the code would poll for the free/busy status of each
person in the GAL. Once the data was retrieved and parsed and put into that
public calendar folder as appointments for that user (with their name as the
subject) the updated folder and its data would be available to every user
who looked at that folder. No need to get more complicated than that.

GetFreeBusy is a method of the AddressEntry object. Iterating each
AddressEntry in the AddressEntries collection of the "Global Address List"
AddressList object would return the AddressEntry and calling that method
would return the free/busy data.

See the Object Browser help for more information on that method and
http://support.microsoft.com/?kbid=294554 for a little sample code.
 
S

sean.gilbertson

Ken,

It looks like by default, my replies should have the replied-to-post
quoted at the bottom of the message. It is now, anyway.

Anyway, back to business.

What you describe sounds pretty good. I have some follow-up questions:
- Would this run on the Exchange server? Would it be a scheduled task,
or something in the Exchange event sink, or something?
- I'm glad to hear that I can iterate over the Global Address List. I
didn't know how to do that and was despairing a little that I might not
be able to.
- Is there a way to do this via a request to the Exchange server for
XML? I have a book that has an example of how to get Free/Busy
information, but that is per user. I need calendar information, and
the ability to add calendar items.

If you could paste me a link to a tutorial on getting this type of code
up and running, please let me know.

- Sean
 
K

Ken Slovak - [MVP - Outlook]

1. Running on the client. Most Exchange admins don't like code running on
the server because any problem could hang or crash the Exchange server. One
Outlook client can run the code and once the public folder is updated with
the free/busy information all clients can see it, including OWA clients that
might look at that folder.

2.
Set oAL = oOL.AddressLists("Global Address List")
Set colAE = oAL.AddressEntries
For each oAE In colAE
'now you have a member of the GAL as an AddressEntry object
Next

3. No XML involved. Just get the information for each user (GAL member) and
create or update appointments for each user based on the free/busy
information. A calendar folder needs individual appointments to create it's
view, so why complicate things with XML?

The code sample link I posted should get you started.
 
S

sean.gilbertson

I need a program that will run server-side. Can I do this with CDO, or
is there another method? Please let me know the best way to do this
server-side.

The reason I ask about doing this through XML requests is that, if I
can, I can write the program in whatever I want, which is what I'd
prefer. I can also put the program anywhere, and communicate with the
server. If you know of a way to do what I'm asking for in an XML
conversation, please let me know.

- Sean
 
S

sean.gilbertson

And it looks like Exchange doesn't return current Free/Busy
information. I scheduled some Out-of-Office time, and it took a while
for the Exchange server to realize it was there, and return correct
Free/Busy information. I have actually read that this is the case,
too.

What is the delay between refreshes of Free/Busy data? Can it be
adjusted?

Is there a way to look at calendar data on my own? How?

- Sean
 
K

Ken Slovak - [MVP - Outlook]

You can use any server side language you want. CDO 1.21 would do it. Just
don't use the Outlook object model running server side.

You get the data from CDO server side just as you would for Outlook, you
just have to have a logon that has permissions to log into every mailbox and
then do so in turn, getting the information from each in turn.

If this is going to be a server side coding project you'd best post
questions about it in one of the Exchange programming groups, not here. Same
thing for your setups for free/busy refresh intervals, that's an Exchange
admin problem not Outlook.
 
S

sean.gilbertson

Actually, I was just thinking: Could I add a hook in
creating/editing/deleting calendar items? Like, when a user creates
something in their calendar, I could check to see if I'm interested,
and add it to a calendar in a public folder.

Let me know if that can be done. From what I've seen so far, adding
things to public calendars is not supported in CDO. So let me know if
there is any way to do this -- in Outlook, or in talking to Exchange,
or something else.

- Sean
 
S

Sue Mosher [MVP-Outlook]

Yes, that can be done, but it's not quite that simple, because you'd also want to handle updates to the original items. Tom Howe's Enterprise Calendar sample from http://www.slipstick.com/calendar/scheduleall.htm shows one approach.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 
S

sean.gilbertson

Okay, I'll take a look. It's good to know that there are ways to do
this.

I may end up doing this through the web. Is there a way to iterate
through users' calendars and gather information (e.g. Subject, Type,
Start Time, and End Time)? I don't care if this is slow or fast.

- Sean
 
S

Sue Mosher [MVP-Outlook]

Yes, the Namespace.GetSharedDefaultFolder method can return other calendar folders for which you have permission. They can also be accessed with CDO 1.21.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003

and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
 

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

Top