gpt4 book ai didi

c# - 使用 C# 筛选 Outlook 项目

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:57 25 4
gpt4 key购买 nike

我正在使用 Office 对象模型从 Outlook 中检索我的日历项目。我想使用 Restrict() 方法只获取今天的约会。我还想包括所有重复约会的单个实例(即不是所有重复约会 - 只是今天的约会)。

使用下面的代码,无论日期如何,我都会得到很多(但不是全部)重复项,例如生日。我还有其他各种约会 - 但不是今天的。

我尝试了不同的日期格式,包括 2013-07-25 00:00:00,但没有成功。我研究了网络,并尝试从 VBA 脚本中复制示例 - 没有成功。

感谢其他人提出的任何想法。

var outlook = new Application();
var calendar = outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
DateTime today = DateTime.Today, tomorrow = today.AddDays(1);
const string DateFormat = "dd/MM/yyyy HH:mm";
string filter = string.Format("[Start] >= '{0}' AND [Start] < '{1}'", today.ToString(DateFormat), tomorrow.ToString(DateFormat));
var todaysAppointments = calendar.Items.Restrict(filter);
// todaysAppointments.IncludeRecurrences = true;
todaysAppointments.Sort("[Start]");

最佳答案

我使用了下面的代码,它运行良好。我可能使用了太多的“IncludeRecurrences = false”,但它有效;)我必须这样做,否则它会表现得很奇怪(我认为“IncludeRecurrences”比较不同)

只需将日历作为第一个参数,将 pDateToRead 作为您想要的日期。(例如)

var calendar = outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var calendarItems = GetCalendarItemsOnDate(calendar, DateTime.Today);

实际方法:

public static IEnumerable<Outlook.AppointmentItem> GetCalendarItemsOnDate(this Outlook.MAPIFolder pCalendarFolder, DateTime pDateToRead)
{
var filter = "( [Start] >= '" + pDateToRead.ToString("MM/dd/yyyy") + "'" + " AND " + " [End] < '" + pDateToRead.AddDays(1).ToString("MM/dd/yyyy") + "' )";
pCalendarFolder.Items.IncludeRecurrences = false;
var outlookCalendarItems = pCalendarFolder.Items.Restrict(filter);
outlookCalendarItems.IncludeRecurrences = false;

var allItem = string.Empty;
foreach (Outlook.AppointmentItem item in outlookCalendarItems)
{
if (item.IsRecurring)
{
continue;
}
yield return item;
}
}

关于c# - 使用 C# 筛选 Outlook 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17868968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com