我有一个Google工作表,其中包含多个过滤器视图,其范围跨整个Spreadseet(范围:A1:D)。由于当前有9行数据,因此过滤器视图的范围设置为A1:D9。我经常使用带有gspread库的python脚本将其添加到此电子表格中,因此,我必须手动更新过滤器视图的范围以包含电子表格的新大小。
有没有办法通过代码做到这一点?我发现了很多有关此功能的文章,但没有代码片段可供我学习。我自己尝试调查此问题的过程涉及在IDE上通过调试运行脚本,以尝试找到电子表格对象的任何属性,该属性包含存储过滤器视图的任何类型的变量,但我找不到任何东西。
我要的可能吗?
答案 0 :(得分:0)
通过查看gspread库之外的内容,最终我找到了答案。 Google Sheets API v4最终给出了答案:
row.getValuesMap(fieldNames)
我最终将上述代码的一部分放入
的方法信息中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()
插入循环并获取我有兴趣更新的所有选项卡和filterviews的ID。希望这对某人有用,因为它使我困扰了好多年!