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

请求修改Google Script:用Sheet1的B列值批量重命名对应标签

修改Google Script实现按Sheet1的B列值批量重命名对应工作表

方案1:手动批量执行(一次性修改15个工作表名称)

如果需要一次性将第1至第15个工作表的名称替换为Sheet1中B1至B15的值,可使用以下函数。执行时直接在脚本编辑器中点击运行按钮即可:

function renameSheetsFromSheet1() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet1 = ss.getSheetByName("Sheet1");
  // 获取Sheet1中A1:B15的所有数据(A列可留空,仅用行号对应工作表顺序)
  const nameData = sheet1.getRange("A1:B15").getValues();
  const allSheets = ss.getSheets();

  nameData.forEach((row, index) => {
    // 行1对应第一个工作表(数组索引0),行15对应第十五个工作表(索引14)
    const targetSheet = allSheets[index];
    if (!targetSheet) return; // 若工作表数量不足15,跳过不存在的项
    
    const newName = row[1].toString().trim();
    if (newName) { // 仅当B列单元格不为空时修改名称
      targetSheet.setName(newName);
    }
  });
}

方案2:编辑Sheet1的B列时自动重命名(实时触发)

如果希望编辑Sheet1中B1-B15的单元格时,自动将对应顺序的工作表名称更新为该单元格的值,使用修改后的onEdit函数:

function onEdit(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const activeSheet = e.range.getSheet();

  // 仅处理Sheet1中B1-B15区域的编辑操作
  if (activeSheet.getName() !== "Sheet1" 
      || e.range.getColumn() !== 2 
      || e.range.getRow() < 1 
      || e.range.getRow() > 15) {
    return;
  }

  const newName = e.range.getValue().toString().trim();
  if (!newName) return; // 空值不执行修改

  const targetSheetIndex = e.range.getRow() - 1; // 行号转工作表数组索引(从0开始)
  const targetSheet = ss.getSheets()[targetSheetIndex];
  
  if (targetSheet) {
    targetSheet.setName(newName);
  }
}

与原脚本的差异说明

  1. 触发逻辑调整:原脚本监听A列所有行的编辑,现在改为限定Sheet1的B1-B15区域(或手动批量执行)
  2. 名称来源变更:从A列单元格值改为B列对应行的值
  3. 范围限制:仅处理1-15行对应的工作表,避免误修改其他工作表
  4. 边界处理:增加了工作表存在性检查和空值过滤,防止报错

内容的提问来源于stack exchange,提问作者Armanda Salreu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:30:43