获取Outlook约会后,无法调用win32com.client.Dispatch AppointmentItem的'Size'属性

时间:2018-06-07 12:08:23

标签: python-3.x outlook win32com mapi

我正在使用 win32com.client 来访问Outlook应用程序。我成功地设法从日历中获得约会,但我有兴趣获得约会的数量而不进入 for 循环。

我正在做以下事情:

import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace('MAPI')

appointments = namespace.GetDefaultFolder(9).Items

appointments.Sort("[Start]")
appointments.IncludeRecurrences = "True"

restriction = "[Start] >= '" + start_date.strftime('%Y.%m.%d') + "' AND [Start] <= '" + \
              end_date.strftime('%Y.%m.%d') + "'"
restricted_items = appointments.Restrict(restriction)
print(restricted_items.Size)

从描述AppointmentItem API的this链接,我发现我可以获得Outlook对象的大小。但它引发了异常

AttributeError: '<win32com.gen_py.Microsoft Outlook 15.0 Object Library._Items instance at 0x73837256>' object has no attribute 'size'

我做错了什么?

顺便说一下,我想使用它来检查因上述查询而检索的任何约会,这样我就不会在restriction上使用None对象。

1 个答案:

答案 0 :(得分:1)

Restrict返回Items集合。它不会公开Size属性 - 您需要的是Count

如果未提前知道集合的大小(Outlook按需计算),请使用Items.GetFirst/GetNext循环访问集合中的项目。