A Gmail 30 nap múlva automatikusan törli az összes felhasználó által kukába helyezett e-mailt. Van-e mód arra, hogy ezt az alapértelmezett viselkedést 7 napra módosítsuk?
Válasz
Nem, nincs mód az alapértelmezett Gmail kuka-viselkedés megváltoztatására. Ez magában foglalja az időtartam rövidítését vagy hosszabbítását is .
Létrehozhat saját kukát, amely valami hasonlót csinál, de ez egyfajta fájdalom, és nem igazán csinálja, amit akar. Egyéni címkét kell hozzáadnia. kivéve, ha minden alkalommal a törlés gombra kattint (a “Címkék” gombra, majd az egyéni kuka címkére).
Ezután létre kell hoznia egy szűrőt (egyszer; a “Beállítások” -> “Szűrők és blokkolt címek” -> “Új szűrő létrehozása” alatt), amely “A” label:custom-trash older_than:7d
a Delete it
művelettel (“Szűrő létrehozása ezzel a kereséssel” -> “Rendben” -> “Törölje”).
De ez csak a Gmail kukába küldi.
A kuka törlésének ezen a ponton történő automatizálásához egy felhasználói indexre lenne szükség a kuka mappa megnyitásához (a ), kattintson az “Ürítés most” gombra (a document.querySelector(".ya span").click()
használatával), majd az “Oké” gombra (a document.querySelector(".Kj-JD-Jl button").click()
). De még mindig nyitott oldal mellett kell futtatnia, ami a szűrőt haszontalanná teszi …
TL; DR : Nem, ez nem lehetséges.
Válasz
Igen, lehetséges, de ehhez egyedi Google Apps Scriptet kell létrehoznia. Ezt dióhéjban így teheti meg:
- Ha be van jelentkezve a Gmailbe, akkor lépjen a , és hozzon létre egy új Script Projectet.
- Nyissa meg a projektet, és hozzon létre egy új script fájlt. Helyezze bele a szkriptet (lásd alább az alábbi példát)
- Be kell lépnie az Erőforrások menübe, majd válassza az “Advanced Google Services” almenüt, majd engedélyezze a “Gmail API” opciót.
- A Speciális Google szolgáltatások ablaktáblán azt fogja mondani, hogy “Ezeket a szolgáltatásokat a Google Cloud Platform API Irányítópultján is engedélyezni kell.” Tehát ezt a linket kell követnie és engedélyeznie kell azt az API-t is.
- Végül létre kell hoznia legalább egy triggert, amely a szkriptet hívja, bármilyen időközönként (óránként, naponta stb.) , vagy valamilyen más általad választott esemény alapján.
Itt található egy Google Apps-szkript a nem kívánt e-mailek törlésére különféle címkékről (mappákból), amelyeket más online források alapján hoztam létre. Ezt a kódot bármilyen garancia nélkül adjuk meg – saját felelősségére használja. A Gmail.Users.Threads.remove () függvény visszaélése fontos e-mailek peremvesztését okozhatja .
/* 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]"); }
Válasz
Itt van egy Google Apps-szkript, amelyet naponta létrehoztam és futtatok. Testreszabhatja a Gmail kukáját, hogy megőrizze az e-maileket, ameddig csak szeretné.
//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"); } }