You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python在Outlook子日历文件夹创建约会触发AttributeError报错

错误原因

CreateItem是Outlook.Application实例的专属方法,你获取到的calendar变量是子日历文件夹(Folder)对象,该对象本身没有CreateItem方法,因此调用时会抛出AttributeError异常。

解决方案

你已经正确获取到了目标子日历对象,只需要修改创建新条目的逻辑即可,以下是两种可用实现方式:

方式一:直接在目标日历创建(更推荐)

调用目标日历文件夹的Items.Add方法直接创建对应类型的条目,不需要额外移动操作:

import win32com.client
outlook = win32com.client.Dispatch('Outlook.Application').GetNamespace('MAPI')
# 这部分获取子日历的逻辑和你的原有代码完全一致
calendar = outlook.Folders('myaccount@mail.com').Folders('calendar').Folders('subcalendar')

# 修改创建新条目的代码,使用Items.Add方法
newapp = calendar.Items.Add(win32com.client.constants.olAppointmentItem)
newapp.Start = '2020-09-25 08:00'
newapp.Subject = 'Testentry'
newapp.Duration = 15
newapp.Save()

方式二:创建后移动到目标日历

先通过Application实例创建默认位置的约会条目,再调用Move方法移动到目标子日历:

import win32com.client
outlook_app = win32com.client.Dispatch('Outlook.Application')
outlook = outlook_app.GetNamespace('MAPI')
calendar = outlook.Folders('myaccount@mail.com').Folders('calendar').Folders('subcalendar')

# 先在默认位置创建约会
newapp = outlook_app.CreateItem(win32com.client.constants.olAppointmentItem)
newapp.Start = '2020-09-25 08:00'
newapp.Subject = 'Testentry'
newapp.Duration = 15
# 移动到目标子日历,移动操作会自动保存条目,无需额外调用Save
newapp.Move(calendar)

内容的提问来源于stack exchange,提问作者Maurice Ender

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:36:05