我是编码新手。我有一个Google表格,其中包含314个命名范围变量。我正在尝试将所有命名范围的顶点列表打印到工作簿中的单独工作表中。我得到的错误令人困惑。它显示为
例外:数据中的行数与范围内的行数不匹配。数据为1,但范围为314。(第47行,文件“代码”)
这是我的代码。我不确定我缺少什么?
function myFunction() {
//Declaring the Active Sheet
var mySheet = SpreadsheetApp.getActiveSheet();
//Declaring Array
var myArray = SpreadsheetApp.getActiveSpreadsheet().getNamedRanges();
//Clearing a range on the Google Sheet
mySheet.getRange('Named Ranges!A1:A314').clearContent();
//Printing Array to Google Sheet
mySheet.getRange('Named Ranges!A1:A314').setValues([myArray]);
}
getNamedRanges()
返回范围对象而不是它们的名称,并且setValues
仅在值的尺寸对应于范围的尺寸时才有效getName()
检索每个单个范围的名称>getName()
将具有内容[myArray]
,该内容将被解释为嵌套数组,其中将包含多列,仅一行][[range1, range2, ...]]
var myRanges = SpreadsheetApp.getActiveSpreadsheet().getNamedRanges();
Logger.log(myRanges);
var myArray = [];
for (var i = 0; i< myRanges.length; i++){
myArray[i] = [];
myArray[i].push(myRanges[i].getName());
}
始终是活动工作表,可以在mySheet
中指定其他工作表名称。而是指定任一getRange()
甚至可以动态地更好:
SpreadsheetApp.getActiveSpreadsheet().getRange('Named Ranges!A1:A314')
var myRangeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Named Ranges');
myRangeSheet.getRange(1,1, myArray.length, 1)
覆盖最终数据之前不必clearContent()
您对代码的示例修改:
setValues