2013-04-14 116 views
9

我試圖製作一個腳本,可以立即永久地自動刪除某個發件人的電子郵件,因爲Gmail只允許發送發送過濾器的郵件一封垃圾郵件30天。請不要暗示默認過濾器是足夠的,至於我的情況,至關重要的是我不知道我是從這個發件人發送的電子郵件。Google Apps腳本 - Gmail,永久刪除具有特定標籤的垃圾郵件

我現在的劇本是這樣的:

function deleteForever(labelName) { 
    var threads = GmailApp.search("in:trash label:" + labelName); 
    for (var i = 0; i < threads.length; i++) { 
     threads[i].moveToTrash(); // Where I would need a delete forever trigger 
    } 
}; 

不過,我一直無法找出一種方法來使用GmailThread,並永久刪除它,因爲不存在一個函數用於此目的。我正在查看是否有辦法使用JavaScript完成任務,但一直未能找出方法。

有沒有人有一個想法如何設置這些電子郵件永久刪除自己收到時?

回答

12

根據設計,不可能使用GmailApp永久刪除電子郵件。

+0

因爲我害怕。謝謝你的確認。 – SpeedBurner

+3

一旦它是正確的答案,但由於我們有先進的服務,可以刪除電子郵件。 – Edo

+0

是的,江戶的權利,現在完全可以使用Gmail高級服務永久和立即刪除電子郵件。有關如何啓用高級服務,請參閱https://developers.google.com/apps-script/guides/services/advanced。有關Gmail高級服務的更多詳細信息,請參閱https://developers.google.com/apps-script/advanced/gmail。並查看丹尼爾Bultas的腳本,這段代碼將刪除郵件(Gmail.Users.Messages.remove)。 – mattvleming

3

如果它可以幫助某人,可以使用高級服務完成。

https://developers.google.com/gmail/api/v1/reference/users/messages/delete

先進的業務處理方法是

Gmail.Users.Messages.remove(userId, id)

+1

很高興知道這件事,但只要它不解釋如何在原始問題中使用該方法,這更多的是評論而不是回答;應該添加/更改哪些行?例如,應該將循環中的行替換爲'Gmail.Users.Messages.remove(me,threads [i] .getId());'? –

9

@ Karan的答案已經指出這爲我工作的解決方案,但作爲沒有經驗的/不被一個專業的開發商,它帶我一點工作,將其轉化爲原始問題的工作解決方案。下面是我用來執行此任務的步驟的簡要說明:

  1. 在我的腳本創建下面的函數:

    function deleteForever(userId, labelName) { 
        var threads = GmailApp.search("in:trash label:" + labelName); 
        for (var i = 0; i < threads.length; i++) { 
        Gmail.Users.Messages.remove(userId, threads[i].getId()); 
        } 
    } 
    
  2. 要爲這個腳本支持高級服務,在菜單上找到Resources ,並選擇Advanced Google services...

  3. 啓用Gmail API就行了。

  4. 在選擇OK之前,請點擊Google Developers Console鏈接。搜索gmail,並在該處啓用該服務。

  5. 完成後,請選擇OK;該功能現在應該可以工作。 (點評:作爲the link @karan provided提到的,可以使用"me"的用戶ID,或者提供自己的Gmail地址:"<address>@gmail.com"

(步驟爲我的腳本支持高級服務是基於谷歌的指導here。)

+0

** [這是鏈接](https://www.google.com/script/start/)**到Google App腳本,您需要執行上述步驟。只需單擊該鏈接,然後單擊「啓動腳本」按鈕,即可輕鬆執行步驟。 –

+0

@Bryce Larson我看到你建議把'Messages'改成'Threads'。你用這種方式測試了腳本嗎?如果是這樣,你可以評論這樣做的好處,我會很樂意接受。 (FWIW它一直在爲我寫作的過去一年的方式。) –

2

此腳本適用於Google Apps腳本。您必須一起連接和授權服務。

function myFunction() { 

    var labelName = "deleteForever" 

    var threads = GmailApp.search("in:trash label:" + labelName); 
    for (var i = 0; i < threads.length; i++) { 
    Gmail.Users.Messages.remove('me', threads[i].getId()); 
    } 
} 
+0

如何做到這一點批量? –