当前位置: 首页 > 知识库问答 >
问题:

如何通过Google Sheets脚本使用筛选工具

陆飞捷
2023-03-14

我希望有一个函数,它从一个单元格中获取一个值,并在另一个工作表中的过滤器中使用它来仅过滤该值。我该怎么做?

提前谢谢你。

共有2个答案

段干瑞
2023-03-14
  • 假设过滤器已经创建,请通过工作表检索它。getFilter()
  • 从要显示的单元格中检索值(value)和所需筛选列中的数据(filter\u data)。使用getRange、getValue()和getValues()实现该功能
  • Filter\u DATA中过滤掉所有提及的VALUE。您可以使用数组。原型过滤器()用于该操作
  • 使用SpreadsheetApp创建过滤器标准。新建FilterCriteria(),并使用FilterCriteriaBuilder构建它。由于您只希望显示具有值的行,因此必须隐藏所有其余行(因为当前不支持setVisibleValues(值))。您可以使用setHiddenValues(值)来实现此目的
function filterValues() {
  const ss = SpreadsheetApp.getActive();
  const sourceSheet = ss.getSheetByName("Source"); // Change
  const filterSheet = ss.getSheetByName("Filter"); // Change
  const a1Notation = "A1"; // Change
  const value = sourceSheet.getRange(a1Notation).getValue();
  const filter = filterSheet.getFilter();
  const columnIndex = 2; // Change
  const filterValues = filterSheet.getRange(2,columnIndex,filterSheet.getLastRow()-1)
                                  .getValues().flat();
  const hideValues = filterValues.filter(current => current !== value);
  const filterCriteria = SpreadsheetApp.newFilterCriteria()
                                       .setHiddenValues(hideValues)
                                       .build();
  filter.setColumnFilterCriteria(columnIndex, filterCriteria);
}
  • 在上面的示例中,用作条件的列是B,因此柱状索引=2。此外,这些表被命名为SourceFilter,所需值位于SourceA1中。请根据您的喜好更改所有这些。
周瀚
2023-03-14

我相信在类过滤器中有一个用于此的函数

https://developers.google.com/apps-script/reference/spreadsheet/filter

然而,有可能更好的方法来实现你的目标。我个人建议使用QUERY()函数。2ns参数是表示SELECT语句的字符串,可以根据工作表中的值轻松构建。下面是我的一个项目的例子:

=query(Schedule!A:F, "SELECT B,D,E,F WHERE C='"&A1&"' AND E > date '"&TEXT(CurrentDate,"yyyy-mm-dd")&"' ORDER BY B, E",1)

CurrentDate是另一个工作表中的命名范围

 类似资料:
  • 我有这张表: 个人财务表 我使用此脚本对A列和B列进行“OneEdit”排序: 现在,我不想对A列进行排序,而是对其进行筛选,以便不显示选中的复选框: 想要过滤视图 似乎与和有关,但我真的搞不清楚。 有人能帮帮我吗? 谢谢

  • 我试图创建一个简单的脚本,通过自定义参数数组过滤嵌套字段数组,通过我的for循环抛出错误。 映射 源(_S) 脚本如下所示: 如果我用一个简单的字符串替换“params['自定义字段'][I]”部分,它工作得很好,所以我猜我的问题就在那里,但不知道到底是什么。 另一个注意事项,知道如何构造我的查询,以便在“_source”中返回来自无痛脚本的结果吗? 最后,我想做这样的事情: 但首先我想让它使用上

  • 我是新来的谷歌工作表脚本和卡住试图做以下事情。我有2列:C包含开始时间码,D包含结束时间码。第三列(F)包含从开始时间码和结束时间码产生的电影提示的长度。由于时间码来自脚本,因此包含结果的单元格不能导出为其他格式。因此,我试图创建第四列,将列F的结果打印为值。我设法写了一个小脚本,可以做到这一点。它看起来像这样: 问题是,当我编辑C或D中的任何时间码时,它不会自动执行。 所以我试了一下: 它没有给

  • 问题内容: 我需要通过运行设置服务器的脚本来添加cron作业。我目前正在使用Ubuntu。我可以使用,但这将打开一个编辑器来编辑当前的crontab。我想以编程方式执行此操作。 有可能这样做吗? 问题答案: Cron作业通常存储在每个用户的文件下 您要做的最简单的事情可能就是创建一个配置了作业的文本文件,然后将其复制到cron spool文件夹中,并确保它具有正确的权限(600)。

  • 我试图通过python使用boto3库为SNS主题设置Platfrom应用程序属性。 以下是脚本片段 下面是我得到的错误。aws文档没有python的例子,也没什么帮助。我不确定我错过了什么。请帮帮忙 AWS文档供参考:https://docs . AWS . Amazon . com/SNS/latest/API/API _ setplatformapplicationattributes .

  • 我试图根据某个字符串是否是列中值的子字符串来对dataframe应用筛选器。 例如:让我们调用子字符串'x',我想检索所有行,其中'x'是名为'a'的列中值的子字符串。 或者这个: 或者类似的东西。有没有人对我如何实现这一点有个想法?