google-apps-script - 尝试使用 .getMessageById 收集和标记线程 ID 时出现“异常:未找到”错误
问题描述
我在尝试将电子表格上的所有线程 ID 标记为特定标签时遇到问题。我的代码是:
function labeler() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var IDSheet = ss.getSheetByName("Matching ID's");
var IDdata = IDSheet.getDataRange().getValues();
var label= "CRMTester";
Logger.log(IDdata);
for(var o =0; o< IDdata.length;o++){
GmailApp.getMessageById(IDdata[o]).getThread().addLabel(GmailApp.getUserLabelByName(label));
}
错误是“
异常:未找到 labeler @ Labeler.gs:8”
我不明白错误是什么意思以及如何解决它。关于如何解决这个问题的任何想法?
下面的代码是我用来收集 ID 并将它们存储在工作表中的代码:
var batchStart = 1;
var batchSize = 500;
var i= 0 ;
var label,ident,emailfrom,message;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Threads Data");
var threads = GmailApp.getInboxThreads();
var csNames = [['id','label','from']];
function threadGatherer() {
var generalThreads = nextBatch(batchStart);
while ( generalThreads.length > 0 ) {
processBatch(generalThreads);
generalThreads = nextBatch(batchStart += batchSize);
}
}
function nextBatch(batchStart) {
return GmailApp.search('in:anywhere', batchStart, batchSize);
}
function processBatch(generalThreads) {
generalThreads.forEach((generalThread) => {
i++;
for (var j = 0; j < generalThread.getMessages().length; j++) {
message = generalThread.getMessages()[j],
emailfrom= message.getFrom;
}
label = generalThread.getLabels().map(l=>{return
l.getName()}).join(','),
ident = generalThread.getId();
emailfrom =message.getFrom();
var str = emailfrom.split("<").pop();
str = str.replace(">", '');
if (label == null || label == undefined ||
label.length == 0) {
label = "No Label";}
// Logger.log( i +" "+ str + " "+ label +" " + ident);
csNames.push([ident,label,str]);
Logger.log(i+ " "+ csNames);
} )
sh.getRange(1, 1, csNames.length, csNames[0].length).setValues(csNames);
}
然后是使用 =IMPORTRANGE() 将 ID 传输到新工作表,这是程序用来收集 ID 的。