我正在尝试使用 python 和 win32com 从客户端 Outlook 获取所有约会。客户, 日历 A 中有几个定期约会。但是,当我通过 python 下载这些定期约会时,它只显示第一个约会开始日期,而不是每个不同的日期。 IncludeRecurrences = True 在我的编码中使用;我怎样才能修改我的Python编码?谢谢
示例:定期约会发生在 2024 年每个月的第一天。我想显示 12 个实例,有 12 个不同的开始日期(01/01/2024、02/01/2024 等),但目前仅显示 01/01 /2024 并重复 12 次。
import win32com.client, datetime
import time
import os
import email
import imaplib
import pandas as pd
import xlsxwriter
import datetime as dt
import calendar as ccc
from datetime import timedelta
MailboxToAccess = "[email protected]"
outlook = win32com.client.Dispatch('Outlook.Application').GetNamespace('MAPI')
recip = outlook.CreateRecipient(MailboxToAccess)
mail_box = outlook.Folders["A_mailbox"]
calendar = mail_box.Folders["Calendar"].Items
calendar.IncludeRecurrences = True
calendar.Sort('[Start]')
_today=datetime.date.today()[enter image description here](https://i.stack.imgur.com/kdnV3.png)
first_day = datetime.date(_today.year, _today.month, 1)
this_month_end = datetime.datetime(_today.year, _today.month, ccc.monthrange(_today.year, _today.month)[1])
restriction = "[Start] >= '" + str(first_day) + "' AND [END] <= '" + str(this_month_end) + "'"
print (restriction)
calendar = calendar.Restrict(restriction)
首先,如果您在 Outlook 中处理共享日历,则需要使用 GetSharedDefaultFolder 方法,该方法在委派场景中使用,其中一个用户将其一个或多个默认文件夹的访问权限委派给另一个用户(例如,他们的共享日历文件夹)。在这种情况下,您不必在字符串文字上构建代码库:
mail_box = outlook.Folders["A_mailbox"]
calendar = mail_box.Folders["Calendar"]
另请注意以下重新分配
calendar
对象的代码:
calendar = calendar.Restrict(restriction)
Restrict
方法返回一个新的Items
实例以及过滤结果。将两个对象分开以便稍后区分它们是有意义的。
最后,在代码示例中并不清楚如何进一步使用结果集合。您可能会发现我十多年前为技术博客撰写的文章很有帮助,请参阅如何:在 Outlook 中使用 Restrict 方法获取日历项目。