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