google-apps-script - 如何创建 Google 脚本循环以激活和复制工作簿中每个选项卡中的数据
问题描述
我有一张电子表格,其中有 X 张(张数会不断变化)。每张表中的数据格式相同。我想创建一个宏来激活电子表格中的每个工作表,并将特定单元格中的数据提取到一个新工作表中(基本上我将每个工作表中的信息合并到一个地方)。我了解如何使用 激活工作表getSheetByName()
,但工作表的名称和数量会定期更改。我希望创建一个执行以下操作的循环:
- 激活第一张纸。
- 将数据从该工作表中的几个单元格复制到“仪表板”工作表。
- 激活下一张纸。
- 将数据从该工作表中的几个单元格复制到“仪表板”工作表。
- 重复直到所有工作表都被审查。
我可以使用以下代码来激活下一张纸,但是如何制作一个在最后一张纸之后停止的循环?
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A2').activate();
var nextSheetIndex = spreadsheet.getActiveSheet().getIndex() + 1;
if (nextSheetIndex > spreadsheet.getSheets().length) { nextSheetIndex = 1; }
spreadsheet.setActiveSheet(spreadsheet.getSheets()[nextSheetIndex - 1], true);
spreadsheet.getRange('A2').activate();
nextSheetIndex = spreadsheet.getActiveSheet().getIndex() + 1;
任何提示将非常感谢!
解决方案
首先,您无需激活Sheet
即可执行更改。由于您要遍历Sheet
a 中的每个Spreadsheet
,因此请使用该getSheets()
方法检索 anArray
实例Sheet
。
然后,Sheet
使用您喜欢的循环(for
、for...in
、forEach()
等)对每个循环进行迭代,并且在循环的每次迭代期间,访问Range
要从中提取数据的值 viagetRange(yourRangeReference).getValue()
并将其复制到目标Sheet
。
如果您需要检查并考虑动态变化的工作表数量,在迭代它们时,请getNumSheets()
在每个迭代步骤中使用方法,如果其结果大于初始值,则访问push()
此工作表,然后将其放入Array
.
有用的链接
- 关于
for
循环的MDN 文档(最简单的); SpreadsheetApp
电子表格服务参考;- 扩展 Google 表格的开发人员指南;
推荐阅读
- javascript - 在后端使用带有 Vue.js 的 axios-cookiejar-support
- c - 指向固定大小数组的指针数组的正确 c 语法是什么?
- php - 运行 php artisan route 时出现问题:安装了 jwt 的列表
- javascript - 将命令的通道列入白名单
- python - 新 csv 文件中的重复值
- python - 什么是便利功能?
- c - 将多维数组传递给 C 中的函数时出现分段错误
- sql - 如何使用 oracle sql 对连续记录进行排名?
- c++ - 将大括号初始化用于非平凡的多变量类
- c# - C# WPF 如何在单击按钮时使用线程运行异步任务