问题:每次运行脚本时,以前的相同电子邮件都会加载到电子表格中。鉴于我需要每周运行一次此脚本,因此我想忽略先前运行中已导入的电子邮件。
我认为需要在for循环中进行编辑,或者可能在添加之前添加if语句
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var label = GmailApp.getUserLabelByName("Test Script");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getPlainBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
ss.appendRow([msg, sub, dat])
}
}
当前输出为: 电邮1 电邮2 电邮3 电邮1 电邮2 电邮3 电邮4 电邮1 电邮2 电邮3 电邮4 电子邮件5
但是我希望它只是添加新的电子邮件: 电邮1 电邮2 电邮3 +电子邮件4 +电子邮件5
答案 0 :(得分:0)
这是您可以执行的操作:
function myFunction(){
var messageArray=[];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var values=sheet.getDataRange().getValues();
for (var k=0; k<values.length; k++){
messageArray.push(values[k][0])
}
var label = GmailApp.getUserLabelByName("testlabel");
var threads = label.getThreads();
for (var i=0; i<threads.length; i++){
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++) {
var msg = messages[j].getPlainBody();
var sub = messages[j].getSubject();
var dat = messages[j].getDate();
var id= messages[j].getId()
if(messageArray.indexOf(id)==(-1)){
ss.appendRow([id, msg, sub, dat])
}
}
}
}