【问题标题】:google sheets api filter feature not working?谷歌表格 api 过滤器功能不起作用?
【发布时间】:2019-11-20 14:01:57
【问题描述】:

我正在尝试使用此处的示例使过滤器适用于 Google 表格 API4:https://developers.google.com/sheets/api/guides/filters

他们的示例表的链接不起作用,所以我在这里创建了自己的:https://docs.google.com/spreadsheets/d/1kT4UU-jvFj273psdJ_fQz5xUP1Xv3Mg9zrs9U2ydM0g/edit#gid=0。它是共享的。

当我运行他们在网站上提供的代码时,工作表完全没有任何作用。这是我的代码。我只添加了前 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()

【问题讨论】:

    标签: python filter google-sheets-api


    【解决方案1】:

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

    首先,addFilterViewRequestaddFilterViewResponse 作为响应。

    第二个是第一个的重复: duplicateFilterViewRequest 回复 duplicateFilterViewResponse

    第三个是updateFilterViewRequest,回复updateFilterViewResponse

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

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

        return addFilterViewResponse
    

    所以这将为您打印第一个过滤器的完整响应

        return addFilterViewResponse['replies'][0]['addFilterView']['filter']['filterViewId']
    

    这将为您提供您首先创建的过滤器的 filterViewId,如果您想查看它的实际效果,您可以执行以下操作:

    https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID/edit#gid=YOUR_GID&fvid=FILTERVIEWID

    在哪里 YOUR_SPREADSHEET_ID YOUR_GID 可以是 0 或电子表格的 GID,您可以在链接中找到它。 FILTERVIEWID 是你刚刚得到的号码。

    我希望这能澄清你的疑虑。

    【讨论】:

    • 我明白了,我觉得我有点混淆了filterfilter view...我期待它应用过滤器。
    • Data --> Filter Views you'll find them listed by the name you've given to them 以及如何使用API​​?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2019-10-19
    • 2015-07-04
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多