GoogleSheets API:“接收到无效的JSON有效负载。'data.values[0]'处的未知名称“ Number”:找不到字段

时间:2020-02-21 16:25:49

标签: python google-sheets google-api google-sheets-api gspread

我正在尝试将一个电子表格的内容复制到另一个电子表格中,但是错误不断弹出。 您能帮忙弄清楚为什么不将数据从一张纸复制到另一张纸吗? 这是我在原始工作表中正在尝试的虚拟数据:

CriteriaQuery<Departement> criteriaQuery = criteriaBuilder.createQuery(Departement.class);
Root<Departement> entityRoot = criteriaQuery.from(Departement.class);

Root<Region> regionRoot = criteriaQuery.from(Region.class);

ParameterExpression<String> parameter = criteriaBuilder.parameter(String.class, "firstParameter");

List<Predicate> predicates = new ArrayList<Predicate>();
Expression<String> regionExp = regionRoot.<String>get("libelle");
predicates.add(criteriaBuilder.like(regionExp, parameter));

criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()])));

TypedQuery<Departement> jpqlQuery = entityManager.createQuery(criteriaQuery);
jpqlQuery.setParameter("firstParameter", "%" + fr+ "%");

List<Departement> totalResults = jpqlQuery.getResultList();

目标表的外观如下:

1   CHANGED London 
2   5   Budapest
3   4   Prague
4   11  Madrid
4   11  Madrid

这是我收到的错误的一部分:

2   5   Budapest
2   5   Budapest
2   5   Budapest

这是脚本:

Invalid JSON payload received. Unknown name "Weather" at 'data.values[0]': Cannot find field.
Invalid JSON payload received. Unknown name "City" at 'data.values[0]': Cannot find field.
Invalid JSON payload received. Unknown name "Number" at 'data.values[1]': Cannot find field.
Invalid JSON payload received. Unknown name "Weather" at 'data.values[1]': Cannot find field.
Invalid JSON payload received. Unknown name "City" at 'data.values[1]': Cannot find field.
Invalid JSON payload received. Unknown name "Number" at 'data.values[2]': Cannot find field.

1 个答案:

答案 0 :(得分:0)

这个答案怎么样?

在您的脚本中,由LT_data = LT.get_all_records()检索的值将用于Sheets API中电子表格.values.append方法的请求主体。在LT_data的情况下,检索到的值为JSON对象。但是请求主体的values必须是二维数组。我认为您的错误消息的原因是这样的。

为了避免此错误,如何进行以下修改?

修改后的脚本:

修改脚本后,请进行以下修改。

从:
LT_data = LT.get_all_records()
至:
LT_data = LT.get_all_values()
  • get_all_values()检索的值是二维数组。因此,在这种情况下,它可以用于body = {'values': LT_data}

注意:

  • 此答案假设您已经能够使用gspread和googleapis for python通过服务帐户获取和放置Google Spreadsheet的值。
  • 对于您来说,client.open("LetsTry")spreadsheetId = 'xyz'的电子表格必须能够通过服务帐户进行访问。请注意这一点。

参考文献:

如果我误解了你的问题,而这不是你想要的结果,我深表歉意。