本文档介绍如何使用过滤条件对 电子表格中显示的数据进行排序和过滤。
借助过滤条件,您可以对查看电子表格时看到的数据进行排序和过滤。过滤条件不会更改电子表格中的数据值。您可以使用过滤条件暂时隐藏或排序信息。在过滤条件开启期间,与指定的过滤条件匹配的数据不会显示。借助 过滤视图,您还可以保存不同的命名 过滤条件,并随时在它们之间切换。
如需过滤 Google Sheets API 请求中返回的数据,请使用
DataFilter对象。如需了解详情,请参阅读取、写入和搜索
元数据。
过滤条件使用场景
以下是一些过滤条件使用场景示例:
- 按特定列对数据进行排序。例如,按姓氏对用户记录进行排序。
- 隐藏符合特定条件的数据。例如,隐藏所有超过两年的记录。
- 隐藏与特定值匹配的数据。例如,隐藏所有状态为“已关闭”的问题。
基本过滤条件
电子表格的
BasicFilter
对象是默认过滤条件,每当有人
查看电子表格时,系统都会应用该过滤条件。每个
工作表只能有一个基本过滤条件。您可以通过清除基本过滤条件来将其关闭。这会从电子表格中移除过滤条件及其所有设置。如果您想重新开启同一过滤条件,必须再次设置过滤条件。
管理基本过滤条件
如需设置或清除基本过滤条件,请使用
spreadsheets.batchUpdate
方法和适当的请求类型:
- 如需设置基本过滤条件,请使用
SetBasicFilterRequest方法。 - 如需清除基本过滤条件,请使用
ClearBasicFilterRequest方法。
如需列出基本过滤条件,请使用
spreadsheets.get
方法,并将 fields 网址参数设置为 sheets/basicFilter。以下
spreadsheets.get 代码示例展示了带有 字段
掩码的 Google Sheets 网址:
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/basicFilter
过滤视图
A
FilterView
是一个命名过滤条件,您可以随时将其关闭和开启。一个工作表可以保存多个过滤视图,但一次只能应用一个。一个工作表还可以同时包含基本过滤条件和多个过滤视图,但您无法在同一数据范围内同时应用两者。
过滤视图使用场景
以下是一些过滤视图使用场景示例:
- 您有多个不同的过滤条件,希望在查看数据时在它们之间切换。
- 您没有对电子表格的编辑权限,但仍想应用过滤条件。在这种情况下,您可以创建只有您可见的临时过滤视图。
您希望与您共享电子表格的每个人以不同的方式查看数据。您可以在电子表格网址中提供 the
spreadsheetIdandfilterViewId,以指定要应用的过滤视图。为此,请使用在创建过滤视图时在响应中返回的filterViewId。以下代码示例展示了带有过滤视图的 Sheets 网址:
https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0&fvid=FILTER_VIEW_ID
管理过滤视图
如需创建、复制、修改或删除过滤视图,请使用
spreadsheets.batchUpdate
方法和适当的请求类型:
- 如需创建过滤视图,请使用
AddFilterViewRequest方法。 - 如需复制过滤视图,请使用
DuplicateFilterViewRequest方法。 - 如需修改过滤视图的属性,请使用
UpdateFilterViewRequest方法。 - 如需删除过滤视图,请使用
DeleteFilterViewRequest方法。
如需列出所有过滤视图,请使用
spreadsheets.get
方法,并将 fields 网址参数设置为 sheets/filterViews。以下
spreadsheets.get 代码示例展示了带有 字段
掩码的 Sheets 网址:
GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets/filterViews
过滤条件的 JSON 表示法
以下代码示例展示了
FilterView
对象的 JSON 表示法。BasicFilter 对象与此相同,只是缺少 filterViewId 和 title 字段,并且无法使用命名的范围。
{
"filterViewId": number,
"title": string,
"range": {
object(GridRange)
},
"namedRangeId": string,
"sortSpecs": [
{
object(SortSpec)
}
],
"criteria": {
string: {
object(FilterCriteria)
},
...
}
}
销售数据示例
本文档的其余部分引用了以下销售数据示例表:
| A | B | C | D | E | F | G | |
| 1 | 商品类别 | 型号 | 费用 | 数量 | 区域 | 销售人员 | 发货日期 |
| 2 | 车轮 | W-24 | 20.50 美元 | 4 | 西 | Beth | 2016 年 3 月 1 日 |
| 3 | 门 | D-01X | 15.00 美元 | 2 | 南 | Amir | 2016 年 3 月 15 日 |
| 4 | Frame | FR-0B1 | 34.00 美元 | 8 | 东 | Hannah | 2016 年 3 月 12 日 |
| 5 | 面板 | P-034 | 6.00 美元 | 4 | 北 | Devyn | 2016 年 3 月 15 日 |
| 6 | 面板 | P-052 | 11.50 美元 | 7 | 东 | Erik | 2016 年 5 月 16 日 |
| 7 | 车轮 | W-24 | 20.50 美元 | 11 | 南 | Sheldon | 2016 年 4 月 30 日 |
| 8 | 引擎 | ENG-0161 | 330.00 美元 | 2 | 北 | Jessie | 2016 年 7 月 2 日 |
排序规范
一个过滤条件可以有多个排序规范。这些规范决定了如何对数据进行排序,并按指定的顺序应用。
SortSpec.dimensionIndex
属性指定了应应用排序的列索引。
以下代码示例展示了一个排序规范:
[
{
"dimensionIndex": 3,
"sortOrder": "ASCENDING"
},
{
"dimensionIndex": 6,
"sortOrder": "ASCENDING"
}
]
当应用于销售数据示例时,此规范首先按“数量”列排序,然后,如果两行具有相同的数量,则按“发货日期”排序。
| A | B | C | D | E | F | G | |
| 1 | 商品类别 | 型号 | 费用 | 数量 | 区域 | 销售人员 | 发货日期 |
| 2 | 门 | D-01X | 15.00 美元 | 2 | 南 | Amir | 2016 年 3 月 15 日 |
| 3 | 引擎 | ENG-0161 | 330.00 美元 | 2 | 北 | Jessie | 2016 年 7 月 2 日 |
| 4 | 车轮 | W-24 | 20.50 美元 | 4 | 西 | Beth | 2016 年 3 月 1 日 |
| 5 | 面板 | P-034 | 6.00 美元 | 4 | 北 | Devyn | 2016 年 3 月 15 日 |
| 6 | 面板 | P-052 | 11.50 美元 | 7 | 东 | Erik | 2016 年 5 月 16 日 |
| 7 | Frame | FR-0B1 | 34.00 美元 | 8 | 东 | Hannah | 2016 年 3 月 12 日 |
| 8 | 车轮 | W-24 | 20.50 美元 | 11 | 南 | Sheldon | 2016 年 4 月 30 日 |
过滤条件
The
FilterCriteria
对象决定了在基本过滤条件或
过滤视图中显示或隐藏哪些电子表格数据。每个过滤条件都取决于特定列中的值。您以映射的形式提供过滤条件,其中键是列索引,值是过滤条件。
对于使用布尔值
condition指定的过滤条件,
该条件必须为 true 才能显示值。该条件不会
替换
hiddenValues。
如果某个值列在 hiddenValues 下,则该值的所有匹配项仍会被隐藏。
以下代码示例展示了过滤条件映射:
{
0: {
'hiddenValues': ['Panel']
},
6: {
'condition': {
'type': 'DATE_BEFORE',
'values': {
'userEnteredValue': '4/30/2016'
}
}
}
}
当应用于销售数据示例时,此过滤条件仅显示 “商品类别”列值不是“面板”且“发货 日期”列值早于“2016 年 4 月 30 日”的行。
| A | B | C | D | E | F | G | |
| 1 | 商品类别 | 型号 | 费用 | 数量 | 区域 | 销售人员 | 发货日期 |
| 2 | 车轮 | W-24 | 20.50 美元 | 4 | 西 | Beth | 2016 年 3 月 1 日 |
| 3 | 门 | D-01X | 15.00 美元 | 2 | 南 | Amir | 2016 年 3 月 15 日 |
| 4 | Frame | FR-0B1 | 34.00 美元 | 8 | 东 | Hannah | 2016 年 3 月 12 日 |
过滤视图代码示例
以下代码示例展示了如何创建过滤视图、复制该视图,然后 使用销售数据示例更新复制的版本。