我已经在 GAS 上闲逛了一个月左右,而且我已经相当熟悉使用批处理操作来读/写电子表格(例如 getValues()、setValues())。但是,我目前正在编写一个脚本,该脚本使用类 GmailApp 从 Gmail 中提取大量数据,我的代码运行非常缓慢(甚至超时),我似乎无法弄清楚如何使用批处理操作对于我正在尝试做的事情。到目前为止,这是我的代码(更改了电子邮件地址和名称):
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);
}
}
}
}
如您所见,我正在使用给定标签查询我的电子邮件以查找所有线程,为自定义电子邮件对象(它将具有电子邮件的正文和日期作为属性)创建一个对象构造函数。然后我遍历每个线程,当给定的电子邮件与我正在寻找的发件人匹配时,我为该电子邮件创建一个 Email 对象的实例,并将该 Email 对象放入一个数组中。目标是最终我将拥有一组电子邮件对象,这些对象都来自我想要的发件人。但是,您可能已经注意到代码调用 Google 的 API 的方式过于频繁,但我似乎无法弄清楚与 Gmail 交互的批处理操作。有任何想法吗?非常感谢。