Gmail 脚本 - 标签添加和删除标签

Gmail Script - Labels Adding and Removing Labels

我快要完成我想做的事情了,但是有几个问题。

  1. 我的 addLabel 和 removeLabel 命令正在影响我的所有标签,而不仅仅是我试图通过识别特定主题行来定位的标签。我如何才能将此更改定位为我想要的主题行?
  2. 不知何故,我的 Process1 函数比它应该识别的电子邮件数量多 运行 倍(即,如果有两封“已标记”电子邮件,它将在我的电子表格中生成三个条目)

如有任何帮助或对此进行清理,我们将不胜感激!

谢谢,

function getemails() {

var label = GmailApp.getUserLabelByName("Flagged");
var Nlabel = GmailApp.getUserLabelByName("Logged");
 var threads = label.getThreads();
     for (var i = 0; i < threads.length; i++) { 

 var messages=threads[i].getMessages();  

     for (var j = 0; j < messages.length; j++) {

   var message=messages[j];
   var subject = message.getSubject();
       if(subject=="test4")
         
   threads[i].removeLabel(label);
   threads[i].addLabel(Nlabel);
   
   process1(message);
 }
 }

   function process1(message) {
     
 var body =message.getPlainBody();
 var label = GmailApp.getUserLabelByName("Flagged");
 var id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
 var ss = SpreadsheetApp.openById([id]);
 var sheet = ss.getActiveSheet();
 sheet.appendRow([body]);

}  
    
  }

正如@Cooper 所说。我不相信您的条件包含您需要的功能。检查您的第 14 行:

if (subject == "test4")

您应该在 if 条件后使用大括号“{”和“}”,如下面的文档 I link 所述,以包含您希望程序执行的任何指令 只有满足条件才执行


参考: