GSpread APIException:“‘data[0].values[0]’处的值无效”

问题描述 投票:0回答:1

我正在尝试使用 gspread API,我之前在数组中使用它没有任何问题,但现在当我尝试使用 Numpy 数组时,我得到“'data[0].values[0]'处的值无效” API 异常。 在我的代码片段中,maturities_1 是一个由浮点数组成的 numpy 数组

sh = gc.open_by_key('API_KEY_HERE')
tempWorksheet = sh.worksheet(SomeSheetName)

strengths_1 = np.round(maturities_1, 3).astype(float).tolist()

tempWorksheet.batch_update([{
      'range': 'D3:D'+str(len(strengths_1)+2),
      'values': strengths_1,
    }])

然后,它抛出这个异常。

Traceback (most recent call last):
  File "/home/pekabex/termopara/server.py", line 1131, in <module>
    calculateStrength(args)
  File "/home/pekabex/termopara/server.py", line 808, in calculateStrength
    tempWorksheet.batch_update([{
  File "/usr/local/lib/python3.9/dist-packages/gspread/utils.py", line 705, in wrapper
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/gspread/worksheet.py", line 1205, in batch_update
    response = self.spreadsheet.values_batch_update(body=body)
  File "/usr/local/lib/python3.9/dist-packages/gspread/spreadsheet.py", line 220, in values_batch_update
    r = self.client.request("post", url, params=params, json=body)
  File "/usr/local/lib/python3.9/dist-packages/gspread/client.py", line 93, in request
    raise APIError(response)
gspread.exceptions.APIError: {'code': 400, 'message': "Invalid value at 'data[0].values[0]' (type.googleapis.com/google.protobuf.ListValue), 0.769\nInvalid value at 'data[0].values[1]' (type.googleapis.com/google.protobuf.ListValue), 1.748\nInvalid value at 'data[0].values[2]' (type.googleapis.com/google.protobuf.ListValue), 1.758\nInvalid value at 'data[0].values[3]' (type.googleapis.com/google.protobuf.ListValue), 1.806\nInvalid value at 'data[0].values[4]' (type.googleapis.com/google.protobuf.ListValue), 1.806\nInvalid value at 'data[0].values[5]' (type.googleapis.com/google.protobuf.ListValue), 1.873\nInvalid value at 'data[0].values[6]' (type.googleapis.com/google.protobuf.ListValue), 1.921\nInvalid value at 'data[0].values[7]' (type.googleapis.com/google.protobuf.ListValue), 1.969\nInvalid value at 'data[0].values[8]' (type.googleapis.com/google.protobuf.ListValue), 2.007\nInvalid value at 'data[0].values[9]' (type.googleapis.com/google.protobuf.ListValue), 2.055\nInvalid value at 'data[0].values[10]' (type.googleapis.com/google.protobuf.ListValue), 2.103\nInvalid value at 'data[0].values[11]' (type.googleapis.com/google.protobuf.ListValue), 2.15\nInvalid value at 'data[0].values[12]' (type.googleapis.com/google.protobuf.ListValue), 2.198\nInvalid value at 'data[0].values[13]' (type.googleapis.com/google.protobuf.ListValue), 2.302\nInvalid value at 'data[0].values[14]' (type.googleapis.com/google.protobuf.ListValue), 2.349\nInvalid value at 'data[0].values[15]' (type.googleapis.com/google.protobuf.ListValue), 2.359\nInvalid value at 'data[0].values[16]' (type.googleapis.com/google.protobuf.ListValue), 2.406\nInvalid value at 'data[0].values[17]' (type.googleapis.com/google.protobuf.ListValue), 2.406", 'status': 'INVALID_ARGUMENT', 'details': [{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'data[0].values[0]', 'description': "Invalid value at 'data[0].values[0]' (type.googleapis.com/google.protobuf.ListValue), 0.769"}, {'field': 'data[0].values[1]', 'description': "Invalid value at 'data[0].values[1]' (type.googleapis.com/google.protobuf.ListValue), 1.748"}, {'field': 'data[0].values[2]', 'description': "Invalid value at 'data[0].values[2]' (type.googleapis.com/google.protobuf.ListValue), 1.758"}, {'field': 'data[0].values[3]', 'description': "Invalid value at 'data[0].values[3]' (type.googleapis.com/google.protobuf.ListValue), 1.806"}, {'field': 'data[0].values[4]', 'description': "Invalid value at 'data[0].values[4]' (type.googleapis.com/google.protobuf.ListValue), 1.806"}, {'field': 'data[0].values[5]', 'description': "Invalid value at 'data[0].values[5]' (type.googleapis.com/google.protobuf.ListValue), 1.873"}, {'field': 'data[0].values[6]', 'description': "Invalid value at 'data[0].values[6]' (type.googleapis.com/google.protobuf.ListValue), 1.921"}, {'field': 'data[0].values[7]', 'description': "Invalid value at 'data[0].values[7]' (type.googleapis.com/google.protobuf.ListValue), 1.969"}, {'field': 'data[0].values[8]', 'description': "Invalid value at 'data[0].values[8]' (type.googleapis.com/google.protobuf.ListValue), 2.007"}, {'field': 'data[0].values[9]', 'description': "Invalid value at 'data[0].values[9]' (type.googleapis.com/google.protobuf.ListValue), 2.055"}, {'field': 'data[0].values[10]', 'description': "Invalid value at 'data[0].values[10]' (type.googleapis.com/google.protobuf.ListValue), 2.103"}, {'field': 'data[0].values[11]', 'description': "Invalid value at 'data[0].values[11]' (type.googleapis.com/google.protobuf.ListValue), 2.15"}, {'field': 'data[0].values[12]', 'description': "Invalid value at 'data[0].values[12]' (type.googleapis.com/google.protobuf.ListValue), 2.198"}, {'field': 'data[0].values[13]', 'description': "Invalid value at 'data[0].values[13]' (type.googleapis.com/google.protobuf.ListValue), 2.302"}, {'field': 'data[0].values[14]', 'description': "Invalid value at 'data[0].values[14]' (type.googleapis.com/google.protobuf.ListValue), 2.349"}, {'field': 'data[0].values[15]', 'description': "Invalid value at 'data[0].values[15]' (type.googleapis.com/google.protobuf.ListValue), 2.359"}, {'field': 'data[0].values[16]', 'description': "Invalid value at 'data[0].values[16]' (type.googleapis.com/google.protobuf.ListValue), 2.406"}, {'field': 'data[0].values[17]', 'description': "Invalid value at 'data[0].values[17]' (type.googleapis.com/google.protobuf.ListValue), 2.406"}]}]}

我找不到关于这个问题的任何信息。有什么帮助吗? 我确实知道这不是范围的错,数组本身似乎也是有效的。

python numpy google-sheets google-sheets-api gspread
1个回答
0
投票

虽然我不确定是否能正确理解你当前的问题,但是下面的修改如何?

来自:

tempWorksheet.batch_update([{
      'range': 'D3:D'+str(len(strengths_1)+2),
      'values': strengths_1,
    }])

致:

tempWorksheet.batch_update([{
    'range': 'D3',
    'values': [strengths_1],
}])
  • 从你的错误消息中,我猜测

    strengths_1
    可能是一个一维数组。在这种情况下,它需要是一个二维数组。

  • 并且,当您想要放入“D3”中的值时,在这种情况下,您只能使用“D3”。

  • 并且,当运行此修改后的脚本时,

    strengths_1
    的值将从“D3”作为行方向放置。

  • 如果您想将“D3”中的值作为列方向,请修改如下。

    tempWorksheet.batch_update([{
        'range': 'D3',
        'values': [strengths_1],
        'majorDimension': 'COLUMNS',
    }])
    
  • 如果修改后的脚本运行时出现错误,能否提供

    strengths_1
    的示例值?借此,我想确认一下。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.