#python #google-sheets-api
#python #google-sheets-api
Вопрос:
Итак, я пытаюсь обновить значения в электронной таблице Google Sheets, и по какой-то причине, когда я использую этот spreadsheets.values.update
метод, значение, которое я пытаюсь заполнить, округляется.
пример
sheet = service.spreadsheets()
value = [[myfunction(), 10, 123]]
body = {'values': value}
result = sheet.values().update(spreadsheetId=SPREADSHEET_ID,
range=RANGE_NAME,
valueInputOption='RAW',
body=body).execute()
Где myfunction()
возвращает целое число. В качестве примера будет использоваться целое 1212650293435022848
число .
Лист обновляется, но заполненные значения
[1212650293435023000, 10, 123]
вместо
[1212650293435022848, 10, 123]
Это проблема с моим кодом или это что-то из самого API?
Комментарии:
1. Я считаю, что электронные таблицы Google используют удвоения внутри. Он не поддерживает большие целые числа. Я почти уверен, что это не ваша вина, и вы мало что можете сделать.
2. Спасибо за информацию, Фрэнк! Я, вероятно, подожду других ответов, чтобы быть уверенным, но я буду работать с учетом этого предположения.
Ответ №1:
Соображения
Большие целые числа в настоящее время не поддерживаются в электронных таблицах Google. Это ограничение в его числовых форматах.
Возможный обходной путь
Вы можете использовать пользовательские функции Apps Script для работы с большими целыми числами в строковом формате:
Благодаря тому, что Apps Script работает с JavaScript, вы можете разбирать строки на большие целые числа с помощью конструктора BigInt() .
Ссылка
Ответ №2:
BigInt также изменяет число, например, с 6836735342561722374 на 6836735342561722368.
Ответ №3:
В конце я сделал так, чтобы целое число преобразовывалось в строку перед отправкой в электронную таблицу. Таким образом, потерь не было, и мне не пришлось использовать BigInt() .