如何使用Google App Script按列条件提取对应行的指定列值
Google App Script 按列条件提取匹配行数值方案
核心逻辑
- 通过可配置的列编号定位目标字段,列位置变动时无需修改核心遍历逻辑
- 读取工作表全量数据后跳过表头行逐行判断
- 匹配到MED TIMING列的目标值时,将同行PHONE列的值存入结果数组,最终输出目标数组
完整实现代码
列编号规则和表格原生列序一致,从1开始计数:A列对应1、B列对应2,直接修改代码开头的配置项即可适配你的表格结构
function getMatchedPhoneList() { // -------------------------- 配置项 按需修改 -------------------------- const MED_TIMING_COL = 1; // MED TIMING字段所在的列编号,示例表中为A列故填1 const PHONE_COL = 2; // PHONE字段所在的列编号,示例表中为B列故填2 const TARGET_VALUE = "Breakfast"; // 需要匹配的MED TIMING值 const SHEET_NAME = "Sheet1"; // 数据所在的工作表名称 // ------------------------------------------------------------------- // 读取工作表全量数据 const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME); const sheetData = activeSheet.getDataRange().getValues(); const resultArray = []; // 从索引1开始遍历,跳过第1行表头(数组索引从0开始) for (let rowIndex = 1; rowIndex < sheetData.length; rowIndex++) { // 代码自动处理数组索引偏移,配置列号时无需手动减1 const currentTiming = sheetData[rowIndex][MED_TIMING_COL - 1]; if (currentTiming === TARGET_VALUE) { resultArray.push(sheetData[rowIndex][PHONE_COL - 1]); } } // *示例数据下resultArray输出为 [1,4]*,可直接调用该变量做后续逻辑处理 console.log('匹配结果:', resultArray); return resultArray; }
配置&调整说明
- 列位置变动适配:如果后续调整了表格列顺序,只需要修改配置项里的两个列编号数值即可,核心逻辑无需改动
- 匹配目标调整:如果需要提取Lunch、Dinner对应的PHONE列表,直接修改
TARGET_VALUE的赋值即可,例如赋值为"Dinner"时返回结果为[5] - 空值过滤:如果需要跳过PHONE列为空的行,在push逻辑前增加空值判断即可:
if (sheetData[rowIndex][PHONE_COL - 1] !== '')再执行存入操作 - 数据类型兼容:如果PHONE列存的是文本格式的号码,脚本会原样保留文本类型,不会自动转成数字导致前导零丢失
内容的提问来源于stack exchange,提问作者Aayush
相关产品推荐
相关产品推荐

