如何使用Python中的Google Sheets API更新多个合并单元格?

2024-04-16 04:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用GoogleSheetsAPIv4(无gspread)使用Python批处理多个合并单元格来更新(使用空白信息)。我有以下代码:

blank = setValue("") <----- I set a variable with no data to delete all the info that the cell can contains
dataBlank = [
        ...
        {
            'range': 'AB83',
            'values': blank
        }
        {
            'range': 'BH75:BH82', # <------- I think here is the problem
            'values': blank
        } ...
    ]

body = {
        'valueInputOption': value_input_option,
        'data': dataBlank
    }
result = service.spreadsheets().values().batchUpdate(spreadsheetId=registro_id, body=body).execute()
print('{0} celdas borradas - Registro'.format(result.get('totalUpdatedCells')))

def setValue(value):
    rvalue = [value]
    avalue = [rvalue]
    return avalue

它运行,但在工作表中它只更新范围的第一个单元格,而整个范围不更新。 我尝试使用'range' : 'BH75:BH82''range' : 'Sheet1!BH75:BH82',但无法更新整个范围。我需要使用批量更新,因为我需要检查性能,并且不超过谷歌云的报价限制

我认为:

I get this

只更新第一个单元格。如果我将单个单元格更新为没有范围的合并单元格,效果很好,但如果我使用范围进行更新,则不起作用


Tags: thedatavaluerangebodyresultvaluesblank
1条回答
网友
1楼 · 发布于 2024-04-16 04:35:59

我相信你的目标如下

  • 您希望使用方法:spreadsheets.values.batchUpdate in Sheets API将zero放入Google电子表格第一个选项卡中的单元格BH75:BH82
  • 您希望通过使用googleapis和python来实现这一点

对于这个问题,这个答案如何

修改点:

  • 在Sheets API中的方法:spreadsheets.values.batchUpdate的情况下,当您要将值放入单元格BH75:BH82时,它必须是"values":[["sample"],["sample"],["sample"],["sample"],["sample"],["sample"],["sample"],["sample"]]
  • 在脚本中使用"values":[["sample"]]。这样,该值仅被放入第一个单元格。我想这就是你的问题所在

修改的脚本:

修改脚本时,请按以下方式修改

发件人:
'range': 'BH75:BH82',
'values': zero
致:
'range': 'BH75:BH82',
'values': [[value],[value],[value],[value],[value],[value],[value],[value]]
  • 不幸的是,从您的脚本中,我无法理解zero。所以我用value作为变量。如果您想将value声明为"",则将其置为空
  • 这是一个简单的修改。当然,您也可以使用脚本创建[[value],[value],[value],[value],[value],[value],[value],[value]]

注:

  • 如果您想给许多单元格赋值,那么Sheets API中batchUpdate方法的RepeatCellRequest可能会很有用Ref

参考资料:

相关问题 更多 >