Я возился с 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. Любые идеи? Огромное спасибо.