Đánh dấu Gmail là đã đọc khi lưu trữ từ thông báo


10

Phiên bản mới nhất của ứng dụng Gmail là tính năng tuyệt vời mà bạn có thể chọn giữa lưu trữ hoặc trả lời e-mail trực tiếp từ thông báo.

Vấn đề của tôi là, nếu bạn lưu trữ nó từ thông báo, nó vẫn chưa được đọc (thay vì được đánh dấu là đã đọc). Có cách nào để có được xung quanh đó?

Tôi muốn mọi thư điện tử được lưu trữ trực tiếp từ thông báo sẽ được tự động đánh dấu là đã đọc.


1
Tôi không tin rằng hiện tại có thể. Hành động duy nhất bạn có thể thay đổi nó là xóa thay vì lưu trữ.
ale

@AlEverett Tôi đã hy vọng có thể có cách để làm điều đó với một ứng dụng thay thế hoặc ít nhất là một tập lệnh google. = /
Malabarba

Câu trả lời:


5

Bạn đã nói Google Script?

Đánh dấu Gmail đã đọc bằng Apps Script

Ý tưởng đằng sau tập lệnh này là đánh dấu là đã đọc bất kỳ thư nào không có trong Hộp thư đến (nghĩa là đã được lưu trữ).

  1. Đi đến script.google.com để bắt đầu một tập lệnh.
  2. Chọn để tạo một tập lệnh cho Gmail trong cửa sổ bật lên nhỏ.
  3. Xóa tất cả các mã mẫu nó cung cấp cho bạn.
  4. Thay thế nó bằng cái này (được viết bằng tham chiếu API ):

    hàm markArchivingAsRead () {
       chủ đề var = GmailApp.search ('nhãn: chưa đọc -label: inbox');
       GmailApp.markThreadsRead (chủ đề);
     };
  5. Lưu dự án với File> Save.

  6. Thêm phiên bản mới bằng Tệp> Quản lý Phiên bản và nhập "phiên bản ban đầu" sau đó gửi.
  7. Thực hiện chạy thử bằng Run> markArchivingAsRead và chắc chắn và ủy quyền cho ứng dụng khi nó yêu cầu bạn.
  8. Thêm một kích hoạt mới bằng cách sử dụng Resource> Triggers của Dự án hiện tại và chọn chạy chức năng trên mỗi phút.
  9. Lưu tập lệnh một lần nữa và thoát.

Tôi không biết rằng cần phải chạy nó mỗi phút , nhưng miễn là bạn chạy nó thường xuyên.

Đây không phải là câu trả lời trực tiếp cho vấn đề của bạn và nếu bạn có lý do để có những tin nhắn chưa đọc mà không có trong hộp thư đến thì điều này sẽ không hiệu quả với bạn.


Tôi có một số bộ lọc có thể lưu trữ trực tiếp các email chưa đọc và tôi muốn giữ những thư đó chưa đọc, nhưng đó là một khởi đầu thực sự tốt. Tôi có thể có một tập lệnh thứ hai đánh dấu bằng một nhãn cụ thể các luồng chưa đọc trong hộp thư đến của tôi. Và sau đó, tập lệnh đầu tiên này sẽ chỉ đánh dấu các tin nhắn được lưu trữ bằng nhãn này (thay vì tất cả các tin nhắn được lưu trữ).
Malabarba

2
Điều này cũng có một lỗi nhỏ. Nếu bạn lưu trữ một tin nhắn và một tin nhắn mới đến trên cùng một luồng trước khi tập lệnh có cơ hội chạy, thì cả hai sẽ được đánh dấu là đã đọc khi tập lệnh chạy. Đó là vì GmailApp.search trả về toàn bộ chuỗi và không quan tâm nếu một trong các thư trong chuỗi có trong hộp thư đến.
Malabarba

3

Tôi đã quản lý để làm cho nó hoạt động với Google Script sau đây .
Nó cũng giống như câu trả lời của @ AlEverett, nhưng nó không bao giờ đánh dấu là các tin nhắn đã đọc hoàn toàn bỏ qua hộp thư đến (từ bộ lọc hoặc nội dung nào đó).

Thật không may, nó sẽ không hoạt động cho bạn nếu bạn có xu hướng lưu trữ tin nhắn rất nhanh (trung bình ít hơn 30 giây).

/** Mark as read archived threads which were previously in the inbox (determined by the label "i"). **/
function cleanAndroidArchived(){
  markArchivedAsRead();
  labelInboxAsI();
}

function markArchivedAsRead() {
  var threads = GmailApp.search('in:unread label:i -label:inbox');
  var label = GmailApp.createLabel("i");
  label.removeFromThreads(threads);
  GmailApp.markThreadsRead(threads);
};

function labelInboxAsI() {
  var threads = GmailApp.search('in:unread label:inbox');
  var label = GmailApp.createLabel("i");
  label.addToThreads(threads);
};

2

Tôi tin rằng tôi đã giải quyết vấn đề với trường hợp của @ BruceConnor, cần đợi kịch bản thực thi trước khi nó có thể hoạt động.

  1. Tôi đã tạo một bộ lọc mới tìm mọi thứ trong hộp thư đến
  2. gán nhãn "i" (được tạo bởi phiên bản của anh ấy)

Gmail phàn nàn rằng bộ lọc sẽ không bao giờ khớp với bất cứ thứ gì, nhưng trong trường hợp này, nó phù hợp với tất cả các thư đến trong hộp thư đến.

Kết quả là tất cả các tin nhắn mới đến sẽ tự động được "ghi nhớ" bằng thẻ này, sau đó khi bạn nhấn lưu trữ, tập lệnh có thể so sánh danh sách hộp thư đến với nhãn "i" và biết những thư nào vừa được lưu trữ, sau đó chỉ đánh dấu chúng là " đọc". Bạn không phải chờ để lưu trữ, vì tất cả các tin nhắn được gán vào hàng đợi "i" lưu trữ.

Phần thưởng: Tôi cũng đặt nhãn "i" mới thành "Ẩn trong danh sách tin nhắn" và "Ẩn trong danh sách nhãn", vì vậy nó không bao giờ hiển thị cả. (Nhấp vào mũi tên nhỏ bên cạnh nhãn "i" mới và chọn các tùy chọn này.)


1

Câu trả lời của @ al-e hoạt động, nhưng nó có một lỗi nhỏ được đề cập trong các bình luận. Tôi đã tạo một phiên bản khác của tập lệnh để khắc phục lỗi này và đã sử dụng thành công trong một vài năm. Đây là kịch bản mà tôi đang sử dụng:

function markArchivedAsRead() {
  var threads = GmailApp.search('label:unread -label:inbox');
  for (var i=0; i<threads.length; i++)
  {
    var messages = threads[i].getMessages();
    var markUnread = 1;
    for (var j=0; j<messages.length; j++)
    {
      if (messages[j].isInInbox())
        markUnread = 0;
    }
    if (markUnread)
      threads[i].markRead();
  }
};
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.