You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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);
    }
  });
}

使用步骤

  1. 打开目标Google Sheets文件
  2. 点击顶部菜单栏的扩展程序 > Apps 脚本
  3. 清空默认代码,粘贴上述脚本
  4. 点击保存按钮,为项目命名(比如DuplicateSheets)
  5. 点击运行按钮,首次运行需授权脚本访问权限
  6. 等待脚本执行完成,即可生成所有指定名称的工作表

脚本说明

  • getValues().flat().filter(name => name !== ''):处理Names列数据,去除空值,避免创建空名称的工作表
  • 增加了同名工作表的检查逻辑,防止重复创建导致报错
  • copyTo(ss):将Data工作表复制到当前文档
  • setName(name):重命名新工作表为Names列表中的对应值
  • getRange('B2').setValue(name):设置新工作表的B2单元格为当前工作表名称

内容的提问来源于stack exchange,提问作者Jyotirmaya Chandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:24:56