【问题标题】:Google apps script search in two columns get matching rows as 2D array两列中的谷歌应用脚​​本搜索将匹配的行作为二维数组
【发布时间】:2020-02-14 20:18:25
【问题描述】:

以下 gs 代码运行良好

function getData00(e) {
  var id = "SHEET_ID";
  var sheetname = "SHEET";
  var data = SpreadsheetApp.openById(id).getSheetByName(sheetname).getDataRange().getValues();
  var ar = [];
  data.forEach(function(f) {
    if (~f.indexOf(e.color)) {
      ar.push(f);
    }
  });
  return ar;
}

所以我可以在列中搜索特定的“颜色”值并获取相应的行值。 现在我需要添加另一个条件来搜索另一列并获取组合的行值。

我的电子表格:

Number |   color   |   level   |   price   |   size   |   type
1      |   red     |   first   |    25     |    4     |   local
2      |   blue    |   third   |    30     |    3     |   global
3      |   green   |   second  |    40     |    6     |   local
4      |   blue    |   second  |    60     |    5     |   global

我需要在 B 列中搜索“blue”,在 F 列中搜索“local”以获取匹配的行值。

我正在寻找的结果:

2,blue,third,30,3,global
4,blue,second,60,5,global

HTML:

<html>
<body>
<p id="demo"></p>
</body>
</html>
<script>
function dispData(ar) {
 document.getElementById("demo").innerHTML = ar;
}
function getData00(e) {
  google.script.run.withSuccessHandler(dispData).getData00(e);    
}
</script>

在此先感谢并感谢任何帮助

【问题讨论】:

  • 请不要编辑您的帖子以包含后续问题。如果以下答案有用,请接受一个解决了您的问题的答案并提出另一个问题。

标签: javascript google-apps-script multidimensional-array


【解决方案1】:

Array.filter 会更合适:

function getData01(e) {
  var id = "SHEET_ID";
  var sheetname = "SHEET";
  var data = SpreadsheetApp.openById(id)
    .getSheetByName(sheetname)
    .getDataRange()
    .getValues();
  return data.filter(row => [e.color, e.type].every(prop => row.includes(prop)))
}

【讨论】:

    【解决方案2】:

    您可以使用Array.filter 过滤源数组以获得您想要的行。

    var matchingRows = data.filter(function(row){
        // check if column B equals "blue" and column F equals "local"
        return row[1] == "blue" && row[5] == "local";
    });
    

    B 列位于第二位,即数组中每一行的第一个索引。 F 列在第 6 位,即数组中每一行的第 5 个索引。

    【讨论】:

    • 非常感谢你,它与 Logger.log(matchingRows) 配合得很好,我可以看到数据。但是我无法在 html 页面中获取数组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    相关资源
    最近更新 更多