我为此编写了一个代码,但收到了错误
The coordinates or dimensions of the range are invalid. (line 44)
代码:
function updateMaster() {
var repArray = new Array();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var allSheets = ss.getSheets();
// build array of all sheets
for (i in allSheets) {
if ((allSheets[i].getName()).match(/.*?\-Rep$/))
{repArray.push(allSheets[i].getName());}
}
// store all sheets in array
var sheetArray = [];
// loop through all rep sheets
for (var j in repArray) {
// get each sheet
var tempSheet = ss.getSheetByName(repArray[j]);
// get sheet data
var dataRange = tempSheet.getDataRange().getValues();
// remove the first header row
dataRange.splice(parseInt(0), 1);
// append sheet data to array
var sheetArray = sheetArray.concat(dataRange);
}
// Time to update the master sheet
var mSheet = ss.getSheetByName("summary");
// save top header row
var headerRow = mSheet.getRange(1,1,1,12).getValues();
// clear the whole sheet
mSheet.clear({contentsOnly:true});
// put back the header row
mSheet.getRange(1, 1, 1, 12).setValues(headerRow);
这是我在写入主表时遇到错误的地方:
// write to the Master sheet via the array
mSheet.getRange(2, 1, sheetArray.length, 12).setValues(sheetArray);
// force spreadsheet updates
SpreadsheetApp.flush();
// pause (1,000 milliseconds = 1 second)
Utilities.sleep("200");
// delete empty rows at bottom
var last = mSheet.getLastRow();
var max = mSheet.getMaxRows();
if (last !== max) {mSheet.deleteRows(last+1,max-last);}
}
我无法弄清楚错误。任何帮助表示赞赏。我是新来的,需要帮助。
答案 0 :(得分:0)
您需要名称中包含“Rep”的工作表。
“第一个数组存储了所有销售代表工作表。由于某些工作表可能不是销售代表工作表,因此仅当工作表名称具有”-Rep“后缀(例如”JohnDoe-Rep“)时,脚本才会存储工作表“
代码来源:http://blog.ditoweb.com/2012/01/consolidate-spreadsheet-sheets-with.html
这就是为什么它不起作用。
答案 1 :(得分:0)
mSheet.getRange(2,1,sheetArray.length,12).setValues(sheetArray)
我遇到了同样的问题,并按照“Rep”解决方案解决了这个问题。然后我遇到了另一个问题并意识到我的列数不同......所以只需返回并将no 12更改为工作表中的行数。
同时尝试保持所有工作表的格式相同。
重命名要合并数据的工作表