gpt4 book ai didi

google-apps-script - 在 Google Apps Scripts 中创建所有工作表名称的列表

转载 作者:行者123 更新时间:2023-12-02 08:12:18 26 4
gpt4 key购买 nike

我的目标

我有两个电子表格,SpreadSheetA 和 SpreadSheetB。

我正在尝试获取 SpreadSheetA 中所有工作表的名称列表,并将其添加到 SpreadSheetB 中的事件工作表中。

我到目前为止的进展

我已经完成了代码,但在运行时不断收到错误消息。

错误消息是“无法将数组转换为对象 [][]”,引用行 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);
}

最佳答案

错误消息提示出了什么问题:setValues方法需要“Object[][]”,即 一系列的东西。在 Google Sheets 中,所有范围的数据都表示为双数组,例如 [[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);
}

关于google-apps-script - 在 Google Apps Scripts 中创建所有工作表名称的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45533701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com