【问题标题】:Google App Script - getFilter and getRange does not return desired filtered resultsGoogle App Script - getFilter 和 getRange 不返回所需的过滤结果
【发布时间】:2022-11-30 05:15:46
【问题描述】:

我有一个应用于工作表的过滤器。我只想返回过滤器中的数据,而不是工作表的整个范围。

  const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME)

  const filter = sheet.getFilter();
  // This returns the entire sheet's range rather than the filtered range.
  const range = filter.getRange().getValues();

根据上面的代码,为什么我没有根据来自 Google 的 docs 获得所需的行为?

【问题讨论】:

  • filter.getRange() 只返回过滤器适用的范围。 getValues() 获取该范围内的所有值。您可能应该请求一个新方法,例如 getFiilteredValues();
  • 显然 getFilteredValues() 现在不存在。您是说目前无法使用 Google App Script 提供的功能来执行此操作?除了使用 JS 来过滤数据之外。我想避免提高性能。我已经有一个工作表过滤器,为什么我不能在代码中实际使用它?
  • 此外,当 getRange() 与 getFilter() 一起使用时,文档描述其工作方式的方式是欺骗性的:Gets the range this filter applies to.

标签: google-apps-script google-sheets


【解决方案1】:

通过删除数据中位于isRowHiddenByFilter(rowPosition) 返回true 的行中的值,您可以仅获取活动过滤器显示的值。

也就是说,使用 JavaScript 的 Array.filter() 会比调用多个 API 来查找隐藏的行提供更好的性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    相关资源
    最近更新 更多