我试图找到一种方法,在不影响其他重复例外的情况下,取消删除单个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发布的“蛮力”解决方案,但我想避免更改其他例外情况...
答案 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
只能在AppointmentItem
为RecurrenceState
的{{1}}中找到。其中,稍后。
olApptMaster
对象包含一个非定期约会的所有属性。您可以使用AppointmentItem
方法来获取循环属性的其他属性。
AppointmentItem.GetRecurrencePattern
返回一个AppointmentItem.GetRecurrencePattern
。定期约会可以每年一次,每月一次,每周一次,每周二和周四一次,以及许多其他定期约会。 RecurrencePattern
中详细介绍了所选重复发生的所有详细信息。
RecurrencePattern
的属性之一是RecurrencePattern
集合。每个异常此集合包含一个Exceptions
对象。对于您的每周项目会议,您可能需要一周或一周的时间才能与部门会议冲突,并且其日期,时间和位置也会发生变化。这些Exception
对象中的每一个都将详细说明。
Exception
对象的两个属性是Exception
和Deleted
。对于您错过的项目会议,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中找到。
我目前没有时间尝试删除删除异常。我将其添加为待办事项。您不妨现在尝试。我会对您的实验结果感兴趣。