为了账号安全,请及时绑定邮箱和手机立即绑定

收到无效的 JSON 负载。在 Python 中使用 Google Sheet APIv4

收到无效的 JSON 负载。在 Python 中使用 Google Sheet APIv4

UYOU 2023-01-04 16:43:20

我遵循了指南中的参考代码 - https://developers.google.com/sheets/api/guides/values。但是,当我调用 batchUpdate() 时,我收到错误消息“收到无效的 JSON 负载。‘数据 [0]’ 处的未知名称‘范围’:Proto 字段不重复,无法启动列表”。


关于什么可能是错误的以及如何解决它的任何建议?


# Preparing data to be written back to sheet

data = [

    {

        'range': range_name,

        'values': values

    },

]


body = {

    'valueInputOption': "USER_ENTERED",

    'data': data,

}


request = service.spreadsheets().values().batchUpdate(spreadsheetId=SPREADSHEET_ID, body=body)

response = request.execute()

“身体”的内容=


{'valueInputOption': 'USER_ENTERED',

 'data': [{'range': ['!B251:I251', '!B252:I252', '!B254:I254', '!B256:I256'],

   'values': "[['2020-06-04', 2, '123456789098765421abcdefg', '', 'test1', 1, None, 1], ['2020-06-04', 1, '123456789098765421abcdefg', '', 'test2', -1, None, 1], ['2020-06-04', 2, '123456789098765421abcdefg', '', 'test1', 3, None, 1], ['2020-06-04', 1, '123456789098765421abcdefg', '', 'test9', 4, None, 1]]"}]}

我的代码


从指南中,


values = [

    [

        # Cell values ...

    ],

    # Additional rows

]

data = [

    {

        'range': range_name,

        'values': values

    },

    # Additional ranges to update ...

]

body = {

    'valueInputOption': value_input_option,

    'data': data

}

result = service.spreadsheets().values().batchUpdate(

    spreadsheetId=spreadsheet_id, body=body).execute()

print('{0} cells updated.'.format(result.get('totalUpdatedCells')))

然而,错误消息似乎表明参数“范围”未知?


查看完整描述

1 回答

?
白猪掌柜的

TA贡献1640条经验 获得超9个赞

几件事:

您正在尝试传递range范围和范围数组,而该方法期望每个项目有一个范围,正确的请求将是:

 "data": [

    {

      "range1": "",

      "values1": []

    },

    {

      "range2": "",

      "values2": []

    }

  ]

您使用None空值 - 相反,您需要在逗号之间留一个空格:(1,2, ,4如果您想将其作为字符串传递,则None用引号引起来"

JSON 对象需要双引号"而不是单引号'来表示值和范围符号

我建议您在实施到 Python 之前使用试用此 API功能测试您的请求语法。


查看完整回答
反对 回复 2023-01-04

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信