【发布时间】:2021-11-05 05:54:05
【问题描述】:
我有一个主列表,第 2 行中有几十个名字分布在一堆列 (A2:Z2)。每个名称下都有一个值和数据列表。
| row 2 | John | Sally | James |
|---|---|---|---|
| row 3 | Value | Value | Value |
| row 4 | Value | Value | Value |
| row 5 | Value | Value | |
| row 6 | Value | Value |
每个名字都应该被创建到一个工作表中。
这是用于为第 2 行中的每个名称创建工作表的脚本:
function generateSheetByName() {
const ss = SpreadsheetApp.getActive();
var mainSheet = ss.getSheetByName('Master List');
const sheetNames = mainSheet.getRange(2, 1, mainSheet.getLastRow(), 1).getValues().flat();
sheetNames.forEach(n => ss.insertSheet(n));
}
我希望这个脚本不仅可以为每个名称创建一个工作表,而且还可以将每个名称下的所有值一直延续到相应列的最后一行。
例如John 在 A2 中,A3:A 是应该传递到创建的工作表的值。 Sally 是 B2,B3:B 是应该继承的值。
在 John 的工作表中 -“John”是 A1 中的标题,列值位于 A2:A 中
对于每张制作的工作表,我还想手动添加其他值。例如,如果创建了“John”工作表,并在 A2:A22 中添加了 20 个值,我希望脚本在 B2:B22 中添加复选框。或者总是在 B1 中添加一个公式,例如“=counta(a2:a)”之类的。
如何使用有效的循环来做到这一点?请注意,这可能会创建 50 张纸并在每张纸上携带超过 10-50 个值
示例图片:
主列表:
每个名称都会创建一个如下所示的工作表
约翰的床单
【问题讨论】:
-
我必须为我糟糕的英语水平道歉。不幸的是,我无法理解
I want to also be able to dictate several functions simultaneously upon creation of each sheet. For example if it moves over values from A2:A50 for John's sheet, I want to be able to insert a range of checkboxes in B2:B50. Or Sally's is A2:A13, it inserts checkboxes in B2:B13. Or I want to auto insert a formula upon creation of each sheet in cell B1 like "=counta(a2:a)" or something。为了正确理解您的问题,能否提供示例输入输出情况作为图片? -
我添加了脚本,它运行良好。它为第 2 行中的每个名称创建一个工作表。在创建每个工作表的同时,我还想为每个工作表添加功能或值。就像在 John 和 Sally 工作表中一样,我希望它自动在 B2:B50 中添加复选框,或者在特定单元格中添加 =counta(a2:a) 公式,例如 John 和 Sally 中的 B1 以及创建的所有其他工作表。 (我更新了我的帖子以使其更容易理解)
-
@Tanaike 我添加了照片
-
感谢您回复并添加更多信息。根据您的附加信息,我提出了一个示例脚本作为答案。你能确认一下吗?如果我误解了您的问题并且没有用处,我深表歉意。
-
每个
的工作表都是非常糟糕的主意。稍后您会遇到优化、扩展和效率问题。
标签: javascript google-apps-script google-sheets google-sheets-api