Python + Google Sheet |如何更新特定单元格
Python + Google Sheet | How to Update specific cells
我正在学习如何使用 Google Sheet API 和 Python。
首先,我需要更新 Google Sheet 中的特定单元格,而不是单元格范围。
我可以使用 update_cell(),但每次更新都会占用一个写入请求,这不是最优的。
sheet_ELCSV.update_cell(str(x),1,OH_row_Side)
sheet_ELCSV.update_cell(str(x),str(PairA_Idx),str(OH_row_Executed))
sheet_ELCSV.update_cell(str(x+1),1,"Fee")
sheet_ELCSV.update_cell(str(x+1),11,str(Sum_Fee))
我阅读了有关 spreadsheets().values().update() 和 batchUpdate 的开发人员指南。如果我没记错的话,他们只接受 1 个写请求。
但是我不知道如何更新特定的单元格。
ssName = sheet_ELCSV.title + '!'
cell_range = 'A2,B2,D2,A3,K3'
values = (
('Sell','-2.17','27760.0476'),
('Fee', '-2.38285229')
)
value_range = {
'majorDimension' : 'ROWS',
'values': values
}
service.spreadsheets().values().update(
spreadsheetId = ssID,
valueInputOption = 'USER_ENTERED',
range = ssName + cell_range,
body = value_range
).execute()
感谢任何指导!
spreadsheets.values.update
是一种用于更新单个范围的方法。
范围可以是 sheet 中的单个单元格或 sheet 中的一组相邻单元格。
以下是有效范围的示例:
Sheet1!A1:B2 指的是 Sheet1 前两行的前两个单元格。
Sheet1!A:A指的是Sheet1.[=16第一列的所有单元格=]
Sheet1!1:2指的是Sheet1前两行的所有单元格。
Sheet1!A5:A指的是Sheet1第一列的所有单元格,从第5行开始继续。
A1:B2指第一个可见的前两行的前两个单元格sheet.
Sheet1指的是Sheet1.
中的所有单元格
Sheet1!A1指的是Sheet1
的A1单元格
要一次更新多个范围,您可以使用batchUpdate()
:
试试下面的代码:
batch_update_values_request_body = {
"valueInputOption": "RAW",
"data": [
{
'range': 'Sheet1!A2',
'values': [['Sell']]
},
{
'range': 'Sheet1!B2',
'values': [['-2.17']]
},
{
'range': 'Sheet1!D2',
'values': [['27760.0476']]
},
{
'range': 'Sheet1!A3',
'values': [['Fee']]
},
{
'range': 'Sheet1!K3',
'values': [['-2.38285229']]
},
]
}
service.spreadsheets().values().batchUpdate(
spreadsheetId=spreadsheet_id,
body=batch_update_values_request_body
).execute()
输出:
参考:
我正在学习如何使用 Google Sheet API 和 Python。
首先,我需要更新 Google Sheet 中的特定单元格,而不是单元格范围。
我可以使用 update_cell(),但每次更新都会占用一个写入请求,这不是最优的。
sheet_ELCSV.update_cell(str(x),1,OH_row_Side)
sheet_ELCSV.update_cell(str(x),str(PairA_Idx),str(OH_row_Executed))
sheet_ELCSV.update_cell(str(x+1),1,"Fee")
sheet_ELCSV.update_cell(str(x+1),11,str(Sum_Fee))
我阅读了有关 spreadsheets().values().update() 和 batchUpdate 的开发人员指南。如果我没记错的话,他们只接受 1 个写请求。 但是我不知道如何更新特定的单元格。
ssName = sheet_ELCSV.title + '!'
cell_range = 'A2,B2,D2,A3,K3'
values = (
('Sell','-2.17','27760.0476'),
('Fee', '-2.38285229')
)
value_range = {
'majorDimension' : 'ROWS',
'values': values
}
service.spreadsheets().values().update(
spreadsheetId = ssID,
valueInputOption = 'USER_ENTERED',
range = ssName + cell_range,
body = value_range
).execute()
感谢任何指导!
spreadsheets.values.update
是一种用于更新单个范围的方法。
范围可以是 sheet 中的单个单元格或 sheet 中的一组相邻单元格。
以下是有效范围的示例:
Sheet1!A1:B2 指的是 Sheet1 前两行的前两个单元格。
Sheet1!A:A指的是Sheet1.[=16第一列的所有单元格=]
Sheet1!1:2指的是Sheet1前两行的所有单元格。
Sheet1!A5:A指的是Sheet1第一列的所有单元格,从第5行开始继续。
A1:B2指第一个可见的前两行的前两个单元格sheet.
Sheet1指的是Sheet1.
中的所有单元格Sheet1!A1指的是Sheet1
的A1单元格
要一次更新多个范围,您可以使用batchUpdate()
:
试试下面的代码:
batch_update_values_request_body = {
"valueInputOption": "RAW",
"data": [
{
'range': 'Sheet1!A2',
'values': [['Sell']]
},
{
'range': 'Sheet1!B2',
'values': [['-2.17']]
},
{
'range': 'Sheet1!D2',
'values': [['27760.0476']]
},
{
'range': 'Sheet1!A3',
'values': [['Fee']]
},
{
'range': 'Sheet1!K3',
'values': [['-2.38285229']]
},
]
}
service.spreadsheets().values().batchUpdate(
spreadsheetId=spreadsheet_id,
body=batch_update_values_request_body
).execute()
输出: