python - 谷歌表格方法:电子表格.get ...如何获取字段?
问题描述
我正在尝试在backgroundColor
工作表上获取特定范围的所有内容。它在 json 中嵌套得很深。
似乎您不能只用 get 指定一个字段。https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get
因此,您必须获取网格数据并浏览 json。
那是对的吗?这是唯一的方法吗?我必须遍历每个rowData
andvalues
吗?
response = service.spreadsheets().get(spreadsheetId=key, ranges=range_, includeGridData=True).execute()
response.get('sheets')[0].get('data')[0].get('rowData')[0]["values"]
解决方案
如果是我,那么循环也是我的选择,因为它可以让我精细控制我想要获取哪些字段,并且如果需要还可以提取不同类型的数据。就您而言,如果backgroundColor
您愿意,那么这应该对您有用。
样本数据:
代码:
# fetching A1:B2 range
rowData = response['sheets'][0]['data'][0]['rowData']
for row in rowData:
for values in row['values']:
print(values['userEnteredFormat']['backgroundColor'])
输出:
笔记:
您也可以尝试添加fields
参数以仅backgroundColor
在响应中获取:
response = service.spreadsheets().get(spreadsheetId=key, ranges=range_, includeGridData=True, fields="sheets/data/rowData/values/userEnteredFormat/backgroundColor").execute()
回复:
使用时fields
,您可以进一步预处理您的数据(例如扁平化 json),但我怀疑您是否会需要它。安全且简单的方法是事后使用循环。
推荐阅读
- php - 通过表单发送后 Yii 丢失文件
- ios - 开始录制视频时 Swift 文件 URL 为零
- python-2.7 - 如何使用 Python 从文件中绘制图形,线的连接问题
- javascript - 为什么我的 ajax 请求重复来自 Laravel 控制器的相同数据?
- c# - 为什么在方法之外的类中不允许对象赋值
- bash - shell脚本的含义: grep 'vagrant@node' ~/.ssh/authorized_keys &>/dev/null
- javascript - React Native Component 不会在状态更改时重新渲染
- r - 将因子级别转换为列名而不更改 data.frame 的结构
- mysql - 无法从另一个 docker 容器连接到在 docker 中运行的 mysql
- javascript - 确定字符串是否具有来自数组的至少 2 个相同元素