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

Google Apps Script实现W列含数值时跨表格追加指定列数据

代码调整方案

以下是修正后可实现需求的完整代码:

var sSheet = SpreadsheetApp.getActiveSpreadsheet();
var srcSheet = sSheet.getSheetByName('109 Directs');
// 目标表链接保留你原有配置即可
var target = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1eKLEK58-2oegSmFsGgvUz6g50HwKqNjwAEsSnxJDdyw/edit#gid=0").getSheetByName("Direct Data");

// 按你源表数据的实际行范围12-46循环
for (var i = 12; i <= 46; i++){
  // 读取当前行W列的总工时值
  var workHourVal = srcSheet.getRange("W" + i).getValue();
  // 仅总工时不为空时执行复制
  if (workHourVal !== ""){
    // 这里假设源表NAME为A列、POSITION为B列,可根据你实际列号修改
    var name = srcSheet.getRange("A" + i).getValue();
    var position = srcSheet.getRange("B" + i).getValue();
    // 定位到目标表的空白追加行
    var targetLastRow = target.getLastRow() + 1;
    // NAME写入目标表F列,POSITION写入相邻G列
    target.getRange("F" + targetLastRow).setValue(name);
    target.getRange("G" + targetLastRow).setValue(position);
  }
}

如果你需要把姓名和职位合并写入同一F列,可把最后两行赋值逻辑替换为:

target.getRange("F" + targetLastRow).setValue(`${name} | ${position}`);

核心调整点说明

  • 修正了循环逻辑:原代码循环起始值设为22完全错误,按你源表数据实际行范围12-46设置了循环区间
  • 修正了单元格范围拼接错误:原代码W12:W46 + i的拼接逻辑不符合语法规则,改为直接取当前行W列的单元格W+i
  • 去掉了无用的activate()操作:不需要激活单元格即可读取值,可大幅提升脚本运行效率
  • 调整了复制逻辑:不再复制整行内容,仅提取你需要的NAME、POSITION两列数据写入目标表对应位置
  • 去掉了不必要的插入行操作:直接写入目标表最后一行的下一行即可,不需要单独调用插入行方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:06:03