这是我编写的一个简洁的JavaScript代码,用于从我的Gmail获取所有电子邮件,并将发件人姓名列表放在Google电子表格中。
function doGet()
{
var myspreadsheet = SpreadsheetApp.openById("0Atg1TJnn4dFdGbjNGSrMGJRdGc");
var mysheet = myspreadsheet.getSheets()[0];
var threads = GmailApp.getInboxThreads();
var messages = GmailApp.getMessagesForThreads(threads);
var froms = [];
for(var i = 0; i < threads.length; i++)
{
froms.push([messages[i][0].getFrom(),i]);
}
mysheet.getRange(1,1,threads.length,2).setValues(froms);
}
效果很好,但有2个问题
GetInboxThreads方法只会尝试前500封电子邮件。问题是有人知道如何获得超过500?如何获得最后500个而不是前500个电子邮件?
这有点慢,虽然我付出了很大的努力来提高效率,有人可以建议如何从电子邮件中检索发件人姓名,并快速将这些发件人姓名列表放在电子表格中吗? / p>
答案 0 :(得分:10)
以这种方式看起来像10secs / 100条消息。在GAS中想不出更快的东西。
function getMail(){
var inc = 100;
var start = 0;
do {
var now = new Date();
var thread = GmailApp.getInboxThreads(start, inc);
start += inc;
var messages = GmailApp.getMessagesForThreads(thread);
Logger.log("# threads"+thread.length+"# of messages" + messages.length+" time :"+(new Date()-now));
} while (thread.length == inc);
}