olAppointmentItem.Organizer when created by publisher on shared calendar

  • Thread starter Thread starter Ryan Parlee
  • Start date Start date
R

Ryan Parlee

Hello Outlook Developers,

When a user in our office creates an AppointmentItem on a shared calendar
with the "publishing author" privilege for that calendar the Organizer
attribute is set to the owner of the mailbox rather than the user that
created the item.

1. Is this by design?

2. Is there a way to find out who actually created the item?

Thanks,
Ryan
 
It's by design. The Outlook object model doesn't expose who last modified a
calendar item. If you are using an alternate API such as CDO 1.21 or
Extended MAPI or Redemption (www.dimastr.com/redemption) you can use the
PR_LAST_MODIFIER_NAME property (0x3FFA001E) to get who last modified the
item.
 
Ken,

My users are creating items using Outlook 2007 UI on the Shared Calendar
View. So, I'm not sure if that uses Extended MAPI or some other internal
API.

I'm using OutlookSpy to investigate the object model. I think I may have
found what I'm looking for in the PR_SENDER_NAME and PR_SENDER_EMAIL_ADDRESS
properties. Can you please confirm that these are equivelent to what I'm
considering the "creator" of the item?

<off-topic>
Also, any chance you could explain the following to me:

I've been using OutlookSpy to investigate the object model and lookup these
properties. When I have an Appointment Item open in Outlook, I use the
"CurrentItem" button on the OutlookSpy toolbar to pull up the
_AppointmentItem interface inspector. Since I didn't see the
PR_LAST_MODIFIER_NAME property that you mentioned in your last response (or
a similarly named property of the interface that looked like it represented
the PR_LAST_MODIFIER_NAME property), I started looking around in OutlookSpy.
My first thought was that perhaps this property was part of a different
interface, but when I tried to QueryInterface for IID_IMessage I got
MAPI_E_INTERFACE_NOT_SUPPORTED. I then tried IID_IDispatch and got the
_AppointmentItem interface instead. It wasn't until I found the IMessage
button on the OutlookSpy toolbar that I was able to find the
PR_LAST_MODIFIER_NAME property and then also found the PR_SENDER_XXX
properties.

Q1: Why couldn't I QueryInterface for IID_IMessage directly from the
_AppointmentItem interface? Isn't that a COM rule that all Interfaces
should allow QI to other interfaces supported by the coclass?

Q2: Why does IID_IDipsatch result in the _AppointmentItem interface?

</off-topic>

Thanks,
Ryan
 
For Outlook 2007 you can directly access the PR_LAST_MODIFIER_NAME property
using the PropertyAccessor for the appointment item, using this DASL syntax
for the property: "http://schemas.microsoft.com/mapi/proptag/0x3FFA001E"

You can also use the other properties you mention, using their DASL syntax
property tags.

You'd have to ask Dmitry why he implemented the OutlookSpy user interface
that way and how that works with QueryInterface or IDispatch, I just always
use the IMessage button when I want to look at the MAPI properties on an
item or where specific properties aren't exposed by the Outlook object
model.
 
Back
Top