I'm trying to make a script that automatically deletes e-mails from a certain sender immediately and permanently, as Gmail only allows for a filter which sends an e-mail to trash for 30 days. Please do not suggest that the default filter is enough, as for my situation, it is vital that I do not know that I was sent an e-mail from this sender.
My current script looks like this:
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
}
};
However, I have been unable to figure out a way to use a GmailThread and to delete it permanently as there does not exist a function for this purpose. I was looking to see if there was a way I could finish the task using JavaScript, but have been unable figure out a method.
Does anyone have an idea how I can set these e-mails to delete themselves permanently when received?
It is not possible, by design, to delete an email permanently using GmailApp.
@karan's answer already points to the solution which worked for me, but being inexperienced / not-a-professional-developer, it took me a little work to translate it into a working solution to the original question. Here's a concise description of the steps I used to perform this task:
Create the following function in my script:
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());
}
}
To enable advanced services for this script, locate Resources
on the menu, and select Advanced Google services...
Enable Gmail API
on the list.
Before selecting OK
, click on the Google Developers Console
link. Search for gmail
, and enable the service there as well.
Done, select OK
; the function should now work. (Comment: as mentioned in the link @karan provided, one can use "me"
for userID, or alternatively provide one's Gmail address: "<address>@gmail.com"
.)
(Steps to enable advanced services for my script are based on Google's guide here.)
If it helps someone, it can be done using the advanced services.
https://developers.google.com/gmail/api/v1/reference/users/messages/delete
The method in advanced services is
Gmail.Users.Messages.remove(userId, id)
This script works for Google Apps Script. You have to just connect and auth services together.
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());
}
}
try this
function delete_all_mail(){
var myspreadsheet = SpreadsheetApp.openById('1AG1fZ9BuS8***********');
var mysheet = myspreadsheet.getSheets()[0];
//0~500
var threads = GmailApp.getInboxThreads(0 , 500);
for(var i = 0; i < threads.length; i++)
{
threads[i].moveToTrash();
}
}