Google Sheets API附加多余的撇号

时间:2019-09-30 18:53:08

标签: python google-sheets-api

几个月来,我一直在Python中使用此Google Sheets API代码将数据追加到电子表格,但最近它坏了。谁能看到这有什么问题吗?

body = {'values': [['2019-9-1', '41']]}
result = service.spreadsheets().values().append(spreadsheetId=SPREADSHEET_ID,valueInputOption='RAW', body=body, range='A:Z').execute()

它创建像这样的单元格,每个单元格值前都有一个撇号:

+----+-----------+-----+
|    |     A     |  B  |
+----+-----------+-----+
| 33 | '2019-9-1 | '41 |
+----+-----------+-----+

这是结果:

{'spreadsheetId': 'xxxxxxxxx', 'tableRange': 'data!A1:U32', 'updates': {'spreadsheetId': 'xxxxxxxxxx', 'updatedRange': 'data!A33:B33', 'updatedRows': 1, 'updatedColumns': 2, 'updatedCells': 2}}

1 个答案:

答案 0 :(得分:2)

  • 您要将2019-9-141的值分别作为日期对象和数字放入电子表格。
    • 在当前情况下,结果变得像'2019-9-1'41
  • 您想通过python的google-api-python-client实现它。

如果我的理解是正确的,那么该修改如何?

问题:

我认为您遇到问题的原因是valueInputOption='RAW'。将RAW设置为valueInputOption时,正式文档如下。

  

用户输入的值将不会被解析,并会按原样存储。

通过这种方式,将2019-9-141作为字符串类型。因此'被添加到字符的顶部。

解决方案:

为了将2019-9-141的值作为日期对象和数字,请进行如下修改。

从:
result = service.spreadsheets().values().append(spreadsheetId=SPREADSHEET_ID,valueInputOption='RAW', body=body, range='A:Z').execute()
至:
result = service.spreadsheets().values().append(spreadsheetId=SPREADSHEET_ID,valueInputOption='USER_ENTERED', body=body, range='A:Z').execute()
  • USER_ENTERED设置为valueInputOption时,官方文档说明如下。

      

    将解析这些值,就像用户在UI中键入它们一样。数字将保留为数字,但字符串可能会转换为数字,日期等,遵循通过Google表格用户界面在单元格中输入文本时所应用的相同规则。

参考文献:

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