下载定期约会,但所有约会开始日期显示第一个相同日期

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

我正在尝试使用 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)
python outlook calendar win32com office-automation
1个回答
0
投票

首先,如果您在 Outlook 中处理共享日历,则需要使用 GetSharedDefaultFolder 方法,该方法在委派场景中使用,其中一个用户将其一个或多个默认文件夹的访问权限委派给另一个用户(例如,他们的共享日历文件夹)。在这种情况下,您不必在字符串文字上构建代码库:

mail_box = outlook.Folders["A_mailbox"] 
calendar = mail_box.Folders["Calendar"]

另请注意以下重新分配

calendar
对象的代码:

calendar = calendar.Restrict(restriction)

Restrict
方法返回一个新的
Items
实例以及过滤结果。将两个对象分开以便稍后区分它们是有意义的。

最后,在代码示例中并不清楚如何进一步使用结果集合。您可能会发现我十多年前为技术博客撰写的文章很有帮助,请参阅如何:在 Outlook 中使用 Restrict 方法获取日历项目

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