【问题标题】:Modify multiple cells in the same row at once with google sheets API使用 google sheet API 一次修改同一行中的多个单元格
【发布时间】:2020-10-24 10:48:09
【问题描述】:

我正在使用 Google Sheets API BatchUpdate() Endpoint 来修改给定电子表格中特定单元格的背景颜色。

现在的问题是我发送的请求只更新了一个单元格,我无法找到一个解决方案来一次更新一整行(我的工作表中每行大约有 22 个单元格)

我正在使用的请求正文是这个:

request = [{
"updateCells": {
    "range":  {
        "sheetId":          sheet_id,
        "startRowIndex":    20,
        "endRowIndex":      21,
        "startColumnIndex": 1,
        "endColumnIndex":   8
    },
    "rows":   [
        {
            "values": [{
                "userEnteredFormat": {
                    "backgroundColor": {
                        "red":   1,
                        "green": 1,
                        "blue":  0,
                        "alpha": 1.0,  # this parameter is not working properly in the API
                    }}}
            ]
        }
    ],
    "fields": 'userEnteredFormat.backgroundColor',
}}]

rows和columns参数中显示的值由于对其进行了一些测试而有些随意。

发出请求的 Python 代码:

response = service.spreadsheets().batchUpdate(spreadsheetId=SPREADSHEET_ID, body=body).execute()

这里的问题是,Google Sheets API 限制了用户能够提出的请求数量,因此可能需要大约 3 分钟的过程需要 3 小时。

关于如何更新请求正文的任何​​想法?也许我错过了什么。

【问题讨论】:

    标签: google-sheets google-api google-sheets-api spreadsheet


    【解决方案1】:

    我相信你的目标和情况如下。

    • 您要修改行中单元格的背景颜色。
      • 在您的脚本中,您希望将“B”列中的单元格修改为工作表列的末尾。
    • 您希望使用 googleapis 和 python 来实现此目的。
    • 您已经能够使用 Sheets API 为 Google 电子表格获取和输入值。

    在这种情况下,我想建议在 batchUpdate 方法中使用 RepeatCellRequest。当你的脚本被修改后,变成如下。

    修改脚本:

    request = [{
        "repeatCell": {
            "range":  {
                "sheetId": sheet_id,
                "startRowIndex": 20,
                "endRowIndex": 21,
                "startColumnIndex": 1,
                # "endColumnIndex":   8
            },
            "cell": {
                "userEnteredFormat": {
                    "backgroundColor": {
                        "red":   1,
                        "green": 1,
                        "blue":  0,
                        "alpha": 1.0,
                    }}},
            "fields": 'userEnteredFormat.backgroundColor',
        }}]
    
    • 在这种情况下,当不使用endColumnIndex 时,背景颜色会从startColumnIndex 的单元格修改到工作表上的列末尾。
    • 使用"endColumnIndex": 8时,将“B”列的背景颜色修改为“H”。

    参考:

    【讨论】:

    • 这正是我想要的。 Google Sheets API 不是最好的,请求 wiki 也很混乱。谢谢!
    • @Julian 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多