通过Python访问Outlook

问题描述 投票:0回答:1

我正在编写一个 Python 脚本来为我的团队提取 Outlook 日历信息。我们有 7 个人,我只能看到他们日历约会的高级信息:开始、结束、忙碌状态。对于我想做的事情,这就是我需要查看的所有信息。我想将“不在办公室”日期/时间加载到列表或数据框中,并能够在收集数据后根据需要使用该数据。

因此该脚本非常适合我的日历,但在尝试访问我团队成员的其他日历时被拒绝。有很多代码可以做到这一点,我的代码也没有什么不同。我想我的问题是权限问题:由于我只能看到基本信息,而看不到其他用户约会的完整详细信息,我是否可以不使用他们的日历项目,即使我真的只想要公开显示的数据?下面的代码在“appointments.Sort("[Start]") 行上失败...

days = 7
begin = datetime.date.today()
end = begin + datetime.timedelta(days=days)

username = os.getenv("USERNAME")

Outlook = win32com.client.Dispatch("Outlook.Application")
ns = Outlook.GetNamespace("MAPI")

recipient = ns.CreateRecipient(username)
resolved = recipient.Resolve()  # checks for username in address book

olFolderCalendar = 9
appointments = ns.GetSharedDefaultFolder(recipient, olFolderCalendar).items

# filtering criteria
appointments.Sort("[Start]")
appointments.IncludeRecurrences = "True"
restriction = "[Start] >= '" + begin.strftime("%m/%d/%Y") \
            + "' AND [End] <= '" + end.strftime("%m/%d/%Y") \
            + "' AND ([BusyStatus] = '3')"

# list of appointments meeting the restriction criteria above
restrictedItems = appointments.Restrict(restriction)
python outlook exchange-server win32com office-automation
1个回答
0
投票

您可以尝试下载共享文件夹以便能够对项目进行排序,请参阅共享邮箱中的文件夹排序顺序随机变回原样了解更多信息。

您还可以考虑使用 ExchangeUser.GetFreeBusy 方法获取一个字符串,表示从指定日期的午夜开始的 30 天内

ExchangeUser
的可用性。

© www.soinside.com 2019 - 2024. All rights reserved.