我想从我的帐户Google Apps for Work收到所有电子邮件,并使用列ID(A列)和主题(B列)填写Google表格。
我是使用Google Apps脚本完成的,但是对于限制,我只能检索500个寄存器。我无法得到更多。
是否可以获取所有电子邮件并将其值放入Google表格?
更新
function getMail(){
var myspreadsheet = SpreadsheetApp.openById('xxxxxxx');
var mysheet = myspreadsheet.getSheets()[0];
var start = 0;
var max = 500;
var count =0;
var row = mysheet.getLastRow()+1
while(count < 7)
{
var threads = GmailApp.getInboxThreads(start , max);
var messages = GmailApp.getMessagesForThreads(threads);
var froms = [];
messages.get
for(var i = 0; i < threads.length; i++)
{
froms.push([messages[i][0].getId(),messages[i][0].getSubject()]);
}
mysheet.getRange(mysheet.getLastRow()+1,1,threads.length,2).setValues(froms);
start = start + 501;
count++;
}
}
问候,
答案 0 :(得分:1)
这是一个解决您的用例的解决方案。
请注意,仍然存在一些不能超越的限制,您可以阅读更多相关信息here。例如,当所有线程的大小太大而系统无法处理时,getInboxThreads()
将失败。这很可能是您的解决方案中发生的情况。
相反,尝试使用getInboxThreads(start, max)
这将检索一系列收件箱线程而不管标签。因此,假设您有500多封电子邮件,代码现在看起来应该是这样的。它不优雅,但它的工作原理。
function getMail(){
var myspreadsheet = SpreadsheetApp.openById('xxxxxxxxxxxxxxxxxxxxxx');
var mysheet = myspreadsheet.getSheets()[0];
var start = 0;
var max = 99;
var count =0;
var row = mysheet.getLastRow()+1
while(count < 7)
{
var threads = GmailApp.getInboxThreads(start , max);
var messages = GmailApp.getMessagesForThreads(threads);
var froms = [];
messages.get
for(var i = 0; i < threads.length; i++)
{
froms.push([messages[i][0].getId(),messages[i][0].getSubject()]);
}
mysheet.getRange(mysheet.getLastRow()+1,1,threads.length,2).setValues(froms);
start = start + 100;
count++;
}
}
提醒:脚本运行时不能超过六分钟,如果是这样,脚本将抛出异常。
希望这会有所帮助,祝你好运!