Answers:
您是否说过Google Script?
该脚本背后的思想是将收件箱中未存在的任何邮件标记为已读(即已存档)。
- 前往script.google.com来启动脚本。
- 选择在小弹出窗口中为Gmail创建脚本。
- 删除它给您的所有示例代码。
替换为它(使用API参考编写):
函数markArchivedAsRead(){ var thread = GmailApp.search('label:unread -label:inbox'); GmailApp.markThreadsRead(threads); };使用文件>保存保存项目。
- 使用文件>管理版本添加新版本,然后输入“初始版本”,然后提交。
- 使用“运行”>“ markArchivedAsRead”进行测试运行,并确保在应用程序要求您时对其进行授权。
- 使用资源>当前项目的触发器添加一个新触发器,并选择每分钟运行一次以上功能。
- 再次保存脚本并退出。
我不知道有必要每分钟运行一次,但是只要您定期运行它即可。
这不是您问题的直接答案,并且如果您有理由收到收件箱中没有的未读邮件,则对您不起作用。
我设法使其与以下Google脚本一起使用。
它与@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);
};
我相信我已经解决了@BruceConnor的问题,需要等待脚本执行后才能工作。
Gmail抱怨过滤器永远不会匹配任何内容,但是在这种情况下,它确实匹配了收件箱中所有传入的邮件。
结果是,所有新收到的邮件都会被该标签自动“存储”,然后在您单击“存档”时,脚本可以将收件箱列表与“ i”标签进行比较,知道哪些邮件刚刚被存档,然后仅将这些邮件标记为“读”。您不必等待存档,因为所有消息都已分配到存档“ i”队列中。
奖励:我还将新的“ i”标签设置为“隐藏在消息列表中”和“隐藏在标签列表中”,因此它根本不会显示。(单击新的“ i”标签旁边的小箭头,然后选择这些选项。)
@ 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();
}
};