如何取消删除Outlook约会重复异常?

时间:2020-05-09 15:34:30

标签: c# outlook outlook-addin

我试图找到一种方法,在不影响其他重复例外的情况下,取消删除单个Outlook AppointmentItem重复例外。这是代码段:

Outlook.AppointmentItem oa = OutlookNameSpace.GetItemFromID(oid);
var rp = oa.GetRecurrencePattern();
var exceptions = rp.Exceptions;

//there are 5 recurrence exceptions
Assert.AreEqual(5, exceptions.Count);

var e = exceptions[1];

//first exception is deleted           
Assert.IsTrue(e.Deleted);

//how to undelete the first exception?

我知道此处Remove Exceptions from a Series发布的“蛮力”解决方案,但我想避免更改其他例外情况...

2 个答案:

答案 0 :(得分:1)

Exception.AppointmentItem对象不可用于已删除的项目。您需要使用Exception.OriginalDate属性设置新约会。

答案 1 :(得分:0)

尤金(Eugene)发现的参考文献并非严格错误,但我怀疑它具有误导性。

AppointmentItem的属性RecurrenceState可以有四个值:

Constant            Value   Significance
olApptNotRecurring  0       The appointment is not a recurring appointment.
olApptMaster        1       The appointment is a master appointment.
olApptOccurrence    2       The appointment is an occurrence of a recurring
                            appointment defined by a master appointment.
olApptException     3       The appointment is an exception to a recurrence
                            pattern defined by a master appointment.

根据我自己的实验,如果您搜索“日历”文件夹,则只会找到前两个值。我相信olApptOccurrence只能在RecurrencePattern.GetOccurrence方法的调用返回中找到。我相信olApptException只能在AppointmentItemRecurrenceState的{​​{1}}中找到。其中,稍后。

olApptMaster对象包含一个非定期约会的所有属性。您可以使用AppointmentItem方法来获取循环属性的其他属性。

AppointmentItem.GetRecurrencePattern返回一个AppointmentItem.GetRecurrencePattern。定期约会可以每年一次,每月一次,每周一次,每周二和周四一次,以及许多其他定期约会。 RecurrencePattern中详细介绍了所选重复发生的所有详细信息。

RecurrencePattern的属性之一是RecurrencePattern集合。每个异常此集合包含一个Exceptions对象。对于您的每周项目会议,您可能需要一周或一周的时间才能与部门会议冲突,并且其日期,时间和位置也会发生变化。这些Exception对象中的每一个都将详细说明。

Exception对象的两个属性是ExceptionDeleted。对于您错过的项目会议,AppointmentItem将为True,而Deleted将没有AppointmentItem属性。对于必须移动的项目会议,Exception将为False,并且将有一个Deleted属性,其中AppointmentItem的{​​{1}}为RecurrenceState的描述特殊的日期,时间,位置,持续时间等。

我发现的信息表明您无法更改olApptException,但是可以使用取决于所使用语言的技术来“擦除”。

来自https://docs.microsoft.com/en-us/office/vba/api/Outlook.Exception

在处理定期约会项目时,应释放任何 以前的参考,获取对定期约会的新参考 在访问或修改项目并释放它们之前 完成并保存更改后立即引用。 此做法适用于周期性的AppointmentItem对象以及任何其他 Exception或RecurrencePattern对象。要发布参考 Visual Basic应用程序(VBA)或Visual Basic,设置现有的 反对。在C#中,显式释放该内存 目的。有关代码示例,请参见AppointmentItem的主题。 对象。

承诺的代码是VB,可以在https://docs.microsoft.com/en-us/office/vba/api/outlook.appointmentitem中找到。

我目前没有时间尝试删除删除异常。我将其添加为待办事项。您不妨现在尝试。我会对您的实验结果感兴趣。