Ada*_*dam 2 google-sheets google-apps-script
我有两个电子表格SpreadSheetA和SpreadSheetB。
我试图获取SpreadSheetA中所有工作表的名称列表,并将其添加到SpreadSheetB中的活动工作表中。
我已经完成了代码,但是在运行它时不断收到错误消息。
相对于line,错误消息为“无法将Array转换为Object [] []” range.setValues(sheetNameArray);。
这是我的代码:
function getSheetNamesAndAddToOtherSheet() {
var spreadSheetAURL = "https://docs.google.com/spreadsheets/d/UNIQUE-ID-HERE/edit";
var sheetNameArray = [];
var spreadSheetsInA = SpreadsheetApp.openByUrl(spreadSheetAURL).getSheets();
for (var i = 0; i < spreadSheetsInA.length; i++) {
sheetNameArray.push(spreadSheetsInA[i].getName());
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange(1, 1, sheetNameArray.length, 1);
range.setValues(sheetNameArray);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
错误消息提示出了什么问题:该setValues方法期望的是“ Object [] []”,它是事物的双重数组。在Google表格中,所有数据范围均表示为双精度数组,例如[[1, 2], [3, 4]]。如果有一行,它仍然是一个双精度数组:[[1, 2]]。如果是一栏:[[1], [3]]。
因此,您需要这个额外的数组维度,实际上是将每个工作表名称都包装在方括号中。这是在下面完成的,在这里我还使用了map方法来处理工作表数组:这比push在for循环中使用更干净,而且可能更有效。
function getSheetNamesAndAddToOtherSheet() {
var spreadSheetAURL = "https://docs.google.com/spreadsheets/d/UNIQUE-ID-HERE/edit";
var sheetNameArray = [];
var spreadSheetsInA = SpreadsheetApp.openByUrl(spreadSheetAURL).getSheets();
sheetNameArray = spreadSheetsInA.map(function(sheet) {
return [sheet.getName()];
});
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange(1, 1, sheetNameArray.length, 1);
range.setValues(sheetNameArray);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4649 次 |
| 最近记录: |