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

Google Apps Script批量复制工作表重命名并更新指定单元格问题

Google AppScript 批量创建工作表并写入对应ID方案

核心修改逻辑

  • 你已通过pids = all.getRange('a:a').getValues()获取到A列所有ID值,该数组和存储工作表名称的vals数组索引完全对齐,同一行的表名、ID共用循环索引i,不会出现匹配错位
  • ss.duplicateActiveSheet()方法执行后会返回新创建的工作表对象,原代码仅通过链式调用设置了表名,只需接住这个返回的工作表对象,调用单元格赋值方法,将对应行的ID写入B22单元格即可实现需求

修正后完整代码

function TemplateDuplication()
{
  var ss = SpreadsheetApp.getActiveSpreadsheet(),
      temp = ss.getSheetByName('blank-invoice-sample'),
      all = ss.getSheetByName('main_invoice'),
      sheets = ss.getSheets(),
      vals = all.getRange('k:k').getValues(),
      pids = all.getRange('a:a').getValues();
  for (var i = 0, len = sheets.length, names = []; i < len; i++)
    names.push(sheets[i].getName());
  for (var i = vals.length-1; i > 0; i--)
  {
    var name = vals[i][0];
    if (name !='' && names.indexOf(name) == -1)
    {
      temp.activate();
      // 接收新创建的工作表对象,设置表名
      var newSheet = ss.duplicateActiveSheet().setName(vals[i][0]);
      // 将当前行对应的A列ID写入新表B22单元格
      newSheet.getRange('B22').setValue(pids[i][0]);
    }  
  }
}

可选优化:现有写法直接读取整列数据,如果表格数据量较大,可以将取值范围修改为实际有数据的动态区间,减少空值循环提升运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:48:19