【问题标题】:Python + Google Sheet | How to Update specific cellsPython + 谷歌表 |如何更新特定单元格
【发布时间】:2021-03-27 06:56:41
【问题描述】:

我正在学习如何使用 Google Sheet API 和 Python。

首先,我需要更新 Google 表格中的特定单元格,而不是一系列单元格。

我可以使用 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()

感谢任何指导!

【问题讨论】:

    标签: python google-sheets google-sheets-api batch-updates


    【解决方案1】:

    spreadsheets.values.update 是用于更新单个范围的方法。

    范围可以是工作表中的单个单元格,也可以是工作表中的一组相邻单元格。

    以下是有效范围的示例:

    • Sheet1!A1:B2 指的是 Sheet1 前两行中的前两个单元格。

    • Sheet1!A:A 引用 Sheet1 第一列中的所有单元格。

    • Sheet1!1:2指的是Sheet1前两行的所有单元格。

    • Sheet1!A5:A 引用 Sheet 1 第一列的所有单元格,从第 5 行开始。

    • A1:B2 指的是第一个可见工作表顶部两行中的前两个单元格。

    • 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

    【讨论】:

    • 我明白了。这将只需要一个写入请求?
    • @user2741620 - 是的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多