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

如何使用Google Apps Script复制工作表并按第1行最后一列值重命名?

原脚本问题定位

  • 获取最后一列时错误调用了getLastColumn() +1,得到的是第一行最后一个有值单元格右侧的空列,无法拿到目标值
  • 错误使用整行范围调用getDisplayValue(),该方法仅针对单个单元格返回正确文本,多选范围只会返回第一个单元格的内容
  • 范围参数传递逻辑错误,getRange的第四个参数是列数,你传入了Range对象而非数值,会触发参数不匹配报错

修复后可用脚本

function AddReportSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // 保存当前激活的原工作表对象
  var originalSheet = ss.getActiveSheet();
  // 获取第一行最后一个有值的列号
  var lastColOfFirstRow = originalSheet.getLastColumn();
  // 读取对应单元格的显示值作为新表名称
  var newSheetName = originalSheet.getRange(1, lastColOfFirstRow).getDisplayValue();
  // 复制原工作表并直接设置名称
  originalSheet.copyTo(ss).setName(newSheetName);
}

如果你希望保留原本的duplicate写法,也可以替换最后一行为以下两行,运行效果一致:

ss.duplicateActiveSheet();
ss.renameActiveSheet(newSheetName);

补充说明

  • 新工作表默认会排在所有现有工作表的最后,如果需要新表排在原工作表旁边,可以在脚本最后追加代码调整位置
  • 运行前请确认第一行最后一个有值单元格的内容符合Google Sheets工作表命名规则,不能包含[]:*?/\这些特殊字符,也不能和已有工作表重名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:15:06