当前位置: 首页 > 知识库问答 >
问题:

如何删除GMail标签-Google Apps脚本

蓟雪峰
2023-03-14

我想从每个放回收件箱的邮件中删除“Followup”标签。我尝试过几件事,但仍然没有成功。我希望有人能帮助我,或者给我指出正确的方向。有关职能是:

function moveToInbox(page) {
  GmailApp.moveThreadsToInbox(page);
//  GmailApp.markThreadsUnread(page);
//  GmailApp.starMessages(page)
  var label = GmailApp.getUserLabelByName("FollowUp");
  var firstThread = GmailApp.getInboxThreads(0,1)[0];
  var coupleOfMessages = firstThread.getMessages().slice(0, 10);
  GmailApp.starMessages(coupleOfMessages);
  label.removeFromThread(firstThread);
}

整个脚本是:

function getLabelName(i, labelSuffixString) {
  return "FollowUp/" + i + labelSuffixString;
}

function setup() {
  for (var i = 1; i <= 7; ++i) {
    GmailApp.createLabel(getLabelName(i, "days"));
    GmailApp.createLabel(getLabelName(i, "weeks"));
  }
  GmailApp.createLabel("FollowUp");
}

function moveToInbox(page) {
  GmailApp.moveThreadsToInbox(page);
//  GmailApp.markThreadsUnread(page);
//  GmailApp.starMessages(page)
  var label = GmailApp.getUserLabelByName("FollowUp");
  var firstThread = GmailApp.getInboxThreads(0,1)[0];
  var coupleOfMessages = firstThread.getMessages().slice(0, 10);
  GmailApp.starMessages(coupleOfMessages);
  label.removeFromThread(firstThread);
}

function cleanOldFollowUpLabels() {
  var searchString = "-label:inbox label:FollowUp";
  for (var i = 1; i <= 7; ++i) {
    searchString += " -label:" + getLabelName(i, "days");
    searchString += " -label:" + getLabelName(i, "weeks");
  }
  searchString = searchString.replace(RegExp("/", "g"), "-");
  Logger.log("cleanOldFollowUpLabels() Search String:");
  Logger.log(searchString);
  var followUpLabel = GmailApp.getUserLabelByName("FollowUp");  
  var page = null;
  // Get threads in "pages" of 100 at a time
  while(!page || page.length == 100) {
    page = GmailApp.search(searchString, 0, 100);
    Logger.log("found: " + page.length);
    if (page.length > 0)
      followUpLabel.removeFromThreads(page);   
  }
}

function update(labelSuffixString) {
  var oldLabel, newLabel, page;
  var followUpLabel = GmailApp.getUserLabelByName("FollowUp");
  for (var i = 1; i <= 7; ++i) {
    newLabel = oldLabel;
    oldLabel = GmailApp.getUserLabelByName(getLabelName(i, labelSuffixString));
    page = null;
    // Get threads in "pages" of 100 at a time
    while(!page || page.length == 100) {
      page = oldLabel.getThreads(0, 100);
      if (page.length > 0) {
        followUpLabel.addToThreads(page);
        if (newLabel) {
          // Move the threads into "today’s" label
          newLabel.addToThreads(page);
        } else {
          moveToInbox(page);
        }     
        // Move the threads out of "yesterday’s" label
        oldLabel.removeFromThreads(page);
        // Wait for a minute to prevent timeout errors
        Utilities.sleep(1000);
      }  
    }
  }
}

function dailyUpdate() {
  update("days");
}
function weeklyUpdate() {
  update("weeks");
}

共有1个答案

伏欣悦
2023-03-14

如果您想从所有线程中删除"FollowUp",您可以使用label.deleteLabel()。但是由于您只对从要恢复到收件箱的线程中删除该标签感兴趣,因此需要循环遍历它们。

function moveToInbox(threadArray) {
  GmailApp.moveThreadsToInbox(threadArray);
  var label = GmailApp.getUserLabelByName("FollowUp");
  for (var i=0; i< threadArray.length; i++) {
    threadArray[i].removeLabel(label);
  }
}
 类似资料:
  • Quickly removes tag, found by “Match Tag Pair” from current caret position, and adjusts indentation. 快速删除标签,并调整缩进。这里的标签是在插入符所在位置由 匹配标签 功能查找的标签。 <body> <div |class="wrapper"> <h1>Title</h1>

  • 问题内容: 我正在使用HTML Purifier(http://htmlpurifier.org/) 我只想删除标签。我不想删除内联格式或任何其他内容。 我该如何实现? 还有一件事,它还有其他方法可以从HTML删除脚本标签 问题答案: 因为这个问题是用正则表达式标记的,所以在这种情况下,我将用穷人的解决方案来回答: 但是,正则表达式不是用于解析HTML / XML的,即使您编写了一个 完美的 表达

  • Google发布了带有BottomNavigationView的新支持库v25 有什么方法可以去除物品标签吗?

  • 若要删除标签,在tag命令指定 -d选项执行。 $ git tag -d <tagname>

  • 问题内容: 是否可以使用BeautifulSoup从HTML中删除脚本标签及其所有内容,还是必须使用正则表达式或其他内容? 问题答案:

  • 我试图通过StringBuilder传递一个XML对象,以便与对象进行比较,以符合我的需要。 我想知道是否有一种很好的方法可以从整个字符串中删除特定的标记。下面我准备了一个例子: 原件: 期望的结果: 所以基本上,我想删除id、state和整个注释,并关闭ApprovalItem标记(或者只删除所有斜杠)。 有什么想法吗?提前感谢:) 乔纳斯