python - 我无法使用 exchangelib 读取交换日历
问题描述
对不起,我不只是看到我做错了什么(很可能很多)。我要做的就是阅读公共日历的事件。我试图关注有关使用公用文件夹的讨论,但这对新手来说有点混乱。在 OpenSuse 15.0 上使用 python 2.7.x
from exchangelib.folders import Calendar
from exchangelib import Credentials, Account, CalendarItem, UTC_NOW
import datetime
account = Account(...)
account.public_folders_root.refresh()
start = UTC_NOW() - datetime.timedelta(days=7)
print account.public_folders_root.tree() #this works
x = account.public_folders_root
specificFolder = [item for item in x.walk().get_folders() if item.name == "OC Appointment Calendar"]
leg_folder = Calendar(folder_id = specificFolder[0].id, changekey = specificFolder[0].changekey)
for i in leg_folder.view(start=start, end=start + datetime.timedelta(days=14)):
print i
testexchange.py", line 15, in <module>
for i in leg_folder.view(start=start, end=start + datetime.timedelta(days=14)):
File "/usr/lib/python2.7/site-packages/exchangelib/folders.py", line 957, in view
return FolderCollection(account=self.root.account, folders=[self]).view(*args, **kwargs)
AttributeError: 'NoneType' object has no attribute 'account
解决方案
事实证明,我并不遥远。但这里是允许访问约会的代码更改。
#specificFolder = [item for item in x.walk().get_folders() if item.name == "OC Appointment Calendar"]
# I was close in above but a better way to find the folder I was looking for is:
specificFolder = list(account.public_folders_root.glob('**/OC Appointment Calendar'))[0]
# Now I can use view()
for item in specificFolder.view(start=start, end=start + datetime.timedelta(days=14)):
# item now has all the available data
print item.mime_content
推荐阅读
- google-cloud-platform - 如何防止 Google Cloud Function 实例宕机
- flutter - 嵌套行/列中的颤振扩展图表
- visual-studio - MDX openingperiod, closingperiod 和 sum(measure) 返回相同的值
- c - C预处理器:从给定的枚举值声明结构数据
- php - 填写一个字段后如何自动填写其他表单字段?
- javascript - 获取具有对象一键值的数组的平均值 - Javascript
- c# - 如何在另一个文件上使用一个文件中的方法
- python - 更新 tkinter 画布中的 matlib 图
- phaser-framework - Creating animation from atlas in Phaser 3?
- android - 应用程序在后台运行并再次打开它会使设备滞后