Python gspread,如何填充 google sheet,列表中的字典
Python gspread, how to populate google sheet, dictionaries within list
我尝试查看类似问题的答案,但无法使代码正常工作。我无法理解如何在列表中填充相似词典的 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 更新为可用的任何单元格给定的数据。由于我在 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)
link 到我想在 spreedsheet 上使用上面的数据结构完成的图像:https://i.stack.imgur.com/EQLEI.png
- 您想将
sheet_data
放入电子表格。
- 您已经能够使用带有 gspread 的表格 API 获取和放置值。
- 从你的headers图像中
sheet_data
、"Date"、"Company_Name"、"Traffic"和"Product"对应的是"timestamp"、"company_name"、"value" 和 "product"。
我能像上面那样理解。如果我的理解是正确的,那么这个答案呢?请将此视为几个可能的答案之一。
流量:
该示例脚本的流程如下。
- 准备
header_to_key
.
- 创建用于放入电子表格的列表。
- 使用
values_append
的方法放入创建的列表。
示例脚本:
在你运行脚本之前,请设置变量。
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
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"
}]
header_to_key = {
'Date': 'timestamp',
'Company_Name': 'company_name',
'Traffic': 'value',
'Product': 'product'
}
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
worksheet = spreadsheet.worksheet(sheetName)
headers = worksheet.row_values(1)
put_values = []
for v in sheet_data:
temp = []
for h in headers:
temp.append(v[header_to_key[h]])
put_values.append(temp)
spreadsheet.values_append(sheetName, {'valueInputOption': 'USER_ENTERED'}, {'values': put_values})
注:
- 在此示例脚本中,假设 "Date"、"Company_Name"、"Traffic" 和 "Product" 的 headers 设置为电子表格,如您的图片。
参考:
下面的方法对我有用
gc = gspread.authorize(credentials)
sh = gc.open_by_url("url of the sheet")
ws = sh.worksheet(ws_title)
records = json.loads(sheet_data)
keys = [str(eachvalue) for eachvalue in records.keys()]
values = [str(eachvalue) for eachvalue in records.values()]
Data =[{'range': 'A1:D1','values': [keys],}, {'range': 'A2:D2','values': [values],}]
ws.batch_update(Data);
我尝试查看类似问题的答案,但无法使代码正常工作。我无法理解如何在列表中填充相似词典的 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 更新为可用的任何单元格给定的数据。由于我在 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)
link 到我想在 spreedsheet 上使用上面的数据结构完成的图像:https://i.stack.imgur.com/EQLEI.png
- 您想将
sheet_data
放入电子表格。 - 您已经能够使用带有 gspread 的表格 API 获取和放置值。
- 从你的headers图像中
sheet_data
、"Date"、"Company_Name"、"Traffic"和"Product"对应的是"timestamp"、"company_name"、"value" 和 "product"。
我能像上面那样理解。如果我的理解是正确的,那么这个答案呢?请将此视为几个可能的答案之一。
流量:
该示例脚本的流程如下。
- 准备
header_to_key
. - 创建用于放入电子表格的列表。
- 使用
values_append
的方法放入创建的列表。
示例脚本:
在你运行脚本之前,请设置变量。
spreadsheetId = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
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"
}]
header_to_key = {
'Date': 'timestamp',
'Company_Name': 'company_name',
'Traffic': 'value',
'Product': 'product'
}
client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
worksheet = spreadsheet.worksheet(sheetName)
headers = worksheet.row_values(1)
put_values = []
for v in sheet_data:
temp = []
for h in headers:
temp.append(v[header_to_key[h]])
put_values.append(temp)
spreadsheet.values_append(sheetName, {'valueInputOption': 'USER_ENTERED'}, {'values': put_values})
注:
- 在此示例脚本中,假设 "Date"、"Company_Name"、"Traffic" 和 "Product" 的 headers 设置为电子表格,如您的图片。
参考:
下面的方法对我有用
gc = gspread.authorize(credentials)
sh = gc.open_by_url("url of the sheet")
ws = sh.worksheet(ws_title)
records = json.loads(sheet_data)
keys = [str(eachvalue) for eachvalue in records.keys()]
values = [str(eachvalue) for eachvalue in records.values()]
Data =[{'range': 'A1:D1','values': [keys],}, {'range': 'A2:D2','values': [values],}]
ws.batch_update(Data);