代码之家  ›  专栏  ›  技术社区  ›  MC9000

有没有办法使用应用程序脚本javascript使用附加参数进行过滤?

  •  0
  • MC9000  · 技术社区  · 4 年前

    我有一个GoogleSheets电子表格,上面有一堆股票数据和刻度/符号。 问题是,我需要过滤一个特定的符号(大约90次),不希望每个记号/符号都有90个不同的过滤函数,但我看不到创建过滤函数和传入数组以外的内容的方法。 现在我有:

    let sheet = combinedSheet.getRange("A2:G3945").getValues();
    let sheetFiltered = sheet.filter(filterByTickApple);
    
    let filterByTickApple = function(item) {
         if (item[2] === "AAPL") {return true} else {return false};
    }
    

    基本上,您可以看到我必须编写90个单独的函数。我想做的事情是这样的:

      let sheetFiltered = sheet.filter(filterByTick,"AAPL");
    
      let filterByTick = function(item, tick) {
          if (item[2] === tick) {return true} else {return false};
      }
    

    但我知道这是不可能的(我尝试过变化,但没有乐趣)。其他人发布了这样的消息,你可以加入其他参数,但根据文档,这是不可能的(我已经尝试了他们的代码——它不起作用)

    有解决方法/黑客的想法吗?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Tanaike    4 年前

    我相信你的目标如下。

    • AAPL 以及“C”列中的其他值。

    虽然我不确定是否能正确理解您的目标,但如果我的理解是正确的,那么下面的修改如何?

    修改脚本:

    var values = ["AAPL","###",,,]; // Please set the values you want to check.
    let sheet = combinedSheet.getRange("A2:G3945").getValues();
    let sheetFiltered = sheet.filter(e => values.includes(e[2]));
    

    参考资料: