2012-09-04 76 views
3

我想要一份來自gmail的昨天所有電子郵件的列表。我正在嘗試使用谷歌應用程序腳本處理它,在我的收件箱中編寫查詢,然後使用GmailApp.search。之後:和之前:gmail中的搜索查詢返回的結果不是預期的,因爲查詢基於SMTP服務器發送郵件的時間(它是谷歌的服務器)進行搜索。因此,在不同的時區,搜索產生不適合我的結果。有沒有辦法使用時間標準搜索Gmail,這樣我可以適應時區差異?根據時間在Gmail中搜索電子郵件

請注意,我的時區正確配置了本地時區,日曆,Gmail等,因此我在收件箱中看到的電子郵件的時間都是正確的。只有搜索正在創建一個問題。

+0

你可以在樣本上解釋你的期望。根據[文檔](http://support.google.com/mail/bin/answer.py?hl=zh-CN&answer=7190),「之前:」和「之後:」操作員使用日期(年/月/一天)而不是時間。即不考慮賬戶時區。 – megabyte1024

+0

是的,你是對的,因此我無法找到根據我的時區準確獲取最後幾天電子郵件的方法。例如,如果今天是9月5日,我希望根據當地時區9月4日00:00:00至9月5日00:00:00發送所有電子郵件。例如:之後:2012/09/04之前:2012/09/05在Gmail中搜索給我一些郵件的第四和第五的一些,理想情況下,我希望得到第四的所有電子郵件。請注意,我在Gmail郵件存儲時區前12:30提供服務。 – bhatiaravi

回答

8

實際上我經過一些試驗和錯誤後發現了一種方法,它確實有可能按時間搜索gmail郵件。我注意到,在谷歌應用程序腳本返回的Date()是根據我的時區。下面的代碼將返回收件箱中的所有前一天的電子郵件,假設新的Date()根據您的時區給出日期和時間。請注意,getTime()返回毫秒數,而較新/較舊的查詢需要秒數。

var month = new Date().getMonth(); 
var date = new Date().getDate(); 
var year = new Date().getFullYear(); 
var time1 = new Date(year, month, date, 0, 0, 0).getTime(); 
var time2 = time1 - 86400000; 
var query = "newer:" + time2/1000 + " older:" + time1/1000 + " in:inbox"; 
var conversations = GmailApp.search(query); 

我希望它能幫助別人。

+0

永遠不會想到這一點。謝謝!認爲會有一種比日子更精確的方式。 – chug2k

2

你能給出你正在使用的確切搜索字符串,以及如何構建日期前後? 您可以使用Utilities.formatDate()函數將日期字符串格式化爲您所在的時區。

另一種解決方法是獲取所有郵件(可能爲100左右),然後丟棄所有不需要的郵件適合你感興趣的時間段。

+0

日期字符串沒有幫助,因爲輸出格式畢竟是一個日期,並且在after:search之後的行爲與標準相同。我打算在谷歌應用腳​​本中執行以下操作:query =「after:」+ startTime +「before:」+ endTime +「in:inobx」以及使用此查詢使用GmailApp.search函數。是的,我已經想到提取所有電子郵件的想法,並放棄了一些,但我正在尋找是否有更好的解決方案。 – bhatiaravi