ทำเครื่องหมาย Gmail ว่าอ่านแล้วเมื่อเก็บถาวรจากการแจ้งเตือน


10

แอป Gmail เวอร์ชันล่าสุดเป็นคุณลักษณะที่ยอดเยี่ยมที่คุณสามารถเลือกระหว่างการเก็บถาวรหรือตอบกลับอีเมลโดยตรงจากการแจ้งเตือน

ปัญหาของฉันคือถ้าคุณเก็บถาวรจากการแจ้งเตือนก็ยังไม่ได้อ่าน (แทนที่จะถูกทำเครื่องหมายว่าอ่านแล้ว) จะมีวิธีอื่นไหม

ฉันต้องการอีเมลที่ถูกเก็บถาวรโดยตรงจากการแจ้งเตือนเพื่อทำเครื่องหมายว่าอ่านโดยอัตโนมัติ


1
ฉันไม่เชื่อว่าเป็นไปได้ในขณะนี้ การดำเนินการเดียวที่คุณสามารถเปลี่ยนเป็นคือลบแทนการเก็บถาวร
เบียร์

@AlEverett ฉันหวังว่าอาจมีวิธีที่จะทำกับแอพสำรองหรืออย่างน้อยสคริปต์ Google = /
Malabarba

คำตอบ:


5

คุณพูด Google Script ไหม

การทำเครื่องหมายว่าอ่าน Gmail ด้วย Apps Script แล้ว

แนวคิดเบื้องหลังสคริปต์นี้คือการทำเครื่องหมายว่าอ่านข้อความใด ๆ ที่ไม่ได้อยู่ในกล่องจดหมาย (เช่นถูกเก็บถาวร)

  1. มุ่งหน้าไปที่script.google.comเพื่อเริ่มสคริปต์
  2. เลือกที่จะสร้างสคริปต์สำหรับ Gmail ในป๊อปอัปเล็ก ๆ น้อย ๆ
  3. ลบรหัสตัวอย่างทั้งหมดที่คุณให้ไว้
  4. แทนที่ด้วยสิ่งนี้ (เขียนโดยใช้การอ้างอิง API ):

    ฟังก์ชัน markArchivedAsRead () {
       var threads = GmailApp.search ('label: unread -label: inbox');
       GmailApp.markThreadsRead (หัวข้อ);
     };
  5. บันทึกโครงการด้วยไฟล์> บันทึก

  6. เพิ่มเวอร์ชันใหม่โดยใช้ไฟล์> จัดการเวอร์ชันและป้อน "เวอร์ชันเริ่มต้น" จากนั้นส่ง
  7. ทำการทดสอบการทำงานโดยใช้ Run> markArchivedAsRead และให้แน่ใจและอนุญาตแอพเมื่อขอให้คุณ
  8. เพิ่มทริกเกอร์ใหม่โดยใช้ทรัพยากร> ทริกเกอร์ของโครงการปัจจุบันและเลือกที่จะเรียกใช้ฟังก์ชันข้างต้นทุกนาที
  9. บันทึกสคริปต์อีกครั้งและออก

ฉันไม่ทราบว่าจำเป็นต้องเรียกใช้ทุกนาทีแต่ตราบใดที่คุณใช้งานเป็นประจำ

นี่ไม่ใช่คำตอบสำหรับปัญหาของคุณโดยตรงและหากคุณมีเหตุผลที่จะมีข้อความที่ยังไม่ได้อ่านที่ไม่ได้อยู่ในกล่องจดหมายของคุณจะไม่สามารถใช้งานได้


ฉันมีตัวกรองบางตัวซึ่งอาจเก็บอีเมลที่ยังไม่ได้อ่านโดยตรงและฉันต้องการเก็บอีเมลที่ยังไม่ได้อ่าน แต่นั่นเป็นการเริ่มต้นที่ดีจริงๆ ฉันสามารถมีสคริปต์ที่สองที่ทำเครื่องหมายด้วยหัวข้อเฉพาะที่ยังไม่ได้อ่านกระทู้ในกล่องจดหมายของฉัน จากนั้นสคริปต์แรกนี้จะทำเครื่องหมายเฉพาะข้อความที่เก็บถาวรด้วยป้ายกำกับนี้ (แทนที่จะเป็นข้อความที่เก็บถาวรทั้งหมด)
Malabarba

2
นี่เป็นข้อผิดพลาดเล็กน้อยเช่นกัน หากคุณเก็บถาวรข้อความและข้อความใหม่มาถึงในเธรดเดียวกันก่อนที่สคริปต์จะมีโอกาสเรียกใช้จากนั้นทั้งคู่จะได้รับการทำเครื่องหมายว่าอ่านแล้วเมื่อสคริปต์รัน นั่นเป็นเพราะ GmailApp.search ส่งคืนเธรดทั้งหมดและไม่สนใจว่าข้อความใดข้อความหนึ่งในเธรดอยู่ในกล่องจดหมาย
Malabarba

3

ฉันจัดการเพื่อให้งานมีดังต่อไปของ Google Script
มันเป็น almos เหมือนกับคำตอบของ @ AlEverett แต่ไม่เคยทำเครื่องหมายว่าเป็นข้อความอ่านที่ข้ามกล่องจดหมายทั้งหมด (จากตัวกรองหรือบางสิ่ง)

น่าเสียดายที่มันไม่ทำงานสำหรับคุณหากคุณมักจะเก็บข้อความอย่างรวดเร็ว (น้อยกว่า 30 วินาทีโดยเฉลี่ย)

/** 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

ฉันเชื่อว่าฉันแก้ไขปัญหาด้วยกรณีของ @ BruceConnor ต้องรอให้สคริปต์ดำเนินการก่อนจึงจะสามารถทำงานได้

  1. ฉันสร้างตัวกรองใหม่ที่มองหาสิ่งใดในกล่องจดหมาย
  2. กำหนดป้ายกำกับ "i" (ซึ่งสร้างโดยเวอร์ชันของเขา)

Gmail บ่นว่าตัวกรองจะไม่ตรงกับสิ่งใด แต่ในกรณีนี้มันจะตรงกับข้อความขาเข้าทั้งหมดที่อยู่ในกล่องจดหมาย

ผลลัพธ์คือข้อความทั้งหมดที่เข้ามาใหม่จะถูก "จดจำ" โดยแท็กนี้โดยอัตโนมัติเมื่อคุณกดที่เก็บถาวรสคริปต์จะสามารถเปรียบเทียบรายการกล่องจดหมายกับป้ายกำกับ "i" และรู้ว่าข้อความใดถูกเก็บถาวรแล้วทำเครื่องหมายว่าเป็น " อ่าน". คุณไม่ต้องรอที่จะเก็บถาวรเพราะข้อความทั้งหมดจะถูกกำหนดในคิว "i" ของการเก็บถาวร

โบนัส: ฉันยังตั้งป้ายกำกับ "i" ใหม่เป็น "ซ่อนในรายการข้อความ" และ "ซ่อนในรายการป้ายกำกับ" ดังนั้นจึงไม่เคยปรากฏขึ้นเลย (คลิกที่ลูกศรเล็ก ๆ ถัดจากป้าย "i" ใหม่และเลือกตัวเลือกเหล่านี้)


1

คำตอบของ @ al-e ใช้งานได้ แต่มีข้อผิดพลาดเล็กน้อยที่กล่าวถึงในความคิดเห็น ฉันได้สร้างสคริปต์เวอร์ชันอื่นที่สามารถแก้ไขข้อบกพร่องนี้และใช้มันเป็นผลสำเร็จเป็นเวลาสองสามปี นี่คือสคริปต์ที่ฉันใช้:

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();
  }
};
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.