Google Sheets python api - 如何在保留 sheet 格式的同时将值写入 sheet?

Google Sheets python api - how to write values to sheet while preserving sheet formatting?

当我使用 spreadsheets.values.update 将数据写入 sheet 时,覆盖单元格中现有的 sheet 格式被清除。

request = sheet.values().update(spreadsheetId=spreadsheet_ID, range="Sheet1!A2", valueInputOption="USER_ENTERED", body={"values": retrievedData}).execute()

有没有办法保留 sheet 的格式,并且基本上只将值写入值?

显然我可以将值写入其他一些工作sheet,然后在我想要的工作中引用这些值sheet,但是如果我可以直接完成 objective,那将更可取。

您可以尝试将 valueInputOption"USER_ENTERED" 更改为 "RAW"

request = sheet.values().update(spreadsheetId=spreadsheet_ID, range="Sheet1!A2", valueInputOption="RAW", body={"values": retrievedData}).execute()

 

当我看到你的问题时,我认为你的情况可能与有关(但是,这个帖子是针对Node.js的)。如果我的理解是正确的,针对你的问题,我提出如下修改。

在这个修改中,首先,检索sheet中所有单元格的单元格格式。在输入 retrievedData 的值后,检索到的单元格格式将反映到 sheet。通过这种方式,将保留放置值之前的单元格格式。当这反映到您的脚本中时,它会变成如下。

修改后的脚本:

发件人:

request = sheet.values().update(spreadsheetId=spreadsheet_ID, range="Sheet1!A2", valueInputOption="USER_ENTERED", body={"values": retrievedData}).execute()

收件人:

spreadsheet_ID = "###" # Please set the Spreadsheet ID.
sheetName = 'Sheet1' # Please set the sheet name. In your script, it's "Sheet1".
retrievedData = [[,,,]] # Please set your value.

obj = sheet.get(spreadsheetId=spreadsheet_ID, ranges=sheetName, fields='sheets(data(rowData(values(userEnteredFormat))),properties(sheetId))').execute()

request = sheet.values().update(spreadsheetId=spreadsheet_ID, range=sheetName + "!A2", valueInputOption="USER_ENTERED", body={"values": retrievedData}).execute()

body = {
    "requests": [
        {
            "updateCells": {
                "rows": obj['sheets'][0]['data'][0]['rowData'],
                "range": {"sheetId": obj['sheets'][0]['properties']['sheetId']},
                "fields": "userEnteredFormat"
            }
        }
    ]
}
resp = sheet.batchUpdate(spreadsheetId=spreadsheet_ID, body=body).execute()

参考文献: