使用 gspread 在电子表格中复制并粘贴格式

问题描述 投票:0回答:1

想要复制谷歌表格中特定单元格的格式并将其粘贴到不同的单元格中。使用batch_update来执行此操作,但出现以下错误:

错误 - 值[“范围”] = Absolute_range_name(self.title, 值[“范围”]) ~~~~~~^^^^^^^^^ 类型错误:字符串索引必须是整数,而不是“str”

gc, authorized_user = gspread.oauth_from_dict(credentials, authorized_user)
sh = gc.open('temp_sheet')

worksheet = sh.worksheet('Sheet1')

paste_type = "PASTE_FORMAT"
body = {
    "requests": [
        {
            "copyPaste": {
                "source": {
                    "sheetId": worksheet.id,
                    "startRowIndex": 0,
                    "endRowIndex": 30,
                    "startColumnIndex": 0, 
                    "endColumnIndex": 1,
                },
                "destination": {
                    "sheetId": worksheet.id,
                    "startRowIndex": 0,  # Row index in destination sheet
                    "endRowIndex": 30,  # Row index (exclusive)
                    "startColumnIndex": 2,  # Column index in destination sheet
                    "endColumnIndex": 3,  # Column index (exclusive)
                },
                "pasteType": paste_type,
            }
        }
    ],
}

worksheet.batch_update(body)

输出- 值[“范围”] = Absolute_range_name(self.title, 值[“范围”]) ~~~~~~^^^^^^^^^ 类型错误:字符串索引必须是整数,而不是“str”

python google-sheets-api gspread gspread-formatting
1个回答
0
投票

当我看到你显示的请求体时,我认为需要使用

batch_update
的方法
classgspread.spreadsheet.Spreadsheet
Ref但是,在你的脚本中,我猜你使用了
batch_update
的方法
classgspread.worksheet.Worksheet
参考我猜这就是您当前问题的原因
Output- values["range"] = absolute_range_name(self.title, values["range"]) ~~~~~~^^^^^^^^^ TypeError: string indices must be integers, not 'str'
。为了解决这个问题,请修改如下,然后再次测试。

来自:

worksheet.batch_update(body)

致:

sh.batch_update(body)
© www.soinside.com 2019 - 2024. All rights reserved.