我正在使用 Matlab 从一组共享的 Outlook 日历中检索日历约会。我需要在某个日期范围内同时包含定期和非定期约会。此代码有效:
outlook = actxserver('Outlook.Application');
mapi = outlook.GetNamespace('mapi');
explorer = mapi.GetDefaultFolder(9).GetExplorer;
NavModule = explorer.NavigationPane.Modules.GetNavigationModule(1);
NavGroup = NavModule.NavigationGroups.GetDefaultNavigationGroup(2);
filter = {['[Start] >= ''',strDATstart,''' AND [Start] <= ''', strDATend, '''']};
for i=1:NavGroup.NavigationFolders.Count
NavFolder = NavGroup.NavigationFolders.Item(i);
LST = NavFolder.Folder.Items;
LST.IncludeRecurrences = -1;
LST.Sort('[Start]');
LST.Restrict(filter{1});
etc.
我希望 Restrict 方法从列表中删除超出过滤器设置的日期范围的项目(strDATstart 和 strDATend 在代码中的其他位置设置)。但是,Restrict 方法没有按预期工作,LST 返回 2147483647 个项目(我认为这不合法,而是代表某种溢出条件)。大多数返回的项目都是空的,但列表的整体大小使我的代码非常缓慢。
对于如何在日期范围内更好地检索或过滤这些约会的任何指导,我将不胜感激。