Я изучаю, как использовать 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))
Я прочитал руководство для разработчиков по электронным таблицам().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
— это метод, используемый для обновления одного диапазона.
Диапазон может быть отдельной ячейкой на листе или группой смежных ячеек на листе.
Вот пример допустимых диапазонов:
Sheet1!A1:B2 относится к первым двум ячейкам в двух верхних строках Sheet1.
Sheet1!A:A относится ко всем ячейкам в первом столбце Sheet1.
Лист1!1:2 относится ко всем ячейкам в первых двух строках Листа1.
Sheet1!A5:A относится ко всем ячейкам первого столбца Листа 1, начиная со строки 5.
A1:B2 относится к первым двум ячейкам в двух верхних строках первого видимого листа.
Sheet1 относится ко всем ячейкам в Sheet1.
Sheet1!A1 относится к ячейке A1 листа Sheet1.
Чтобы обновить сразу несколько диапазонов, вы можете использовать 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()
Выход:
@ user2741620 - Да
Я понимаю. Это займет только один запрос на запись?