提问者:小点点

"收到的JSON有效载荷无效。在Python中使用Google Sheet APIv4 batchUpdate()时,未知名称范围位于data[0]


我遵循指南中的参考代码--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')))

然而,错误msg似乎表明参数'范围'是未知的?


共1个答案

匿名用户

  • 您正试图传递到范围和范围数组,而该方法要求每个项目有一个范围,corect请求将是:
 "data": [
    {
      "range1": "",
      "values1": []
    },
    {
      "range2": "",
      "values2": []
    }
  ]
  • 您使用None表示空值-相反,您需要在逗号之间留出一个空格:1,2,4(或者将None换行到中,如果您想将其作为字符串传递
  • JSON对象需要双引号而不是单引号表示符和范围符号

我建议您在将其实现到Python中之前,使用trythisapi特性测试您的请求语法。