当前位置: 首页 > 知识库问答 >
问题:

使用google sheets API一次修改同一行中的多个单元格

谷梁楚青
2023-03-14

我正在使用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',
}}]

行和列参数中显示的值有点任意,因为对它进行了一些测试。

包含请求的Python代码:

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

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

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

共有1个答案

史骏祥
2023-03-14

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

  • 您想要修改一行中单元格的背景颜色。
    • 从您的脚本中,您想要修改列B中的单元格到工作表列的末尾。

    在这种情况下,我建议在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的单元格修改到工作表上的列末尾
    • 重复请求

 类似资料:
  • 问题内容: 我试图弄清楚如何使用argparser执行以下操作: 本身是一个子命令。我的目标是使脚本具有链接一系列子命令(成为其中一个命令)并按顺序执行它们的能力。在上面的示例中,它将执行构建,然后设置环境,然后再次执行构建。如何使用argparse完成此操作?我尝试了以下方法: 但是,似乎每次执行此操作时,它都会进入子命令并报告它不知道是什么。我尝试解析额外的内容,以便可以执行重复调用/链,但是

  • 我对谷歌表单和电子表格非常陌生,我想做的是,我的表单中有一个“年龄”问题,当用户提交表单时,我想要它,这样,如果年龄低于18岁,一个单元格就会得到值“MINOR”,如果是18岁或以上,就会用“MAJOR”填充。 基本上,我想根据“AGE”的值动态地为这个单元格添加一个值。 我现在正在做的是: 其中,是值次要/主要的单元格。

  • 问题内容: 我想运行一些命令,直到按Ctrl-C才会退出。是否可以运行一次即可运行所有这些程序,而Ctrl-C会全部退出它们?他们可以共享终端输出。 具体来说,我有罗盘编译器,coffeescript编译器和一个自定义命令,用于监视文件更改,所有命令都在运行以监视文件更改。我不想为每个命令加载一个终端。 问题答案: 该bash脚本适用于N个并行线程。每个参数都是一个命令。 捕获SIGINT时将杀死

  • 问题内容: 我有这个,在设定的总数时我得到一个错误。为什么我不能多次访问CTE? 问题答案: A基本上是一次性视图。它只保留一个语句,然后自动消失。 您的选择包括: 重新定义第二次。从定义的末尾到您的之前,这就像复制粘贴一样简单。 将结果放入表格或变量中 将结果具体化为真实表并引用 稍微更改一下即可,只需从您的CTE: 。

  • 问题内容: 例如,我有两个变量,以及如何仅使用一个变量而不将类型转换为来在单独的行中打印两个整数。(如在C ++以下:) 问题答案: 在python3中: 在python2中: …或者使用python3的打印 自从我的第一个答案以来,OP就使用可变类型更改来编辑问题。更新已更新问题的答案: 如果您有一些整数,即和: Python 3: Python 2: 要么 要么

  • 我有一个非常简单的问题。我想在熊猫数据帧的给定行的给定列中更改一个值。我尝试通过以下方式完成: 结果,我得到以下警告: 我对这个警告的解释是,通过使用列名称()和我实际上无法访问(引用)数据帧的所需单元格。相反,我创建了一个对象,它是“单元格”对象的副本,然后尝试更改与该“副本对象”关联的值。 我不明白的是,它似乎有效。尽管pandas给我写信说我试图修改副本,但我确实修改了原始数据帧。 我的问题