2013-11-26 34 views
1

我試圖從使用python語言的特定人員的outlook日曆檢索空閒/忙碌狀態。使用python從Microsoft Outlook中檢索忙/閒狀態

這是我的代碼。

import win32com.client 

obj_outlook = win32com.client.Dispatch('Outlook.Application') 
obj_Namespace = obj_outlook.GetNamespace("MAPI") 
obj_Recipient = obj_Namespace.CreateRecipient("[email protected]") 
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

你可以嘗試爲第三個參數傳遞一個零嗎? – abhi

+0

@abhi - 我試着給第三個參數傳遞零,但是沒有奏效。我也嘗試過無作爲第三個參數,但結束了同樣的錯誤。反正第三個參數是可選的,所以我們通過那裏並不重要。 –

+0

我會在這裏猜測把int(11)放在11的周圍,看看是否有什麼區別。 – abhi

回答

2

我查了MSDN中的方法。

​​

的方法的語法接受3個參數。

string FreeBusy(
DateTime Start, 
int MinPerChar, 
Object CompleteFormat 

的問題是,你傳遞一個字符串日期時間參數。相反,您需要在代碼中導入日期時間庫並使用日期參數。

所以,在你的代碼的開始,試試這個。

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

的第一個參數FreeBusyDate對象。 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

相關問題