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

Google Sheets脚本跨表复制数据的三类问题求助

解决方案

以下是修正后的代码,可直接解决你提到的三类问题:

function fill_planning_data_sheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const COsheet = ss.getSheetByName('1_Test-CONCEPTION 2D/3D');
  const PLsheet = ss.getSheetByName('02');
  
  // 写入表头
  PLsheet.getRange('G1:L1').setValues([['2D PROJECT','2D TASK', '2D NAME', '2D START D', "2D DD", '2D PROGRESS']]);

  // 获取原表有效数据范围,避免包含空行
  const COdataRange = COsheet.getDataRange();
  const COvalues = COdataRange.getValues();
  // 过滤出有任务的有效行,第9列对应任务列,数组索引为8
  const validTaskRows = COvalues.slice(1).filter(row => row[8] !== '');
  const validRowCount = validTaskRows.length;

  if (validRowCount === 0) return; // 无有效任务时直接退出

  // 1. 项目列:提取项目名,重复填充到所有有效任务行
  const projectName = COvalues[1][0]; // 取第2行第1列的项目名
  const projectColumn = Array(validRowCount).fill([projectName]);
  PLsheet.getRange(2, 7, validRowCount, 1).setValues(projectColumn);

  // 2. 复制任务列,仅复制值,不含公式
  COsheet.getRange(2, 9, validRowCount, 1).copyTo(PLsheet.getRange(2, 8), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

  // 3. 复制姓名列,仅复制值
  COsheet.getRange(2, 10, validRowCount, 1).copyTo(PLsheet.getRange(2, 9), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

  // 4. 填充起始日期,仅覆盖有效任务行
  const startDateColumn = Array(validRowCount).fill(['01/01/2023']);
  PLsheet.getRange(2, 10, validRowCount, 1).setValues(startDateColumn);

  // 5. 复制Date BAT列,仅复制值
  COsheet.getRange(2, 11, validRowCount, 1).copyTo(PLsheet.getRange(2, 11), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

  // 6. 复制进度列,仅复制值
  COsheet.getRange(2, 12, validRowCount, 1).copyTo(PLsheet.getRange(2, 12), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}

问题解决细节说明

1. 项目列公式复制&重复填充问题

  • 使用SpreadsheetApp.CopyPasteType.PASTE_VALUES参数强制复制单元格值,避免带出公式
  • 通过Array(validRowCount).fill([projectName])生成与有效任务行数匹配的项目名数组,批量写入目标列,实现项目名随任务行重复填充

2. 起始日期冗余填充问题

  • 先过滤原表中任务列为空的行,得到有效任务行数
  • 仅针对有效行数的范围填充起始日期,不会覆盖大量空行

3. 项目列未完整填充问题

  • 抛弃getMaxRows()(会包含所有空行),改用有效任务行数作为写入范围的依据,确保每一行有效任务都对应项目名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:32:04