Google apps script 数据中的列数与范围中的列数不匹配。数据有0,但范围有1(第32行,文件“代码”)

Google apps script 数据中的列数与范围中的列数不匹配。数据有0,但范围有1(第32行,文件“代码”),google-apps-script,Google Apps Script,当我试图将数据写回工作表(在工作表的现有第3行上)时,我一直收到上述消息。我正在使用map方法查找和替换数据。脚本运行正常,直到需要回写数据为止。大约有21000行包含5列数据,在出现错误消息之前,它会将多达10000行写回工作表 我只是不明白数据中怎么会有0行?下面是我注销时数据的样子 [ [Queue 1], [Queue 3], [Queue 3], [Queue 2], ] 这就是我在返回上述替换值数组之前运行map方法(第[2]行)的原始数据的样子 [ [1.59740765

当我试图将数据写回工作表(在工作表的现有第3行上)时,我一直收到上述消息。我正在使用map方法查找和替换数据。脚本运行正常,直到需要回写数据为止。大约有21000行包含5列数据,在出现错误消息之前,它会将多达10000行写回工作表

我只是不明白数据中怎么会有0行?下面是我注销时数据的样子

[
[Queue 1], 
[Queue 3], 
[Queue 3], 
[Queue 2], 
]
这就是我在返回上述替换值数组之前运行map方法(第[2]行)的原始数据的样子

[
[1.59740765627988E9, Fri Aug 14 12:21:33 GMT+02:00 2020, 45*10, Agent/25*1000, RINGNOANSWER],
[1.59740765627988E9, Fri Aug 14 12:21:56 GMT+02:00 2020, 45*10, Agent/25*1009, RINGNOANSWER],
[1.59741951423215E9, Fri Aug 14 15:39:12 GMT+02:00 2020, 45*10, Agent/25*1035, RINGNOANSWER]
]
这是完整的脚本

function missedCalls(){

var hotFolder = DriveApp.getFolderById('Id here');
var targetSheet = SpreadsheetApp.openById('Id here').getSheetByName('Sheet Name Here');
var missedCallsSheet = SpreadsheetApp.openById('Id here').getSheetByName('Sheet Name Here');
var csv = hotFolder.getFilesByName('filename.csv')

if(csv.hasNext()){

  var csvFile = csv.next();
  
  var csvData = Utilities.parseCsv(csvFile.getBlob().getDataAsString());
  
  //Logger.log(csvData);
  
  targetSheet.getRange(1,1,csvData.length,csvData[0].length).setValues(csvData);
  
  //csvFile.setTrashed(true);

  } else{
  
  }

var newData = targetSheet.getRange(2,1,targetSheet.getLastRow(),targetSheet.getLastColumn()).getValues();

Logger.log(newData);

var replace = newData.map(replaceNames);

Logger.log(replace);

targetSheet.getRange(2,3,replace.length,1).setValues(replace);


}

function replaceNames(row){

    if(row[2] === '45*05'){
    
    return ['Queue 1'];
    
    }else if(row[2] === '45*06') {
    
    return ['Queue 2'];
    
    }else if(row[2] === '45*07') {
    
    return ['Queue 3'];
    
    }else if(row[2] === '45*08') {
    
    return ['Queue 4'];
    
    }else if(row[2] === '45*09') {
    
    return ['Queue 5'];
    
    }else if(row[2] === '45*10') {
    
    return ['Queue 6'];

    } else {
    
    }

}

问题:
replaceNames
函数在不满足任何条件时不返回任何内容。当将此函数作为回调传递给
array.map时,会创建一个不规则数组(其中一些元素是数组,而另一些元素是
未定义的

解决方案: 使回调一致地返回相同类型的对象(即,仅包含一个元素的数组)

片段: 问题:
replaceNames
函数在不满足任何条件时不返回任何内容。当将此函数作为回调传递给
array.map时,会创建一个不规则数组(其中一些元素是数组,而另一些元素是
未定义的

解决方案: 使回调一致地返回相同类型的对象(即,仅包含一个元素的数组)

片段:
如果所有条件都不匹配,
replaceNames
函数应该返回一些内容(可能是
['']
)。否则,您将获得0行图例!!!!谢谢@TheMaster。添加了适当的else语句
['']
,脚本现在运行良好。我现在也明白了为什么它有时有效,有时无效。再次感谢,非常感谢。
replaceNames
函数应该返回一些东西(可能是
['']
),如果这些条件都不匹配的话。否则,您将获得0行图例!!!!谢谢@TheMaster。添加了适当的else语句
['']
,脚本现在运行良好。我现在也明白了为什么它有时有效,有时无效。再次感谢,谢谢。
function replaceNames(row){

    if(row[2] === '45*05'){
    
    return ['Queue 1'];
    
    } else if(row[2] === '45*06'){}
    /*Other conditions*/
    } else {
      /*Added*/return [''];
    }

}