如何通过App Script从另一Google Sheet筛选Measurement列指定值的行
代码修改方案
你只需要在获取源数据后增加筛选逻辑,同时调整目标区域的行数参数即可,修改点说明如下:
- 首先修正原代码的语法错误:函数名不能包含空格,将
function Country A()调整为function CountryA() - 先确认源表
Compiled的表头中Measurement列所在的序号,比如该列是第4列的话,对应数组索引为3(数组从0开始计数),你可以根据实际列位置调整代码里的列索引值 - 使用
Array.filter()方法过滤出Measurement列值为Mrm1/Mrm2/Mrm3的行 - 写入目标表时用筛选后的行数代替原源数据的总行数
修改后的完整代码如下:
function CountryA() { // 源表配置 var sss = SpreadsheetApp.openById("19-idD8PWuNxnvzRVqBlKhju2RkKxOe8nUQaf9ZMAcgk"); var ss = sss.getSheetByName('Compiled'); var numRows = ss.getLastRow(); var numColumn = ss.getLastColumn(); var srange = ss.getRange(2,1,numRows - 1, numColumn); // 修正原范围参数:从第2行开始,总行数是最后行-1,避免取到空行 var values = srange.getDisplayValues(); // ========== 新增筛选逻辑 start ========== // 请将下方的measurementColIndex调整为你Measurement列实际对应的数组索引,比如该列是源表第3列,索引就填2 const measurementColIndex = 2; // 允许通过的Measurement值列表 const allowedValues = ["Mrm1", "Mrm2", "Mrm3"]; // 过滤符合条件的行 const filteredValues = values.filter(row => allowedValues.includes(row[measurementColIndex])); // ========== 新增筛选逻辑 end ========== // 目标表配置 var lss = SpreadsheetApp.getActiveSpreadsheet(); var targetSheet = lss.getSheetByName('Country A'); var targetnumRows = targetSheet.getMaxRows(); var targetnumcolumns = targetSheet.getMaxColumns(); var TargetRange = targetSheet.getRange(2,1,targetnumRows,targetnumcolumns); TargetRange.clear(); // 仅当有符合条件的行时写入数据 if (filteredValues.length > 0) { var ls = targetSheet.getRange(2,1,filteredValues.length, numColumn); ls.setValues(filteredValues); } // 调整目标表行列范围 var maxColumns = targetSheet.getMaxColumns(); var lastColumn = targetSheet.getLastColumn(); var maxRows = targetSheet.getMaxRows(); var lastRow = targetSheet.getLastRow(); if (maxColumns - lastColumn != 0) { targetSheet.deleteColumns(lastColumn + 1, maxColumns - lastColumn); } if (maxRows - lastRow != 0) { targetSheet.deleteRows(lastRow + 1, maxRows - lastRow); } // 写入更新时间 targetSheet.getRange(1,1).setValue(Utilities.formatDate(new Date(), "CST", "MM-dd-yyyy HH:mm:ss")); }
注意:你需要先调整代码里的
measurementColIndex参数为实际的列索引值,比如你的源表第一列是序号、第二列是名称、第三列是Measurement,那索引就是2,以此类推。
内容的提问来源于stack exchange,提问作者Xan Mei
相关产品推荐
相关产品推荐

