Python google sheets api过滤器功能不工作?

Python google sheets api过滤器功能不工作?,python,filter,google-sheets-api,Python,Filter,Google Sheets Api,我正在尝试使用以下示例使过滤器适用于Google sheets API4: 他们的示例工作表链接无效,因此我在此处创建了自己的链接:。它是共享的 当我在网站上运行他们提供的代码时,工作表完全不起任何作用。这是我的密码。我只添加了前3行 import custom spreadsheet_id = '1kT4UU-jvFj273psdJ_fQz5xUP1Xv3Mg9zrs9U2ydM0g' g = custom.APIv4() # builds service my_range = {

我正在尝试使用以下示例使过滤器适用于Google sheets API4:

他们的示例工作表链接无效,因此我在此处创建了自己的链接:。它是共享的

当我在网站上运行他们提供的代码时,工作表完全不起任何作用。这是我的密码。我只添加了前3行

import custom
spreadsheet_id = '1kT4UU-jvFj273psdJ_fQz5xUP1Xv3Mg9zrs9U2ydM0g'
g = custom.APIv4()  # builds service

my_range = {
    'sheetId': 0,
    'startRowIndex': 0,
    'startColumnIndex': 0,
}
addFilterViewRequest = {
    'addFilterView': {
        'filter': {
            'title': 'Sample Filter',
            'range': my_range,
            'sortSpecs': [{
                'dimensionIndex': 3,
                'sortOrder': 'DESCENDING'
            }],
            'criteria': {
                0: {
                    'hiddenValues': ['Panel']
                },
                6: {
                    'condition': {
                        'type': 'DATE_BEFORE',
                        'values': {
                            'userEnteredValue': '4/30/2016'
                        }
                    }
                }
            }
        }
    }
}

body = {'requests': [addFilterViewRequest]}
addFilterViewResponse = g.service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()

duplicateFilterViewRequest = {
    'duplicateFilterView': {
        'filterId':
            addFilterViewResponse['replies'][0]['addFilterView']['filter']
            ['filterViewId']
    }
}

body = {'requests': [duplicateFilterViewRequest]}
duplicateFilterViewResponse = g.service.spreadsheets() \
    .batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()

updateFilterViewRequest = {
    'updateFilterView': {
        'filter': {
            'filterViewId': duplicateFilterViewResponse['replies'][0]
            ['duplicateFilterView']['filter']['filterViewId'],
            'title': 'Updated Filter',
            'criteria': {
                0: {},
                3: {
                    'condition': {
                        'type': 'NUMBER_GREATER',
                        'values': {
                            'userEnteredValue': '5'
                        }
                    }
                }
            }
        },
        'fields': {
            'paths': ['criteria', 'title']
        }
    }
}

body = {'requests': [updateFilterViewRequest]}
updateFilterViewResponse = g.service.spreadsheets() \
    .batchUpdate(spreadsheetId=spreadsheet_id, body=body).execute()

在该示例中,有3个请求:

首先,addFilterViewRequest将addFilterViewResponse作为响应

第二个是第一个的副本: duplicateFilterViewRequest与响应duplicateFilterViewResponse

第三个是带有响应updateFilterViewResponse的updateFilterViewRequest

该示例当然不会返回任何内容,但它确实创建了过滤器,如果您打开电子表格并在“数据->过滤器视图”菜单中找到它们,您会发现它们按您指定的名称列出

但您也可以将以下内容添加到正在使用的代码中:

返回addFilterViewResponse 因此,这将为您打印第一个过滤器的完整响应

返回addFilterViewResponse['replies'][0]['addFilterView']['filter']['FilterWebId'] 这将为您首先创建的过滤器提供FilterWebID,如果您希望看到它的运行,可以执行以下操作:

在哪里 您的\u电子表格\u ID 您的GID可以是0,也可以是您在链接中找到的电子表格的GID。 FilterWebID是你刚得到的号码

我希望这能澄清您的疑问。

我明白了,我觉得我有点混淆了过滤器和过滤器视图。。。我希望它应用一个过滤器。数据->过滤器视图你会发现它们按你给它们的名称列出,以及如何使用API应用它?