如何使用Python在多个日历中创建Outlook事件

3
这是我一直在使用的代码。当我想创建一个约会时,它可以工作,但只能在我的主要日历中。你们中有人知道如何在辅助日历中创建约会吗?
import win32com.client
from win32com.client import Dispatch
outlook = win32com.client.Dispatch("Outlook.Application")


def sendMeeting():
  appt = outlook.CreateItem(1) # AppointmentItem
  appt.Start = "2021-5-28 16:10" # yyyy-MM-dd hh:mm
  appt.Subject = "Fake meeting"
  appt.Duration = 30 # In minutes (60 Minutes)
  appt.Location = "The bat cave"

  appt.Save()
  appt.Send()

1个回答

0

您是指在个人资料中的第二个Exchange帐户吗?还是委派的Exchange邮箱? 如果是前者,请从Namespace.Stores集合中打开存储,使用Store.GetDefaulFolder(olFolderCalendar)打开日历文件夹,使用MAPIFolder.Items.Add创建新项目。如果是后者,则可以使用Namespace.GetSharedDefaultFolder(Recipient, olFolderCalendar)(其中Recipient可以从Namespace.CreateRecipient中检索)。

如果它是您主要存储库中的子文件夹,则可以从其父文件夹访问它并调用MAPIFolder.Items.Add。例如,如果它是默认日历文件夹的子文件夹,请使用outlook.Session.GetDefaultFolder(olFolderCalendar).Folders.Item("The name")。如果它与您的日历文件夹处于同一级别,请使用outlook.Session.GetDefaultFolder(olFolderCalendar).Parent.Folders.Item("The name")


我有一个默认的电子邮件帐户,并在该电子邮件帐户中创建了一个子日历(我的工作日历),所以我无法访问它,因为它不是默认的日历。 - person
如果我可以再问一个问题的话,.add需要是什么格式?我添加了以下内容:MapiFolder = outlook.Session.GetDefaultFolder(9).Folders.Item("Leave calendar") MapiFolder.add(appt),其中appt被定义为win32com约会项,但它返回一个错误。它需要是JSON格式吗? - person
OOM 知道 JSON 的其他信息。Items.Add 接受 OlItemType 枚举中的任何一个(您需要 olAppointmentItem,即 1),或消息类(字符串)-在您的情况下,那将是 IPM.Appointment。 - Dmitry Streblechenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接