我试过在这里搜索这个但是找不到我的解决方案。 我有以下脚本:
function getMessagesWithLabel() {
var destArray = new Array();
var threads = GmailApp.getUserLabelByName('1001').getThreads(0,1);
for(var n in threads){
var msg = threads[n].getMessages();
var destArrayRow = new Array();
destArrayRow.push('Record');
for(var m in msg){
destArrayRow.push(msg[m].getPlainBody());
}
destArray.push(destArrayRow);
}
Logger.log(destArray);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
if(ss.getLastRow()==0){sh.getRange(1,1).setValue('getMessagesWithLabel() RESULTS')};
sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray)
var sheet = ss.getSheets()[0];
// Rows start at "1" - this will delete the first row
sheet.deleteRow(1);
}
这样做会导入最后一封标有“1001”的电子邮件 我有大约40个标签的相同脚本。 我试图每分钟触发一次,但我得到了那个错误。 我想知道的是,是否有办法在一个请求中组合所有“GmailApp.getUserLabelByName”请求?每个结果应该在不同的行? 现在发生的是,它取结果,将它放在第2行,然后删除第1行,依此类推。
我不介意在一张纸上有所有结果。
任何对我有任何想法的人?
答案 0 :(得分:0)
如果没有必要每分钟40个,可以尝试每小时左右循环一次所有标签:
var labels = ['1001', '1002', '1003'];
for (var i in labels) {
var threads = GmailApp.getUserLabelByName(labels[i]).getThreads(0,1);
for(var n in threads){
var msg = threads[n].getMessages();
var destArrayRow = new Array();
destArrayRow.push('Record');
for(var m in msg){
destArrayRow.push(msg[m].getPlainBody());
}
destArray.push(destArrayRow);
}
}