如何从Google Sheets API获取原始数值而非科学计数法返回结果
Google Sheets API获取长数字原始值解决方案
方案1:调整API请求参数
将请求URL中的valueRenderOption参数取值从UNFORMATTED_VALUE替换为STRING,API会直接返回所有单元格值的原始字符串格式,不会对数值做科学计数法转换。
修改后的请求示例:https://sheets.googleapis.com/v4/spreadsheets/1pSQ4W0GV85Z-6QrUx0UxVA3VCSHE3x93BT3c-R6mHZk/values/Form%20Responses%201!A1:AZ1000?valueRenderOption=STRING
该方案不需要修改Sheets端任何配置,不会影响原有数据。
方案2:代码侧批量转换
如果不方便调整API请求参数,可在拉取数据后对返回的科学计数法数值做统一转换,不同语言实现逻辑一致,以下为Python示例代码:
import decimal def sci_num_to_str(num): if isinstance(num, float) and 'e' in str(num).lower(): return format(decimal.Decimal(str(num)), 'f') return str(num) # 批量处理返回的二维数组 raw_values = [ ["cc"], [4.3668413379866e+15], [4.14809933325943e+15] ] processed_values = [[sci_num_to_str(cell) for cell in row] for row in raw_values]
补充说明
如果你的长数字位数超过16位,Google Sheets存储数值类型时会自动丢失末尾精度,这类场景建议后续录入新数据时,在长数字前加单引号'强制存储为字符串类型,API拉取时可直接拿到完整的原始值,不会触发精度丢失问题。
内容的提问来源于stack exchange,提问作者Yisroel M. Olewski
相关产品推荐
相关产品推荐

