我正在尝试使用此处的示例https://developers.google.com/sheets/api/guides/filters使该过滤器适用于Google表格API4。
指向他们的示例工作表的链接不起作用,因此我在此处创建了自己的示例:https://docs.google.com/spreadsheets/d/1kT4UU-jvFj273psdJ_fQz5xUP1Xv3Mg9zrs9U2ydM0g/edit#gid=0。它是共享的。
当我运行他们在网站上提供的代码时,工作表绝对不执行任何操作。这是我的代码。我只添加了前三行。
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()
答案 0 :(得分:1)
在该示例中,有3个请求:
首先,addFilterViewRequest
以addFilterViewResponse
作为响应。
第二个是第一个的重复:
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
是您刚得到的电话号码。
我希望这可以澄清您的疑问。