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()

输出:

参考:

batchUpdate()

A1 Notation