Gmail automatisk inden for 30 dage, sletter alle de e-mails, der er skraldet af brugeren. Er der nogen måde at ændre denne standardadfærd til 7 dage?
Svar
Nej, der er ingen måde at ændre Gmail-papirkurven som standard. Dette inkluderer at gøre varigheden kortere eller længere .
Du kan oprette din egen skraldespand, der gør noget lignende, men det er lidt smertefuldt og gør ikke rigtig, hvad du vil. Du skal tilføje en brugerdefineret etiket bortset fra at klikke på knappen Slet hver gang (Via knappen “Etiketter” og derefter din brugerdefinerede papirkurv).
Så skal du oprette et filter (en gang; under “Indstillinger” -> “Filtre og blokerede adresser” -> “Opret nyt filter”), der “Har ordene” label:custom-trash older_than:7d
med handlingen Delete it
(“Opret filter med denne søgning” -> “Okay” -> “Slet det”).
Men dette sender det kun til Gmails skrald.
For at automatiske sletning af papirkurven på dette tidspunkt ville det kræve, at et brugerskrift åbner papirkurven (ved hjælp af document.querySelector("[href="https://mail.google.com/mail/u/0/#trash"]").click()
) ved at klikke på knappen “Tøm papirkurven nu” (ved hjælp af document.querySelector(".ya span").click()
) og derefter klikke på knappen “Okay” (ved hjælp af document.querySelector(".Kj-JD-Jl button").click()
). Men selv stadig skal du køre det med siden åben, hvilket gør filteret ubrugeligt …
TL; DR : Nej, det er ikke muligt.
Svar
Ja, det er muligt, men det kræver, at du opretter et brugerdefineret Google Apps-script. Sådan gør du det i en nøddeskal:
- Hvis du er logget ind på Gmail, kan du gå til https://script.google.com/ , og opret et nyt script-projekt.
- Åbn dette projekt, og opret en ny script-fil. Sæt dit script i det (se et eksempel nedenfor)
- Du bliver nødt til at gå til menuen Ressourcer og derefter vælge undermenuen “Avancerede Google-tjenester” og derefter aktivere indstillingen “Gmail API”.
- Ruden Avancerede Google-tjenester fortæller dig, at “Disse tjenester skal også være aktiveret i Google Cloud Platform API Dashboard.” Så du bliver nødt til at følge dette link og aktivere den API også.
- Endelig bliver du nødt til at oprette mindst en trigger, der kalder dit script i det interval, du vælger (time, dagligt osv.) eller baseret på en anden begivenhed, som du vælger.
Her er et Google Apps-script til at slette uønskede e-mails fra forskellige etiketter (mapper), som jeg oprettede baseret på andre kilder online. Denne kode leveres uden nogen som helst garanti – brug på egen risiko. Misbrug af Gmail.Users.Threads.remove () -funktionen kan resultere i permamenttab af vigtige e-mails .
/* 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]"); }
Svar
Her er et Google Apps-script, jeg oprettede og kører dagligt. Du kan tilpasse din Gmail-papirkurv, så den gemmer e-mails, så længe du vil.
//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"); } }