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

Google Apps Script如何按D列筛选数据跨表格复制并加时间戳

解决后完整脚本
var sourceSpreadsheetID= "Spreadsheet1 ID";
var sourceWorksheetName= "BusinessDetails";
var targetSpreadsheetID= "Spreadsheet2 ID";
var targetWorksheetName= "Sheet5";
// 定义D列需要匹配的名称列表,后续增删筛选值直接改这里即可
var allowedNames = ["Jean", "Fred", "Mary"]

function importBusinessDetailsData(){
  // 获取源表全量数据
  var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID);
  var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName);
  var allSourceData = thisWorksheet.getDataRange().getValues();

  // 筛选符合条件的行:默认保留表头+D列匹配指定名称的行
  var filteredData = allSourceData.filter(function(row, index) {
    // 第一行是表头直接保留,不需要保留表头可删除本行判断
    if (index === 0) return true
    // D列对应数组索引为3,判断值是否在允许列表内
    return allowedNames.includes(row[3])
  })

  // 处理目标表
  var toSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetID);
  var toWorksheet = toSpreadsheet.getSheetByName(targetWorksheetName);
  // 先清空目标表所有旧数据,避免残留
  toWorksheet.clear()
  // > 提示:如果需要保留目标表的单元格格式,把上面的clear()替换为clearContents()即可

  // 写入筛选后的数据,从第2列开始写入(第1列预留放时间戳)
  var targetDataRange = toWorksheet.getRange(1, 2, filteredData.length, filteredData[0].length)
  targetDataRange.setValues(filteredData)

  // 批量写入时间戳到A列,和有效行数对齐
  var timeStamp = new Date()
  var timeStampArr = Array(filteredData.length).fill([timeStamp])
  // > 提示:如果不需要表头行A列显示时间戳,仅给数据行加时间戳,把上面一行替换为下方代码即可
  // var timeStampArr = [[null]].concat(Array(filteredData.length -1).fill([timeStamp]))
  toWorksheet.getRange(1, 1, filteredData.length, 1).setValues(timeStampArr)
}
核心修改说明
  • 新增可配置的名称匹配列表,后续调整筛选条件仅需修改顶部allowedNames变量,无需改动逻辑代码
  • 新增D列筛选逻辑,默认保留源表表头,仅保留D列符合指定值的行
  • 新增目标表清空逻辑,每次运行先清除所有旧数据,完全覆盖无残留
  • 优化时间戳写入逻辑,根据筛选后的有效行数批量赋值,避免整列无效写入,无需单独调用额外函数
  • 复用顶部定义的配置变量,后续修改表格ID、工作表名称仅需调整顶部变量,无需修改逻辑部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:57:03