【发布时间】:2012-08-10 09:39:18
【问题描述】:
我已经为此编写了代码,但出现错误
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);}
}
我无法找出错误。
【问题讨论】:
-
先猜你是要删除越界的行,或者是无效的数字,last和max的值是多少?
-
留下没有给出任何错误的部分,它在 mSheet.getRange(2, 1, sheetArray.length, 12).setValues(sheetArray);该范围的坐标或尺寸无效。
-
你说“这是我得到错误的地方”让我很困惑,然后又放了一段代码。现在这更清楚了:您不必获取具有列数/行数的范围来设置数据,只需使用具有行和列引用的范围,如下所示:mSheet.getRange(1,1).setValues( headerRow);
-
我试过当我使用 mSheet.getRange(2, 1).setValues(sheetArray);我收到错误“范围高度不正确,为 0 但应为 1”
-
取决于您需要放入的内容:sheetArray 或 headerRow。在您的问题中,它指出: setValues(headerRow) 并在您之前的评论中说: setValues(sheetArray).
标签: google-apps-script google-sheets google-sheets-api