如何修改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
相关产品推荐
相关产品推荐

