Google Sheets脚本需求:按指定列表批量复制并重命名Data工作表
批量复制工作表并设置指定单元格值的Google Apps Script调整方案
需求说明
- 现有Google Sheets文件包含Names和Data两个工作表
- Names工作表的A1:A181区域存储了工作表名称列表
- 需要将Data工作表批量复制181次,每个新工作表名称对应Names的A列值
- 每个新工作表的B2单元格需等于当前工作表的名称
调整后的脚本代码
function duplicateDataSheets() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const namesSheet = ss.getSheetByName('Names'); const dataSheet = ss.getSheetByName('Data'); // 获取Names工作表A1:A181的非空值(自动过滤空行) const namesList = namesSheet.getRange('A1:A181').getValues().flat().filter(name => name !== ''); // 遍历名称列表,复制工作表并设置B2值 namesList.forEach(name => { // 先检查是否已存在同名工作表,避免重复创建 if (!ss.getSheetByName(name)) { const newSheet = dataSheet.copyTo(ss); newSheet.setName(name); // 设置B2单元格为工作表名称 newSheet.getRange('B2').setValue(name); } }); }
使用步骤
- 打开目标Google Sheets文件
- 点击顶部菜单栏的扩展程序 > Apps 脚本
- 清空默认代码,粘贴上述脚本
- 点击保存按钮,为项目命名(比如DuplicateSheets)
- 点击运行按钮,首次运行需授权脚本访问权限
- 等待脚本执行完成,即可生成所有指定名称的工作表
脚本说明
getValues().flat().filter(name => name !== ''):处理Names列数据,去除空值,避免创建空名称的工作表- 增加了同名工作表的检查逻辑,防止重复创建导致报错
copyTo(ss):将Data工作表复制到当前文档setName(name):重命名新工作表为Names列表中的对应值getRange('B2').setValue(name):设置新工作表的B2单元格为当前工作表名称
内容的提问来源于stack exchange,提问作者Jyotirmaya Chandra
相关产品推荐
相关产品推荐

