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

如何用Google Apps Script将非相邻列数据迁移至对应工作表

修改脚本支持非相邻列数据迁移

需求说明

需要用Google Apps Script替代QUERY(IMPORTRANGE),因为后续要对迁移的数据执行公式无法实现的操作。表单采用分支提问逻辑,不同集群对应的数据列不连续,例如Cluster 2需要迁移A-D列和G-H列,现有脚本仅支持复制连续列,需调整以适配非相邻列的迁移需求。

修改后的脚本

function copyNonAdjacentColumns() {
  const sSheet = SpreadsheetApp.getActiveSpreadsheet();
  const srcSheet = sSheet.getSheetByName("Form responses 1");
  const tarSheet = sSheet.getSheetByName("Cluster 2");
  const lastRow = srcSheet.getLastRow();
  // 定义需要迁移的非相邻列(按目标表需要的顺序排列)
  const targetColumns = ["A", "B", "C", "D", "G", "H"];

  for (let i = 3; i <= lastRow; i++) {
    const clusterVal = srcSheet.getRange("B" + i).getValue();
    if (clusterVal === "Cluster 2") {
      const tarRow = tarSheet.getLastRow() + 1;
      // 批量获取需要的列数据
      const srcRanges = targetColumns.map(col => srcSheet.getRange(col + i));
      const values = srcRanges.map(range => range.getValue());
      // 将数据写入目标表的对应行
      tarSheet.getRange(tarRow, 1, 1, values.length).setValues([values]);
    }
  }
}

关键改动说明

  • 新增targetColumns数组,明确指定需要迁移的非相邻列,可根据不同集群需求灵活修改列名
  • 改用map方法批量获取指定列的单元格数据,避免重复的范围调用
  • 一次性将整行数据写入目标表,比逐列写入更高效
  • 变量名更具语义化,提升代码可读性

如果数据量较大,可使用更高效的批量范围获取方式优化性能:

function copyNonAdjacentColumnsOptimized() {
  const sSheet = SpreadsheetApp.getActiveSpreadsheet();
  const srcSheet = sSheet.getSheetByName("Form responses 1");
  const tarSheet = sSheet.getSheetByName("Cluster 2");
  const lastRow = srcSheet.getLastRow();
  const targetColumns = ["A", "B", "C", "D", "G", "H"];

  for (let i = 3; i <= lastRow; i++) {
    const clusterVal = srcSheet.getRange("B" + i).getValue();
    if (clusterVal === "Cluster 2") {
      const tarRow = tarSheet.getLastRow() + 1;
      // 构造范围列表字符串
      const rangeListStr = targetColumns.map(col => col + i).join(",");
      const srcRangeList = srcSheet.getRangeList(rangeListStr);
      // 获取所有值并整理为二维数组
      const values = [srcRangeList.getRanges().map(range => range.getValue())];
      tarSheet.getRange(tarRow, 1, 1, values[0].length).setValues(values);
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:06