如何解决Google Apps 脚本中二维数组大小的异常错误
例外是:
数据中的列数与范围内的列数不匹配。数据为 0,范围为 3。
我想用三列和线程的长度填充谷歌电子表格。当我调试程序时,数组为空。是否应该使用另一种方法来创建可与 getrange 一起使用的二维数组?
function TheaThreads(){
var SS =SpreadsheetApp.getActiveSpreadsheet();
var ThreadSheet = SS.getSheetByName("Threads");
var threads = GmailApp.getInBoxThreads();
var csNames = new Array();
for (var i=0; i < threads.length; i++) {
for (var j = 0; j <
threads[i].getMessages().length; j++){
var message = threads[i].getMessages()[j],label = threads[i].getLabels(),ident = message.getId(),emailfrom = message.getFrom();
//remove the name that comes with the email and pops the > at the end and store into str
var str = emailfrom.split("<").pop();
str=str.replace(">",'');
// Label empty labels with "No Label"
if(label==null|| label== undefined||
label.length==0){
label="No Label";
}
}
//Push the ID,Label and FromEmail into 2D array
csNames[j] = new Array();
csNames[j][0]= ident;
csNames[j][1]= label;
csNames[j][2]=str;
Logger.log(csNames[j]);
ThreadSheet.getRange(2,1,csNames.length,csNames[j].length).setValues(csNames);
解决方法
这对我来说:
function TheaThreads() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheetByName("Sheet1");//changed
var threads = GmailApp.getInboxThreads();
var csNames = [['id','label','from']];//changed
for (var i = 0; i < threads.length; i++) {
for (var j = 0; j < threads[i].getMessages().length; j++) {
var message = threads[i].getMessages()[j],label = threads[i].getLabels().map(l=>{return l.getName()}).join(','),ident = message.getId(),emailfrom = message.getFrom();//changed
var str = emailfrom.split("<").pop();
str = str.replace(">",'');
if (label == null || label == undefined ||
label.length == 0) {
label = "No Label";
}
}
csNames.push([ident,label,str]);
}
sh.getRange(1,1,csNames.length,csNames[0].length).setValues(csNames);//moved
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。