Google apps script 如何使用谷歌应用程序脚本查询未被丢弃的电子邮件?

Google apps script 如何使用谷歌应用程序脚本查询未被丢弃的电子邮件?,google-apps-script,gmail-api,Google Apps Script,Gmail Api,我正在尝试为Gmail创建一个脚本,这样不仅不会收到垃圾电子邮件,而且我也会收到垃圾电子邮件 为什么? 来自gmailtodrive的函数{ var query=in:inbox-in:trash有:附件; var threads=GmailApp.searchquery; threads.forEacht=>{ const messages=t.getMessages messages.forEachm=>{ console.logm.isInTrash:,m.isInTrash/根据评论中提

我正在尝试为Gmail创建一个脚本,这样不仅不会收到垃圾电子邮件,而且我也会收到垃圾电子邮件

为什么?

来自gmailtodrive的函数{ var query=in:inbox-in:trash有:附件; var threads=GmailApp.searchquery; threads.forEacht=>{ const messages=t.getMessages messages.forEachm=>{
console.logm.isInTrash:,m.isInTrash/根据评论中提到的Marios,您希望有-in:trash。但是由于您添加了in:inbox和has:attachment,它也添加了那些符合这些标准的电子邮件

如果只想查找包含附件且不在垃圾箱中的邮件,请使用:

代码: 注: 您还可以在查询条件/条件之间添加或,使其显式。请相应地使用它们。 编辑: 如果所有其他方法都失败了,您可能只需要有一个条件来检查消息是否不在垃圾箱中。这不是一个好的答案,应该被视为最后手段,但它仍然可以解决您的问题。 代码: 最新答复: 和都支持isInTrash方法。在您的解决方案中,您检查的是垃圾消息,而不是垃圾线程

如果要检查线程是否已损坏,则应改为对线程应用isInTrash方法:

可选解决方案

获取所有线程并将其从线程中排除:


try only query=-in:trashI尝试过。这是一样的,一些m.isInTrash是真的,一些是假的。这让我发疯了!如果我在Gmail中使用这个查询,它会工作的!在脚本中没有。为什么?我在这个查询中得到了相同的结果:label:test和-in:trash和has:attachment。我想有些地方错了……我更新了我的答案。你应该检查一下是否有垃圾ds,而不是垃圾短信。谢谢你的回答。我试过了。这是一样的,有些m.isInTrash是真的,有些是假的。这让我发疯了!如果我在Gmail中使用这个查询,它会工作的!在脚本中没有。为什么?我在这个查询中得到了相同的结果:label:test-and-in:trash和has:attachment。我想有些地方出了问题……我现在不太确定是不是w为什么它会这样对你。它在我身上就像预期的那样工作。你能在帖子中展示你的整个脚本吗?是否正在创建一个条件,让你检查!m.isInTrash//在没有垃圾的情况下做一些事情不适用?如果所有其他方法都失败了,也许这将是你的最后手段。我不明白为什么它对你有效,对我无效。它发现一些线程具有这样的功能我扔掉了一些邮件,还有一些不太好的解决方法。我实际上能够重新创建一次问题,但当我删除了垃圾箱下线程上的主电子邮件时,我似乎不能再这样做了。我的预感是,被删除的线程邮件上的主电子邮件被视为垃圾,但随后的线程不是。来自线程邮件的主电子邮件w已被删除。但它后面的线程被视为非垃圾。将其视为非垃圾,同时也将其视为垃圾。它确认了在测试时返回真isInTrash的邮件数it@NaziA谢谢你的支持和反馈。我想我确实理解问题所在,但当然OP需要验证。Appa你可以随意丢弃消息和线程。OP正在检查被丢弃的消息,但他应该检查被丢弃的线程。谢谢你的回答,但现在清理线程是[]空的。我在收件箱中有一些邮件,在垃圾箱中有一些。线程在里面。所以一个线程可以被丢弃,但也可以在收件箱中!真是一团糟!!!!你试过代码的第一部分了吗?@user15308346我更新了变通方法,但是如果我的答案中的第一个脚本有意义并且回答了你的问题,那么变通方法就没有意义了。
function fromGmailToDrive() {
    var query = "-in:trash has:attachment";
    var threads = GmailApp.search(query);

    threads.forEach((t) => {
        const messages = t.getMessages()
        messages.forEach((m) => {
            console.log("m.isInTrash():", m.isInTrash()) 
        })
    })
}
if (!m.isInTrash())
  // do something when message not in trash
function fromGmailToDrive() {
    var query = "-in:trash has:attachment";
    var threads = GmailApp.search(query);

    threads.forEach((t) => {
            console.log("m.isInTrash():", t.isInTrash());
    })
}
function fromGmailToDrive() {
    var query = "-in:trash has:attachment";
    var threads = GmailApp.search(query);
    var trashThreadsIDs = GmailApp.getTrashThreads().map(t=>t.getId());
    var clean_threads = threads.filter(t=>!trashThreadsIDs.includes(t.getId()));

    clean_threads.forEach((t) => {
        const messages = t.getMessages()
        messages.forEach((m) => {
            console.log("m.isInTrash():", m.isInTrash()) //<- some are true, why?
        })
    })
}