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

如何通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:05