&引用;接收到无效的JSON负载。“未知名称”;“范围”;at';数据[0]'&引用;在Python中使用Google Sheet APIv4 batchUpdate()时

&引用;接收到无效的JSON负载。“未知名称”;“范围”;at';数据[0]'&引用;在Python中使用Google Sheet APIv4 batchUpdate()时,python,google-sheets-api,Python,Google Sheets Api,我遵循了指南中的参考代码--。但是,我在调用batchUpdate()时收到错误“接收到无效的JSON有效负载。未知名称“范围”位于“数据[0]”:Proto字段未重复,无法启动列表 对可能出现的问题以及如何修复有何建议 # Preparing data to be written back to sheet data = [ { 'range': range_name, 'values': values }, ] body = { 'v

我遵循了指南中的参考代码--。但是,我在调用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()
“正文”的内容=

从指南上看

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')))
然而,错误消息似乎表明参数“范围”未知?

有几点:
  • 您正试图传递到
    范围
    和范围数组,而该方法要求每个项目有一个范围,corect请求将是:
  • 使用
    None
    表示空值-相反,您需要在逗号之间留一个空格:
    1,2,4
    (或者如果要将其作为字符串传递,请将
    None
    括在
  • JSON对象需要双引号
    而不是单引号
    表示符和范围符号
我建议您在实现到Python中之前,使用该功能测试您的请求语法。

以下几点:
  • 您正试图传递到
    范围
    和范围数组,而该方法要求每个项目有一个范围,corect请求将是:
  • 使用
    None
    表示空值-相反,您需要在逗号之间留一个空格:
    1,2,4
    (或者如果要将其作为字符串传递,请将
    None
    括在
  • JSON对象需要双引号
    而不是单引号
    表示符和范围符号

我建议您在实现Python之前使用该功能测试您的请求语法。

请在问题中直接包含代码和小样本数据,请参见此处如何创建。请在问题中直接包含代码和小样本数据,请参见此处如何创建。
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')))
 "data": [
    {
      "range1": "",
      "values1": []
    },
    {
      "range2": "",
      "values2": []
    }
  ]