Giải pháp tự động để xóa một số thư Gmail cũ hơn n ngày


8

Tôi cần xóa một số thư Gmail cũ hơn n ngày (Tôi có thể nhận toàn bộ tập hợp qua chuỗi tìm kiếm). Tôi biết điều này không thể thực hiện trực tiếp trong Gmail (ví dụ như câu hỏi này ) vì vậy tôi đang tìm kiếm một ứng dụng web có thể xử lý các hoạt động đó trên tài khoản của tôi (và nói chung, các nhiệm vụ vệ sinh tương tự).

Một giải pháp tự động sẽ chủ động đánh dấu các tin nhắn là đã đọc khi chúng đạt đến một độ tuổi xác định là giải pháp mong muốn. Có cách nào để thực hiện điều này thông qua các bộ lọc Gmail và một số cú pháp không? Có bất kỳ ứng dụng, kịch bản, vv sẽ giúp đỡ?


Có thể viết một tập lệnh Greasemonkey sẽ thực hiện hành động này.
Anderson Green

Tôi cũng quan tâm đến việc thực hiện điều này. Cần giúp đỡ.
Randy6T9

Câu trả lời:


0
  1. Không có tính năng tích hợp trong Gmail để thực hiện việc này khi viết câu trả lời này (tháng 1 năm 2013).
  2. Tôi gặp vấn đề tương tự với tất cả các bản tin và thông báo cũ này và tôi đã tạo tập lệnh ứng dụng Google để thực hiện chính xác điều này, với một số trợ giúp từ các bộ lọc tích hợp. Vui lòng kiểm tra tại đây: http://2sdd.blogspot.ru/2012/11/how-to-clean-up-gmail-inbox-from-emails.html

Script rất đơn giản, hãy thoải mái hack nó theo nhu cầu của riêng bạn.


Cảm ơn - cũng vì kịch bản cơ bản giải quyết vấn đề (mặc dù theo cách gián tiếp, đây là điều cần được Google thực hiện). Cập nhật "câu trả lời hay nhất" :)
WoJ

6

Theo Google:

  • older_than, newer_than- Tương tự như cũ hơnmới hơn , nhưng cho phép ngày tương đối sử dụng d, m và y cho ngày, tháng và năm
    Ví dụ: newer_than:2d
    Ý nghĩa: Tìm tin nhắn được gửi trong vòng hai ngày qua.

Với điều này, bạn có thể tạo bộ lọc xóa những bộ lọc này và thậm chí chỉ các thư trong một nhãn cụ thể.

Nguồn .


1
Cảm ơn nhưng đây không phải là những gì tôi đang tìm kiếm. Tôi biết rằng tôi có thể tìm kiếm các email đáp ứng các tiêu chí nhất định. Những gì tôi muốn làm là có một cách tự động để xử lý chúng (xóa trong trường hợp đó), mà không có hành động thủ công từ phía tôi.
WoJ

2
@WoJ Bộ lọc là những gì bạn sử dụng để tự động xóa các tin nhắn đáp ứng các tiêu chí nhất định. Có phải vấn đề là, ngay cả với older_than:tiêu chí, các thông báo chỉ bị bộ lọc xử lý khi vào hộp thư đến của bạn và sau đó, bộ lọc sẽ không kích hoạt khi thư trở nên cũ hơn thời gian đã cho?
Nathan Craike

1
@Nathan Craike: chính xác. Tôi có một loạt các bộ lọc xử lý thư đến nhưng, như bạn đã đề cập, cái này chỉ dành cho thư đến chứ không phải bộ lọc trong einbox.
WoJ

Điều này sẽ không làm việc. Theo Google, các tìm kiếm Bộ lọc có chứa "nhãn:", "trong:", "là:", phạm vi ngày (ví dụ: "trước:" hoặc "sau:") hoặc tiêu chí sao (ví dụ: "có: ngôi sao vàng") là không được đề xuất vì chúng sẽ không bao giờ khớp với thư đến.
DxTx

3

Tại sao không tìm kiếm đơn giản, chọn và xóa?

Ví dụ: bạn muốn xóa tất cả thư trước ngày 1 tháng 1 năm 2009. Vì vậy, bạn tìm kiếm Gmail cho -

before:2009/1/1

(Bạn có thể tìm kiếm mọi thứ và phần còn lại của câu trả lời này vẫn hoạt động)
Điều đó trả về tất cả các thư trong hộp thư đến trước ngày 1 tháng 1 năm 2009 -

nhập mô tả hình ảnh ở đây

Bây giờ bạn chọn tất cả các thư trong trang hiện tại bằng cách đánh dấu vào ô này -

nhập mô tả hình ảnh ở đây

Google sẽ chọn tất cả thư trên trang và cũng hỏi bạn nếu bạn muốn chọn tất cả thư phù hợp với truy vấn tìm kiếm của bạn -

nhập mô tả hình ảnh ở đây

Nếu bạn nhấp Select all conversations that match this search, nó sẽ chọn tất cả các thư trước ngày 1 tháng 1 năm 2009, đó là tất cả các thư bạn muốn xóa.

Sau đó, bạn có thể nhấp vào Deletenút và nó sẽ hỏi bạn nếu bạn chắc chắn -

Hành động này sẽ ảnh hưởng đến tất cả các cuộc hội thoại trong tìm kiếm này. Bạn có chắc chắn muốn tiếp tục?

Nhấn Okvà thư của bạn sẽ bị xóa.


2
Thận trọng - nếu các cuộc hội thoại được bật, bạn cũng sẽ xóa bất kỳ tin nhắn nào sau ngày đó nếu chúng là một phần của cuộc hội thoại xảy ra trước ngày được chỉ định.
mhoran_psprep

Cảm ơn nhưng đây không phải là điều tôi muốn đạt được. Tôi biết về các tùy chọn tìm kiếm và những gì tôi đang tìm kiếm là một cách để khớp các tin nhắn "cũ hơn 10 ngày" (ví dụ). Không "cũ hơn ngày 1 tháng 5" (trong trường hợp của ngày hôm nay). Cách sử dụng thông thường sẽ là loại bỏ các tin nhắn chỉ có ý nghĩa trong một thời gian nhất định, như danh sách TV. Điều này cần phải là một thước đo thời gian tương đối, không phải là một ngày dựa trên.
WoJ

Bạn có muốn tạo một bộ lọc? Nếu không, vấn đề chỉ là một bước để biến "10 ngày tuổi" thành "trước ngày 01-05-2012" mà không mất hơn một giây.
Bibhas

Bạn có biết cách tạo tập lệnh Greasemonkey sẽ tự động thực hiện hành động này không?
Anderson Green

2

Nếu bạn có 10.000 email đang ngồi trong google, xóa 8.000 trong số đó 20 lần không phải là một lựa chọn thú vị. Một tùy chọn dễ dàng hơn nếu bạn có số lượng email rất lớn là nhận một ứng dụng email miễn phí như Thunderbird và thiết lập để xóa thư cũ hơn số ngày X. Nếu bạn muốn giữ thư lâu hơn giới hạn trong ứng dụng email, hãy đặt nó để xóa khỏi máy chủ khi bị xóa khỏi máy khách. Sau đó thường xuyên kiểm tra email với khách hàng để xóa email khỏi máy chủ.


1

Tôi có một cái gì đó như thế này bị hack lên. Tôi có thể dựa trên một cái gì đó mà người khác đã viết, nhưng lâu lắm rồi tôi không nhớ.

Nó đã chugg đi đáng tin cậy kể từ đó. Đây là cách nó hoạt động:

Nói chung, nó tìm kiếm các tin nhắn với các thẻ nhất định và sau đó thay thế thẻ đó bằng một thẻ khác và sau đó lưu trữ chúng.

Cụ thể , tin nhắn được gắn thẻ với các bộ lọc hộp thư đến để cho biết chúng sẽ "hết hạn" như thế nào. Trong ví dụ dưới đây, điều này dựa trên tuổi của chúng và nhãn được gọi Bulk/Expires/[Daily|Weekly|Monthly]. (Lưu ý: đây là thẻ lồng nhau, nhưng chúng không cần được lồng, tôi chỉ muốn giữ chúng có tổ chức như thế này). Mỗi ngày, một số Tập lệnh Google Apps sẽ chạy để kiểm tra xem các chuỗi trong các nhãn đó có khớp với một số điều kiện hay không, thường là một ngày. Sau đó, nó sẽ thay thế thẻ đó bằng một thẻ khác (được gọi Bulk/Expiredbên dưới) và lưu trữ nó. Bạn cũng có thể có nó xóa tin nhắn.

Đây là mã (có thêm nhận xét) sẽ dọn sạch thư hơn một ngày. Nó được thiết lập để kích hoạt mỗi ngày vào lúc 4 giờ sáng:

function cleanUpDaily() {
  // Enter # of days before messages are archived
  var delayDays = 1 
  // make an empty Date() object
  var maxDate = new Date(); 
  // Set that date object ('maxDate')to the current data minus 'delayDays'.
  // In this case it's a date 1 day before the time when this runs.
  maxDate.setDate(maxDate.getDate()-delayDays); 
  // this is the label that finds messages eligible for this filter
  var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Daily"); 
  // this is the new label so I know a message has already been "Expired"
  var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); 
  // Get the message threads which might need to be expired.
  var threads = currLabel.getThreads(); 
  // Iterate over those threads and check if they need to be expired
  for (var i = 0; i < threads.length; i++) { 
    // You can put whatever kinds of conditions in here,
    // but this is just going to check if they were recieved before
    // 'maxDate' which here is 1 day before runtime.
    if (threads[i].getLastMessageDate()<maxDate) 
      {
        // If they're old, archive them
        threads[i].moveToArchive(); 

        // Remove the old label, they won't need to be expired again 
        // This isn't required, but it will make it slow, and Google will
        // time-out things that take too long, in my experaince it will
        // become slow and start timing out if there are more than a few
        // dozen threads to process, YMMV.
        threads[i].removeLabel(currLabel);

        // Label the thread with a new label indicating it's gone through this 
        // process. Also not strictly necessary, but it's useful if you'd like
        // to do some more processing on them in the future.
        threads[i].addLabel(newLabel); 
      }
  }
}

Đây là mã để làm điều này cho những thứ sẽ hết hạn trong một tuần hoặc một tháng, bạn thiết lập các kích hoạt để chạy các chức năng này hàng tuần hoặc hàng tháng.

function cleanUpWeekly() {
  var delayDays = 7 // Enter # of days before messages are moved to archive
  var maxDate = new Date();
  maxDate.setDate(maxDate.getDate()-delayDays);
  var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Weekly"); // this is the label that finds messages eligible for this filter
  var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); // this is the new label so I know a message was expired and thats why its archived
  var threads = currLabel.getThreads();
  for (var i = 0; i < threads.length; i++) {
    if (threads[i].getLastMessageDate()<maxDate)
      {
        threads[i].moveToArchive();
        threads[i].removeLabel(currLabel); // I take the label off so there's not an infinitely growing "threads" variable with time
        threads[i].addLabel(newLabel);
      }
  }
}

function cleanUpMonthly() {
  var delayDays = 30 // Enter # of days before messages are moved to archive
  var maxDate = new Date();
  maxDate.setDate(maxDate.getDate()-delayDays);
  var currLabel = GmailApp.getUserLabelByName("Bulk/Expires/Monthly"); // this is the label that finds messages eligible for this filter
  var newLabel = GmailApp.getUserLabelByName("Bulk/Expired"); // this is the new label so I know a message was expired and thats why its archived
  var threads = currLabel.getThreads();
  for (var i = 0; i < threads.length; i++) {
    if (threads[i].getLastMessageDate()<maxDate)
      {
        threads[i].moveToArchive();
        threads[i].removeLabel(currLabel); // I take the label off so there's not an infinitely growing "threads" variable with time
        threads[i].addLabel(newLabel);
      }
  }
}

Ngay bây giờ tôi đang làm việc trên một ứng dụng sẽ nhận các Bulk/Expiredtin nhắn và nếu chúng có Purgethẻ thì nó sẽ xóa chúng vĩnh viễn. Tôi không thích xóa một email (crazy), nhưng rất nhiều thứ trong danh sách gửi thư được lưu trữ có xu hướng gây ô nhiễm kết quả tìm kiếm. Sự phiền toái này đã bắt đầu lấn át xu hướng tích trữ kỹ thuật số của tôi. Thay đổi duy nhất là forvòng lặp kiểm tra xem tin nhắn có thẻ 'Thanh lọc' hay không. Điều này không phải là nhỏ, bởi vì các nhãn của một luồng đã cho đã được trả về dưới dạng một mảng, và vì vậy tôi phải kiểm tra mảng đó sẽ thêm một vài dòng mã. Trừ khi tôi tìm thấy một số cách mượt mà.

Tôi chủ yếu sử dụng điều này để quản lý các bản tin với Hộp thư đến của Google. Tôi thiết lập gói tin nhắn cho thẻ `Hàng loạt / Hết hạn / Hàng ngày 'và bộ lọc đảm bảo chỉ có bản tin ngày hôm nay. Sau đó, cho dù tôi có đọc nó vào một ngày nhất định hay không, mới nhất là ở đó. Nó giống như hack Hộp thư đến vào một trình đọc RSS. Tôi làm điều tương tự cho các bản tin / thư hàng loạt được phát hành hàng tuần hoặc hàng tháng. Nói chung, tôi hết hạn khi tuổi của họ loại bỏ sự liên quan của họ.


1

Hãy thử tập lệnh mới hơn và hiệu quả hơn tại https://github.com/omkar9999/GmailCleaner

Tập lệnh sẽ xóa hàng ngàn email rác cũ trong vòng vài phút nếu được lên lịch để chạy mỗi phút và sẽ không vượt qua Hạn ngạch hàng ngày của Google.


0

Không, không có, những gì tôi muốn đề xuất là một cái gì đó giống như Al Everett đề cập đến câu hỏi bạn liên kết đến. Bạn có thể có các liên kết khác nhau cho các nhiệm vụ khác nhau mà bạn muốn thực hiện.

Sẽ rất tốt nếu có một cách để xóa email cũ hơn một vài ngày tự động nhưng ngay bây giờ bạn không thể.


0

Bạn cũng có thể sử dụng tập lệnh google này. Ưu điểm là bạn cũng có thể cung cấp nhãn lồng nhau.

Tập lệnh Google Apps; xóa email Gmail

Để chạy, tạo một bản sao của tập lệnh, thêm giá trị cho nhãn và "N" ngày, thực hiện Chạy-> Khởi tạo và sau đó Chạy-> Cài đặt.


Một câu trả lời tương tự cũng đã được đăng lên Lifehacker
WoJ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.