我正在尝试使用@serge的script将电子邮件发送到电子表格中。
我收到类型错误:“无法从未定义的”读取属性“length”。
任何帮助解决问题的人都会非常感激。
function getMessagesWithLabel() {
var destArray = new Array();
var threads = GmailApp.getUserLabelByName('CDC Health Alerts').getThreads(1,30);
for(var n in threads){
var msg = threads[n].getMessages();
var destArrayRow = new Array();
destArrayRow.push('thread has '+threads[n].getMessageCount()+' messages');
for(var m in msg){
destArrayRow.push(msg[m].getSubject());
}
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)
}
答案 0 :(得分:0)
使用length()
属性的唯一行是最后一行。
sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray)
因此,名为 destArray 的数组未获取任何数据。如果您检查destArray
中包含的值,则会显示未定义的值。您需要从代码的顶部开始,并检查关键点以获取分配给变量的内容。例如:
var threads = GmailApp.getUserLabelByName('CDC Health Alerts').getThreads(1,30);
Logger.log('threads: ' + threads);
请注意上面代码中的Logger.log()语句。添加Logger.log('Some Text: ' + variableName);
语句,然后查看LOGS,看看变量' threads`是否正在获得分配给它的内容。
继续这样做,直到找到问题为止。即使错误来自最后一行,代码中也会出现错误,因为变量destArray
未获得指定的值。