几个月来,我一直在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}}
答案 0 :(得分:2)
2019-9-1
和41
的值分别作为日期对象和数字放入电子表格。
'2019-9-1
和'41
。如果我的理解是正确的,那么该修改如何?
我认为您遇到问题的原因是valueInputOption='RAW'
。将RAW
设置为valueInputOption
时,正式文档如下。
用户输入的值将不会被解析,并会按原样存储。
通过这种方式,将2019-9-1
和41
作为字符串类型。因此'
被添加到字符的顶部。
为了将2019-9-1
和41
的值作为日期对象和数字,请进行如下修改。
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表格用户界面在单元格中输入文本时所应用的相同规则。
如果我误解了您的问题,而这不是您想要的结果,我深表歉意。