Gmail automaticky za 30 dní, odstraní všechny e-maily, které uživatel vyhodil do koše. Existuje nějaký způsob, jak změnit toto výchozí chování na 7 dní?

Odpověď

Ne, neexistuje způsob, jak změnit výchozí chování koše v Gmailu. To zahrnuje zkrácení nebo prodloužení doby trvání .


Můžete si vytvořit svůj vlastní koš, který dělá něco podobného, ale je to trochu bolest a nedělá to, co chcete. Musíte přidat vlastní štítek než pokaždé kliknout na tlačítko pro smazání (prostřednictvím tlačítka „Štítky“ a poté vlastního štítku koše).

Potom budete muset vytvořit filtr (jednorázově; v části „Nastavení“ -> „Filtry a blokované adresy“ -> „Vytvořit nový filtr“), který bude obsahovat slova „label:custom-trash older_than:7d s akcí Delete it („Vytvořit filtr pomocí tohoto vyhledávání“ -> „Dobře“ -> „Smazat“).

Ale toto se odešle pouze do koše Gmailu.


K automatickému odstranění koše v tomto okamžiku by bylo nutné, aby uživatelský skript otevřel složku koše (pomocí document.querySelector("[href="https://mail.google.com/mail/u/0/#trash"]").click()), kliknutím na tlačítko „Vyprázdnit koš nyní“ (pomocí document.querySelector(".ya span").click()) a následným kliknutím na tlačítko „Dobře“ (pomocí document.querySelector(".Kj-JD-Jl button").click()). Ale i tak to musíte spustit s otevřenou stránkou, díky čemuž je filtr zbytečný …


TL; DR : Ne, to není možné.

Odpověď

Ano, je to možné, ale vyžaduje to, abyste si vytvořili vlastní skript Google Apps. Stručně řečeno, jak to udělat:

  • Pokud jste přihlášeni k Gmailu, můžete přejít na https://script.google.com/ a vytvořte nový projekt skriptu.
  • Otevřete tento projekt a vytvořte nový soubor skriptu. Vložte do něj svůj skript (příklad viz níže)
  • Budete muset přejít do nabídky Zdroje, vybrat podnabídku „Pokročilé služby Google“ a poté povolit možnost „Gmail API“.
  • V podokně Pokročilé služby Google se dozvíte, že „Tyto služby musí být také povoleny na ovládacím panelu rozhraní Google Cloud Platform API.“ Budete tedy muset následovat tento odkaz a povolit také toto API.
  • Nakonec budete muset vytvořit alespoň jeden spouštěč, který bude volat váš skript v jakémkoli zvoleném intervalu (hodinově, denně atd.) , nebo na základě nějaké jiné události, kterou si vyberete.

Zde je skript Google Apps pro mazání nežádoucích e-mailů z různých štítků (složek), které jsem vytvořil na základě jiných online zdrojů. Tento kód je poskytován bez jakékoli záruky – použití na vlastní riziko. Zneužití funkce Gmail.Users.Threads.remove () může vést ke ztrátě oprávnění důležitých e-mailů .

/* Delete all emails from the given email address in the given label. */ function deleteEmailsFrom(fromEmailAddress, inLabel) { var queryEmailsToDelete = "from:" + fromEmailAddress + " in:" + inLabel; var permanentlyDeleteThreads = true; var pageToken; do { var threadList = Gmail.Users.Threads.list("me", { q: queryEmailsToDelete, pageToken: pageToken }); if (threadList.threads && threadList.threads.length > 0) { threadList.threads.forEach(function(thread) { Logger.log("About to delete this email thread: id: %s, snippet: %s", thread.id, thread.snippet); if (permanentlyDeleteThreads) { Gmail.Users.Threads.remove("me", thread.id); Logger.log("Deleted this email thread: id: %s, snippet: %s", thread.id, thread.snippet); } }); } pageToken = threadList.nextPageToken; } while (pageToken); } /* Delete all emails from the given email address in both Spam and Trash folders. */ function deleteSpamOrTrashEmailsFromAddress(fromEmailAddress) { deleteEmailsFrom(fromEmailAddress, "trash"); deleteEmailsFrom(fromEmailAddress, "spam"); } function deleteUnwantedSpamOrTrashEmails() { deleteSpamOrTrashEmailsFromAddress("[email protected]"); deleteSpamOrTrashEmailsFromAddress("[email protected]"); deleteSpamOrTrashEmailsFromAddress("[email protected]"); } 

Odpověď

Zde je skript Google Apps, který jsem vytvořil a běží každý den. Koš můžete upravit tak, aby vám e-maily zůstávaly tak dlouho, jak chcete.

//INSTRUCTIONS // 1. Create two lables in Gmail: SYSTEM/reset & SYSTEM/moved // 2. Set how long you want to retain mail in trash on lines 31-34 (5m = 5 months) // 3. Setup a trigger to run this script at least as many times a day as emails you expect to accumulate in your trash over the time you selected (1 trigger a day = preserve up to 1000 emails in trash; 2 triggers a day = preserve up to 2000 emails in trash) //HOW IT WORKS // Deleted Emails are moved out of your trash and immediately back in, thus restarting the 30 day deletion time // Labels are used to keep track of which emails have been moved //WHY DAILY TRIGGERS ARE NEEEDED // Google limits script to edit up to 100 emails at a time function extendTrashTime() { function move(moved_label, empty_threads) { GmailApp.moveThreadsToArchive(empty_threads); GmailApp.moveThreadsToTrash(empty_threads); moved_label.addToThreads(empty_threads); } function reset(reset_label, moved_label, moved_threads) { reset_label.addToThreads(moved_threads); moved_label.removeFromThreads(moved_threads); } function empty(reset_label, reset_threads) { reset_label.removeFromThreads(reset_threads); } let moved_label = GmailApp.getUserLabelByName("SYSTEM/moved"); let reset_label = GmailApp.getUserLabelByName("SYSTEM/reset"); // CHANGE TIME TO RETAIN MAIL IN THE THREE LINES BELOW let moved_threads = GmailApp.search("in:trash newer_than:5m -label:SYSTEM/ignore label:SYSTEM/moved", 0, 100); let reset_threads = GmailApp.search("in:trash newer_than:5m -label:SYSTEM/ignore label:SYSTEM/reset", 0, 100); let empty_threads = GmailApp.search("in:trash newer_than:5m -label:SYSTEM/ignore -label:SYSTEM/moved -label:SYSTEM/reset", 0, 100); let moved_total = moved_threads.length; let reset_total = reset_threads.length; let empty_total = empty_threads.length; Logger.log("moved_total", moved_total); Logger.log("reset_total", reset_total); Logger.log("empty_total", empty_total); if (moved_total >= 0 && reset_total === 0 && empty_total > 0) { Logger.log("Phase 1: move emails & label with moved"); move(moved_label, empty_threads); } else if (moved_total > 0 && reset_total >= 0) { Logger.log("Phase 2: remove moved label and replace with reset label"); reset(reset_label, moved_label, moved_threads); } else if (moved_total === 0 && reset_total > 0) { Logger.log("Phase 3: remove reset label"); empty(reset_label, reset_threads); } else { Logger.log("No results for empty_threads query"); } } 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *