google-apps-script - 即使在 Apps Script 取消星标后,Web Gmail 仍将邮件显示为已加星标

标签 google-apps-script gmail

好的,我认为网络 Gmail 很糟糕。我运行一个 Google 应用程序脚本,该脚本将我的“待办事项”标签部分添加到我手动加星标的任何线程中,然后将其归档并取消星标。下面是一个片段。我很感激任何帮助。

运行脚本后,线程获得标签并取消星标,除了网络 Gmail 中线程/消息旁边的星形图标仍显示为选中状态。如果我转到已加星标的消息标签/文件夹,则不会显示任何内容。如果我立即重新运行脚本,它不会找到任何已加星标的线程。这似乎表明脚本工作正常。问题似乎是网络 Gmail 仍然希望将其显示为已加星标,即使它不是。 Gmail Android 应用程序不会显示应用于线程的星标。图片更值钱...

脚本运行后我的收件箱是什么样子的。请注意星号:
What it looks like after the script runs

但没有加星标的消息:
Yet no Starred messages

function addStarred2ToDo() {
  var threads = GmailApp.search('is:starred');
  for (var h in threads) {
    var messages = threads[h].getMessages();
    for (var i in messages) {
      if (messages[i].isStarred()) {
        messages[i].unstar();
      }
    }
  }
}

编辑:
我也试过这个,但都没有产生预期的结果。
function thisOne() {
  var threads = GmailApp.search('is:starred');
  for (var h in threads) {
    var messages = threads[h].getMessages();
    for (var i in messages) {
      if (messages[i].isStarred()) {
        messages[i].unstar().refresh();
      }
    }
  }
}

function andThisOne() {
  var threads = GmailApp.search('is:starred');
  var toUnstar = [];
  threads.forEach(function (thread) {
    thread.getMessages().forEach(function (message) {
      if (message.isStarred()) {
        toUnstar.push(message);
      }
    });
  });
  GmailApp.unstarMessages(toUnstar);
}

最佳答案

如果您刷新 gmail 并将鼠标悬停在星星上,您将看到弹出窗口显示它不是已盯着看。此外,当您从 gmail 中选择星标时,这似乎是一个问题,因为当我的脚本取消星标时,由我的过滤器设置的星标可以正常工作。

关于google-apps-script - 即使在 Apps Script 取消星标后,Web Gmail 仍将邮件显示为已加星标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49540711/

相关文章:

google-apps-script - 将脚本插入多个Google Spreadsheets

google-apps-script - Google 文档中的标题部分

css - gmail 邮件中的绝对定位

java - 如何在以下代码中创建电子邮件和密码的运行时条目?

java - 使用 IMAP(javamail API)从 gmail 访问电子邮件

google-apps-script - SUMIF 的 Google Apps 脚本替代方案

google-apps-script - 使用脚本将谷歌电子表格列从一个电子表格复制到另一个电子表格

javascript - 如何将 React 应用程序作为 Gmail 插件运行?

java - 在 Heroku 中使用 Spring Boot 应用程序发送电子邮件

Python - imaplib - 查看发送给特定发件人的消息