首页 > 解决方案 > 尝试使用 .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 的。

标签: google-apps-scriptgoogle-sheets

解决方案


推荐阅读