首页 > 解决方案 > 一次在 Gmail 线程中搜索多个未读标签的脚本

问题描述

我有以下标签结构

+------------+------------+---------------+
|   label    | sub-label  | sub-sub-label |
+------------+------------+---------------+
| 01-fruit   |            |               |
|            | 01-apples  |               |
|            |            | green         |
|            |            | red           |
|            | 02-oranges |               |
|            |            | red           |
|            |            | orange        |
| 02-veggies |            |               |
|            | 01-peppers |               |
|            |            | green         |
|            |            | red           |
+------------+------------+---------------+

使用的脚本是:

function mail2Sheets() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('newRec'); //get the sheet
  var freshLabel = GmailApp.getUserLabelByName("00-fresh"); // in the end, add this label
  const query = "label:unread" + " label:01-fruit"; 
  var foundThreads = GmailApp.search(query);
  var newReceipts = [];
  for (var i = 0; i < foundThreads.length; i++) {

  +++++++ SOME CODE HERE +++++++

    }
  }
  if(!foundThreads.length) return; //  if there are no unread ones, do nothing.
  sheet.getRange(SpreadsheetApp.getActiveSheet().getLastRow()+1,2,newReceipts.length,newReceipts[0].length).setValues(newReceipts); //write to sheet
  GmailApp.markThreadsRead(foundThreads); // mark "foundThreads" as read
  freshLabel.addToThreads(foundThreads); // add label "00-fresh" to "foundThreads"
  GmailApp.refreshThreads(foundThreads); // refresh "foundThreads" for changes to show
}

我可以成功搜索单个标签,例如:const query = "label:unread" + " label:01-fruit";

还。
虽然我从来没有完成过GmailApp.refreshThreads(foundThreads);。 相反,它显示Execution
Status Running

在此处输入图像描述

回顾

如何同时对多个标签进行查询搜索,例如
"label:unread" + " label:00-fruit/01-apples/red"
AND
"label:unread" + " label:02-veggies/01-peppers/red"

还。如何Status Running解决问题?

标签: google-apps-scriptgoogle-sheetsgmailgmail-api

解决方案


  • " "这是一个空格用作AND运算符。
  • OR并且{}可以用作OR运算符。

使用上述运算符,可以实现您的目标。

  • 当您想用label:unread和搜索邮件时label:00-fruit/01-apples/red,请使用如下搜索查询。

    标签:未读 标签:00-水果/01-苹果/红色

  • 当您想用label:unreadlabel:00-fruit/01-apples/red或搜索邮件时label:02-veggies/01-peppers/red,请使用如下搜索查询。

      label:unread (label:00-fruit/01-apples/red OR label:02-veggies/01-peppers/red)
    
  • 或者

      label:unread {label:00-fruit/01-apples/red label:02-veggies/01-peppers/red}
    

参考:


推荐阅读