有没有办法用 gspread 更新 google 工作表过滤器视图范围?
Is there a way to update google sheets filter view ranges with gspread?
我有一个 google sheet,其中包含多个过滤器视图,其范围跨越整个电子表格(范围:A1:D)因为目前有 9 行数据,过滤视图的范围设置为 A1:D9。我定期使用带有 gspread 库的 python 脚本添加到这个 spreadsheet,因此,我必须手动更新过滤器视图的范围以包含 spreadsheet 的新大小.
有没有办法通过代码做到这一点?我发现了各种关于它的帖子,暗示了这样一个功能,但没有代码片段可供我学习。我自己尝试调查这个问题涉及 运行 我的脚本,通过调试我的 IDE 来尝试找到我的 spreadsheet 对象的任何属性,该对象包含任何类型的存储过滤器视图的变量但是我找不到任何东西。
我所要求的可能吗?
我最终通过查看 gspread 库之外的内容找到了这个问题的答案。 Google张APIv4最后有答案:
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery
scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_name('creds.json', scope)
service = discovery.build('sheets', 'v4', credentials=credentials)
update_filter_view_request = {
'updateFilterView': {
'filter': {
'filterViewId': filter_view_id,
'range': {"sheetId": '''tab id goes here''',
"startRowIndex": 0, # 0 is A
"endRowIndex": 3, # 3 is D
"startColumnIndex": 0,
"endColumnIndex": '''updated range value'''}
},
'fields': {
'paths': ['*']
}
}
}
service.spreadsheets().batchUpdate(spreadsheetId='''spreadsheet ID goes here''', body={'requests': [update_filter_view_request]}).execute()
我最终将部分上述代码放入了来自
的方法信息中
resp = service.spreadsheets().get(spreadsheetId=sheet_id).execute()
插入循环并获取我有兴趣更新的所有选项卡和过滤器视图的 ID。希望这对某人有用,因为它困扰了我好久!
我有一个 google sheet,其中包含多个过滤器视图,其范围跨越整个电子表格(范围:A1:D)因为目前有 9 行数据,过滤视图的范围设置为 A1:D9。我定期使用带有 gspread 库的 python 脚本添加到这个 spreadsheet,因此,我必须手动更新过滤器视图的范围以包含 spreadsheet 的新大小.
有没有办法通过代码做到这一点?我发现了各种关于它的帖子,暗示了这样一个功能,但没有代码片段可供我学习。我自己尝试调查这个问题涉及 运行 我的脚本,通过调试我的 IDE 来尝试找到我的 spreadsheet 对象的任何属性,该对象包含任何类型的存储过滤器视图的变量但是我找不到任何东西。
我所要求的可能吗?
我最终通过查看 gspread 库之外的内容找到了这个问题的答案。 Google张APIv4最后有答案:
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient import discovery
scope = ['https://spreadsheets.google.com/feeds']
credentials = ServiceAccountCredentials.from_json_keyfile_name('creds.json', scope)
service = discovery.build('sheets', 'v4', credentials=credentials)
update_filter_view_request = {
'updateFilterView': {
'filter': {
'filterViewId': filter_view_id,
'range': {"sheetId": '''tab id goes here''',
"startRowIndex": 0, # 0 is A
"endRowIndex": 3, # 3 is D
"startColumnIndex": 0,
"endColumnIndex": '''updated range value'''}
},
'fields': {
'paths': ['*']
}
}
}
service.spreadsheets().batchUpdate(spreadsheetId='''spreadsheet ID goes here''', body={'requests': [update_filter_view_request]}).execute()
我最终将部分上述代码放入了来自
的方法信息中resp = service.spreadsheets().get(spreadsheetId=sheet_id).execute()
插入循环并获取我有兴趣更新的所有选项卡和过滤器视图的 ID。希望这对某人有用,因为它困扰了我好久!