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

如何过滤从电子表格获取的数据?实现指定状态行排除

问题

我通过代码从电子表格中按Name获取数据,当前输出表格如下:

No.NameXXXLocationStatusDateDays
1.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXAAA7-Sep-22163 Days
2.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXBBB4-Mar-22135 Days
3.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXCCC6-Jun-2234 Days
4.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXDDD6-Oct-225 Days
5.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXEEE23-Dec-22145 Days
6.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXFFF12-Jan-226 Days

需要过滤掉Status为「AAA」「CCC」「FFF」的行,期望输出表格:

No.NameXXXLocationStatusDateDays
1.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXBBB4-Mar-22135 Days
2.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXDDD6-Oct-225 Days
3.AAAAAAAAAAAAAAXXXXXXXXXXXXXXXEEE23-Dec-22145 Days

现有代码如下:

function GetAllProject() {
  var rangeName = '//';
  var rows = Sheets.Spreadsheets.Values.get(SheetData, rangeName).values;
  return rows;
}

const WaspangList = [//,//,//]

function SearchProjectbyWaspang(Name) {

  if (WaspangList.indexOf(Name.toUpperCase()) == -1) return "The name is not registered!" 

  var project = GetAllProject();
  var no = 1;
  var num = 1;
  const data = [];

  var table = '<b>No. | Name| XXX | Location | Status | Date | Days</b>\n';

  for (var row = 0; row < project.length; row++) {
    if (project[row][7] == Name.toUpperCase()) {
      var resi = num++ + ". | " + project[row][3] + " | " + project[row][5] + " | " + project[row][6] + " | " + project[row][10] + " | " + project[row][12] + " | " + project[row][80] + " Days" + '\n\n';
      data.push(resi);
    }
  }

  var join= table + data;
  var clearComa = join.toString();
  var dataNew = clearComa.replaceAll(",", "")
  return dataNew;
}

function RunSearchProjectbyWaspang() {
  WaspangList.forEach(Name => {
    let getData = SearchProjectbyWaspang(Name)
    let send = sendText(-xxxxxxxxxxx, getData)
    Logger.log("Successfully sent data : " + Name)
  })
}

请问如何实现该过滤功能?

解决方案

只需在循环的判断条件中添加状态过滤逻辑即可,具体修改如下:

修改后的SearchProjectbyWaspang函数代码:

function SearchProjectbyWaspang(Name) {

  if (WaspangList.indexOf(Name.toUpperCase()) == -1) return "The name is not registered!" 

  var project = GetAllProject();
  var num = 1;
  const data = [];
  // 定义需要排除的Status列表,后续可直接修改此数组调整过滤规则
  const excludedStatus = ["AAA", "CCC", "FFF"];

  var table = '<b>No. | Name| XXX | Location | Status | Date | Days</b>\n';

  for (var row = 0; row < project.length; row++) {
    // 同时判断:Name匹配,且当前行Status不在排除列表中
    if (project[row][7] == Name.toUpperCase() && !excludedStatus.includes(project[row][10])) {
      var resi = num++ + ". | " + project[row][3] + " | " + project[row][5] + " | " + project[row][6] + " | " + project[row][10] + " | " + project[row][12] + " | " + project[row][80] + " Days" + '\n\n';
      data.push(resi);
    }
  }

  var join= table + data;
  var clearComa = join.toString();
  var dataNew = clearComa.replaceAll(",", "")
  return dataNew;
}

关键改动说明

  1. 新增excludedStatus数组,集中存储需要过滤的Status值,后续调整过滤规则只需修改这个数组;
  2. 在if判断中加入!excludedStatus.includes(project[row][10]),其中project[row][10]对应Status列的索引(从现有代码逻辑看,Status是第11列,索引为10),!includes表示只有当前行的Status不在排除列表中,才会被加入输出内容。

修改后,输出结果会自动过滤掉Status为AAA、CCC、FFF的行,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:45:23