Как назначить метку сообщению в Google App Script

#javascript #google-apps-script

#javascript #google-apps-script

Вопрос:

Привет, я создаю скрипт, который будет искать почту в Gmail, и если затем присвоить ярлык искомым письмам, но я не уверен, как присвоить ярлык сообщениям, я могу создать ярлык, но не могу его присвоить.

Еще одна вещь, которую я хочу знать, правильно ли я использую функцию сна утилит at или нет.

     function addNaggingLabels() {
  var label = _getNaggingLabel();

  var start   = parseInt(UserProperties.getProperty("start"));
  var sheet   = SpreadsheetApp.getActiveSheet();
  var ss      = SpreadsheetApp.getActiveSpreadsheet()

  for (;;) {

  // Find all Gmail messages that have attachments
 var threads = GmailApp.search('in:inbox has:attachment larger:15M');

  if (threads.length == 0) {
    ss.toast("Processed "   start   " messages.", "Scanning Done", -1); 
    return;
  }

  for (var i=0; i<threads.length; i  ) {

    var messages = threads[i].getMessages();
    UserProperties.setProperty("start",   start);

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

      var size = getMessageSize(messages[m].getAttachments());

      if (size>15) {
        Logger.log("label: "   GmailApp.createLabel("FOO"));

      }
}
  }
  }
// Wait for a second to avoid hitting the system limit
  Utilities.sleep(1000);
  return Math.round(size*100/(1024*1024))/100;

}

    function getMessageSize(att) {
  var size = 0;
  for (var i=0; i<att.length; i  ) {
    //size  = att[i].getBytes().length;
    size  = att[i].getSize(); // Better and faster than getBytes()
  }
}
  

Ответ №1:

Вы можете использовать метод addLabel, чтобы применить метку к потоку, а не к сообщению. Кроме того, поскольку вы используете более крупный оператор поиска, нет необходимости перепроверять размер вложения позже.

 var threads = GmailApp.search('in:inbox has:attachment larger:15M');
var label = GmailApp.getUserLabelByName("label name goes here");

for (var t in threads) {
  threads[t].addLabel(label);
}
  

Комментарии:

1. Привет, Амит, мне удалось создать метку, но я не могу назначить их письмам размером более 15 м, например:- if (size> 15) { ‘Что я сюда поместил’ }

2. Смотрите мой ответ. Вам нужно вызвать метод addLabel в потоке Gmail, а не в сообщении.

3. @AmitAgarwal Есть ли возможность добавить или получить метку из сообщения, а не из потока?