Пакетные операции GmailApp класса сценариев Google Apps?

Я возился с GAS уже месяц или около того, и я достаточно хорошо разобрался с использованием пакетных операций для чтения/записи в/из электронных таблиц (, например. getValues ​​(), setValues ​​()). Однако в настоящее время я пишу скрипт, который извлекает значительный объем данных из Gmail с помощью класса GmailApp, мой код работает очень медленно (и даже истекает время ожидания ), и я не могу понять, как использовать пакетные операции для того, что я пытаюсь сделать. Вот мой код на данный момент (с измененным адресом электронной почты и именем):

 function fetchEmails(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var threads = GmailApp.search('in: label:searchedLabel');
  var messages = new Array();

  function Email(message){
  this.date = new Date(message.getDate());
  this.body = message.getBody();
  }

  for(var i=0;i<threads.length;i++){
    for(var j=0;j<threads[i].getMessageCount();j++){
      if(threads[i].getMessages()[j].getFrom()=="firstName lastName <email@domain.com>"){
       var message = new Email(threads[i].getMessages()[j]);
       messages.push(message);
      }
    }
  }  
}

Как вы можете видеть, я запрашиваю свою электронную почту для всех потоков с данным ярлыком, создание конструктора объекта для пользовательского объекта электронной почты (, который будет иметь тело и дату электронной почты в качестве свойств ). Затем я просматриваю каждую ветку, и когда данное электронное письмо совпадает с отправителем, которого я ищу,Я создаю экземпляр объекта электронной почты для этого электронного письма и помещаю этот объект электронной почты в массив. Цель состоит в том, чтобы в конце концов у меня был массив объектов электронной почты от нужного мне отправителя. Однако, как вы, наверное, заметили, код слишком часто вызывает API Google, но я не могу понять пакетные операции для взаимодействия с Gmail. Любые идеи? Огромное спасибо.

5
задан Rubén 16 July 2018 в 14:09
поделиться