猿问

无法在 Python 中将范围插入到 Google 表格中

我有带数据的数组,

table_data = [["11"],["22"]],[["33"],["44"]] 我想使用 sheet.values().update 将此数据插入到 Google 表格中,但是使用 GridRange,没有命名范围,我可以解决这个问题:


service = build('sheets', 'v4', credentials=creds())

    sheet = service.spreadsheets()

    body = {'values': values}

    SAMPLE_RANGE_NAME_2 = 'costs!A1:B2'

    value_input_option = 'RAW'

    result = sheet.values().update(

        spreadsheetId=SAMPLE_SPREADSHEET_ID, range=SAMPLE_RANGE_NAME_2, valueInputOption=value_input_option, body=body).execute()

但它不方便使用范围 A1:B2。我想用这样的东西


'startColumnIndex': 0,

'endColumnIndex': 1,

'startRowIndex': 0,

'endRowIndex': 1

我尝试为此使用batchUpdate,但它只能接受字符串参数


spreadsheet_id = SPREADSHEET_ID  # TODO: Update placeholder value.


batch_update_spreadsheet_request_body = {

        "requests": [

            {

                "pasteData": {

                    "data": str(table_data),

                    "type": "PASTE_NORMAL",

                    "delimiter": ",",

                    "coordinate": {

                        "sheetId": 0,

                        "rowIndex": 0,

                        "columnIndex": 0

                    }

                }

            }

        ]

    }

request = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=batch_update_spreadsheet_request_body)

response = request.execute()


动漫人物
浏览 129回答 1
1回答

ITMISS

您想使用 GridRange 放置值。您想table_data = [["11"],["22"]],[["33"],["44"]]用作值。我认为如果你想把值放在 2 行和 2 列,它变成table_data = [["11", "22"], ["33", "44"]]. 所以我用了这个。如果要将11、22、33和44分别放入A1、B1、A2和B2,就变成了table_data = [["11", "22"], ["33", "44"]]。如果要将11、22、33和44分别放入A1、A2、B1和B2,就变成了table_data = [["11", "33"], ["22", "44"]]。如果我的理解是正确的,那么使用batchUpdate的“updateCells”而不是“pasteData”的方法怎么样?我认为针对您的情况有几种解决方案。因此,请将此视为其中之一。修改后的脚本:spreadsheet_id = SPREADSHEET_IDsheetId = 0table_data = [["11", "33"], ["22", "44"]]  # or table_data = [["11", "22"], ["33", "44"]]rows = [{'values': [{'userEnteredValue': {'stringValue': f}} for f in e]} for e in table_data]rng = {'sheetId': sheetId, 'startRowIndex': 0, 'startColumnIndex': 0}fields = 'userEnteredValue'body = {'requests': [{'updateCells': {'rows': rows, 'range': rng, 'fields': fields}}]}request = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body=body)response = request.execute()将值放入 后A1:B2,您可以设置左上角单元格的坐标。所以在这种情况下,GridRange 变成{'sheetId': sheetId, 'startRowIndex': 0, 'startColumnIndex': 0}笔记:如果要使用table_data = [["11"], ["22"]], [["33"], ["44"]],请修改rows为rows = [{'values': [{'userEnteredValue': {'stringValue': f[0]}} for f in e]} for e in table_data]。
随时随地看视频慕课网APP

相关分类

Python
我要回答