几个月来,我一直在 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}}
最佳答案
- 您想将
2019-9-1
和41
的值分别作为日期对象和数字放入电子表格。- 在当前情况下,结果变成类似
'2019-9-1
和'41
。
- 在当前情况下,结果变成类似
- 您想使用 google-api-python-client 和 Python 来实现它。
如果我的理解是正确的,这个修改怎么样?
问题:
我认为您的问题的原因是 valueInputOption='RAW'
。当RAW
设置为valueInputOption
时,官方文档是这样说的。
The values the user has entered will not be parsed and will be stored as-is.
这样,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
时,官方文档是这样说的。The values will be parsed as if the user typed them into the UI. Numbers will stay as numbers, but strings may be converted to numbers, dates, etc. following the same rules that are applied when entering text into a cell via the Google Sheets UI.
引用资料:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
关于python - Google Sheets API 附加额外的撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58173687/