API Google Sheets добавляет апостроф - PullRequest
2 голосов
/ 30 сентября 2019

Я использовал этот код API Google Sheets в течение нескольких месяцев в Python для добавления данных в электронную таблицу, но он недавно сломался. Кто-нибудь может увидеть, что с этим не так?

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 Ответ

2 голосов
/ 01 октября 2019
  • Вы хотите поместить значения 2019-9-1 и 41 в электронную таблицу в качестве объекта даты и числа соответственно.
    • В текущей ситуации результат становится таким, как '2019-9-1 и '41.
  • Вы хотите добиться этого с помощью google-api-python-client с Python.

Если мое понимание верно, как насчет этой модификации?

Проблема:

Я думаю, что причина вашей проблемы связана с 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, официальный документ гласит следующее.

    Значения будут проанализированы, как если бы пользователь ввел их в пользовательский интерфейс. Числа останутся как числа, но строки могут быть преобразованы в числа, даты и т. Д. В соответствии с теми же правилами, которые применяются при вводе текста в ячейку через пользовательский интерфейс Google Sheets.

Ссылки:

Если янеправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...