Не удается найти функцию removeLabel в объекте Gmail Thread - PullRequest
0 голосов
/ 19 мая 2019

Я получаю уведомления по электронной почте о назначениях врачей и т. Д., Но мне нужно только быть в курсе последних событий.Я пытаюсь создать скрипт Google для архивации старых напоминаний, когда получаю новое напоминание от того же провайдера.

Основной способ работы скрипта - это фильтр gmail, который добавляет тег к любым новым напоминаниям, которыевходите, который затем использует скрипт, чтобы увидеть, существует ли существующее напоминание от этого провайдера (посредством проверки другого тега), затем действует соответствующим образом (изменяя теги и архивируя сообщения)

Однако я продолжаю получать сообщение об ошибке«Не удается найти функцию removeLabel в потоке Gmail объекта» в строке 34, хотя все выглядит правильно

  //get the threads with the new message label (new threads that need to be checked by the function)
  var newThreadsLabel = GmailApp.getUserLabelByName("@Automate/Keep Only One/New Message")
  var newThreads = newThreadsLabel.getThreads(0, 400); 

  //get the current threads (messages that were previously defined as the "current reminder")
  var currentThreadsLabel = GmailApp.getUserLabelByName("@Automate/Keep Only One/Current Reminder")
  var currentThreads = currentThreadsLabel.getThreads(0, 400); 

  //loop through the new threads
  for (var i = 0; i < newThreads.length; i++){
    var newThread = newThreads[i];
    //get the  subject for the newThread
    var subject = newThread.getFirstMessageSubject();

    //loop through the "current reminder" threads to see if they are now old (they have the same subject as the "new message"), archive them if they are, then label the "new thread" as the "current thread"
    for (var i = 0; i < currentThreads.length; i++){
      var currentThread = currentThreads[i];

      //check if any of the "current threads" have the same subject as the "new thread", and is not the "new thread" itself
      if(currentThread.getFirstMessageSubject() == subject){

        //Now, we need to make sure that we don't archive the current thead itself (in some cases gmail may have bundled them into the same thread)       
        //Get the labels on the "current thread"
        var labels = currentThreads[i].getLabels();

        //check to see if the labels on the "current thread" include the newThreadsLabel      
        if(labels.indexOf(newThreadsLabel) !== -1){

          //if the "new thread" and "current thread" are the same dont do anything because we don't need to archive it

        }else{
          //if they are not the same, archive the currentThread and remove the currentThreadsLabel
          currentThread.removelabel(currentThreadsLabel);
          currentThread.moveToArchive();
        }     
      }
    }
   //remove the new thread label, then add the current thread label (new thread becomes the "current reminder" thread)
   newThread.removeLabel(newThreadsLabel);
   newThread.addLabel(currentThreadsLabel);  
  }
}

Я дважды и трижды проверил документацию, и это, кажется, правильный способ использования removeLabel.Почему я получаю эту ошибку?

1 Ответ

3 голосов
/ 19 мая 2019

Вам не хватает прописной буквы "L"?

Я считаю, что это: else{ //if they are not the same, archive the currentThread and remove the currentThreadsLabel currentThread.removelabel(currentThreadsLabel); currentThread.moveToArchive();

должно быть так: else{ //if they are not the same, archive the currentThread and remove the currentThreadsLabel currentThread.removeLabel(currentThreadsLabel); currentThread.moveToArchive();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...