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

Google Apps Script中用FindAll获取匹配行A1Notations及同行列值方法

修改后可直接运行的代码

var searchTerm = "Changeme"; // 替换为你要搜索的关键词
var sourceSheetName = "Sheet1"; // 替换为数据源表的表名
var targetSheetName = "匹配结果"; // 替换为要写入的目标表名

var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheetByName(sourceSheetName);
// 仅获取H列的有效数据范围,限制搜索仅在H列执行
var searchRange = dataSheet.getRange("H1:H" + dataSheet.getLastRow());
var completeSearch = searchRange.createTextFinder(searchTerm).findAll();

// 存储匹配到的A/B/C列数据
var resultList = [];
for (var i = 0; i < completeSearch.length; i++) {
  var range = completeSearch[i];
  var currentRow = range.getRow();
  // 提取当前行A、B、C三列的值
  var colA = dataSheet.getRange(currentRow, 1).getValue();
  var colB = dataSheet.getRange(currentRow, 2).getValue();
  var colC = dataSheet.getRange(currentRow, 3).getValue();
  resultList.push([colA, colB, colC]);
}

// 写入目标工作表,不存在则自动创建
var targetSheet = ss.getSheetByName(targetSheetName) || ss.insertSheet(targetSheetName);
// 清空目标表原有内容,避免旧数据干扰
targetSheet.clearContents();
// 批量写入所有匹配结果
if (resultList.length > 0) {
  targetSheet.getRange(1, 1, resultList.length, 3).setValues(resultList);
}

核心调整说明

  • 限制搜索范围:不再对整张表执行搜索,仅选取H列的有效数据范围创建TextFinder,确保匹配结果仅来自H列
  • 精准提取字段:命中匹配后仅拉取当前行A、B、C三列的值,无需读取整行数据,降低性能消耗
  • 批量写入目标表:先把所有匹配结果收集到数组中,再一次性写入目标工作表,比逐行写入效率更高,也避免频繁调用表格接口报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:15:03