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

如何修改Google Sheets带非空过滤规则的跨表复制GS脚本

Google Sheets 带条件过滤的跨表复制脚本修改方案

核心功能实现逻辑

  • 遍历源表(sheet1)A2:F61范围内的所有行
  • 逐行校验第3列(C)、第4列(D)、第6列(F)的单元格值,任意一列非空则标记为待复制行
  • 批量将符合条件的行追加到目标表(sheet2)末尾,仅复制内容
  • 保留原有清空指定范围、跳转单元格的逻辑
// 获取工作簿、源表、目标表
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('你的源表名称'); // 替换为实际源表名称
const sheet2 = ss.getSheetByName('你的目标表名称'); // 替换为实际目标表名称

// 读取源表A2:F61所有数据
const sourceRange = sheet1.getRange("A2:F61");
const sourceValues = sourceRange.getValues();

// 过滤符合条件的行:C/D/F列任意一列不为空
const filteredRows = sourceValues.filter(row => {
  // row[2]对应C列,row[3]对应D列,row[5]对应F列
  return row[2] !== "" || row[3] !== "" || row[5] !== "";
});

// 批量写入目标表
if (filteredRows.length > 0) {
  const targetStartRow = sheet2.getLastRow() + 1;
  sheet2.getRange(targetStartRow, 1, filteredRows.length, filteredRows[0].length)
    .setValues(filteredRows);
}

// 保留原有操作逻辑
ss.getRangeList(['C2:D60', 'F61']).clear({contentsOnly: true, skipFilteredRows: true});
ss.getRange('K57').activate();
ss.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.UP).activate();

日期提取说明

  • 附图中的日期为Google Sheets标准日期格式存储,可直接通过range.getValue()读取对应单元格的日期对象,也可通过Utilities.formatDate()方法将日期转换为自定义字符串格式,示例代码:
// 示例:读取指定单元格日期并格式化为YYYY-MM-DD格式
const date = sheet1.getRange('对应日期单元格位置').getValue();
const formattedDate = Utilities.formatDate(date, Session.getScriptTimeZone(), 'yyyy-MM-dd');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:01