我正在尝试使用python语言从特定人员的outlook日历中检索忙/闲状态。
这是我的代码。
import win32com.client
obj_outlook = win32com.client.Dispatch('Outlook.Application')
obj_Namespace = obj_outlook.GetNamespace("MAPI")
obj_Recipient = obj_Namespace.CreateRecipient("someone@domain.com")
str_Free_Busy_Data = obj_Recipient.FreeBusy("11-11-2013", 11)
print str_Free_Busy_Data
但是我收到了一个错误:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
str_Free_Busy_Data = obj_Recipient.FreeBusy("11-11-2013", 11)
File "<COMObject CreateRecipient>", line 4, in FreeBusy
TypeError: an integer is required
所以我的问题是Recipient.FreeBusy()方法有两个必需参数,开始日期和持续时间。这里11是持续时间,它是一个整数。那么为什么python不能在这里识别整数参数并返回TypeError。
如果我做错了什么(请在python世界中我还是新手),请帮帮我。
提前致谢。
答案 0 :(得分:2)
我在MSDN中查找了该方法。
该方法的语法有3个参数。
string FreeBusy(
DateTime Start,
int MinPerChar,
Object CompleteFormat
)
问题在于您将字符串传递给DateTime参数。相反,您需要在代码中导入日期时间库并使用日期参数。
所以,在你的代码开始时,试试这个。
import datetime
#Then declare the my_date variable as datetime.date.
my_date = datetime.date(2013,11,23)
str_Free_Busy_Data = obj_Recipient.FreeBusy(my_date, 11)
答案 1 :(得分:1)
FreeBusy
的第一个参数是Date
个对象。 Pywin不会将字符串转换为Date
,但它可以转换pywintypes.Time
对象,或者表示自Unix纪元以来秒数的整数。因此错误:当第一个参数被隐式转换为Time
时,构造函数会抱怨它需要一个整数。
#start date: 12/31/1969 7:00:00 PM
str_Free_Busy_Data = obj_Recipient.FreeBusy(0, 11)
有很多方法可以从日期获取Unix时间戳。请参阅Convert python datetime to epoch with strftime。