【发布时间】:2020-02-27 00:17:02
【问题描述】:
我尝试查看类似问题的答案,但无法使代码正常工作。我无法理解如何在列表中填充类似字典的 gspread。
下面是我要导出的数据结构:
sheet_data = [{
"timestamp": "09-04-2019",
"value": "10.0",
"company_name": "Xbox",
"product": "Buy"
},
{
"timestamp": "09-03-2019",
"value": "2.0",
"company_name": "something",
"product": "Sell"
}]
以下是我已经尝试过并且现在可以使用的方法。我剩下的问题是,我手动输入 cell_range = worksheet.range('A2:D3'),我该怎么做才能将工作表更新为给定数据可用的任何单元格。由于我在 sheet_data 中的数据量会在以后的更新中发生变化。
header = ['timestamp', 'value', 'company_name', 'product']
worksheet.add_rows(len(sheet_data))
cell_range = worksheet.range('A2:D3')
flat_sheet_data = []
for row in sheet_data:
for column in header:
flat_sheet_data.append(row[column])
for i, cell in enumerate(cell_range):
cell.value = flat_sheet_data[i]
worksheet.update_cells(cell_range)
链接到我想使用上述数据结构在电子表格上完成的图像:https://i.stack.imgur.com/EQLEI.png
【问题讨论】:
-
我可以问你关于你的问题吗?关于
my data structure that I want to export:,您想从Google 电子表格中检索值作为sheet_data的对象吗?但是在您的脚本中,似乎“A2:C10”的范围已更新。那我能问一下你的目标吗?顺便说一句,您能否提供您期望的示例电子表格和示例结果值?我认为这将帮助用户思考解决方案。当然,请删除您的个人信息。顺便问一下,您是否已经能够使用 gspread 获取和放置电子表格的值? -
@tanaike 是的,我已经可以将值放在电子表格上,使用上面的脚本,它会用“x”填充某些行。我想更新或将上述数据结构推送到谷歌表中。我还附上了一张我想做的图片。
-
感谢您回复并添加更多信息。您已经能够使用 gspread。你想把
sheet_data放到电子表格中。我可以这样理解。我的理解正确吗?如果我的理解是正确的,我还有一个问题。当我看到你的图片和sheet_data时,电子表格的标题和sheet_data的键似乎不同。这个怎么样? -
@tanaike 是的,您正确理解了一切。标题不同,我想保留我已经在 googlesheet 中定义的标题,但如果需要,我可以将 sheet_data 中的密钥用作标题。
-
为什么要将
row(即代表一行的整个字典)分配给cell.value?你不应该改为cell.value = row['value']并遍历需要value的行吗?然后对其他行做同样的事情,而不是一次做整个块。或者,或者,只需有 4 个赋值语句,按顺序将正确的值分配给正确的单元格 - 但这会有点混乱。
标签: python dictionary google-sheets google-sheets-api gspread