如何从 Google Sheets API 获取原始数字

Yis*_*ski 2 google-sheets-api

我有一个简单的函数,可以从谷歌表格中获取数据。

例如https://sheets.googleapis.com/v4/spreadsheets/{MYSHEET}/values/Sheet1!A1:D5

我在那里有一个包含长数字的字段,谷歌会自动以科学计数法显示该字段,例如 1.234E+8。

我不介意它在表格中的显示方式,因为它从未直接使用过。但在我的 API 调用中,我必须能够获得原始/原始数字。

这是如何实现的?

附言。更改工作表用户界面中的格式可能会有所帮助,但这有两个问题:

  1. 每张表中的每个字段都需要进行两次或三次工作,而不是在获取数据的代码中进行修复。
  2. 我尝试使用它进行测试,但它似乎还通过更改原始“数据隐藏”来破坏现有数据。而不仅仅是显示值。所以我无论如何也不能走那条路。

更新

我张贴了样本表。这是我用来下载的完整 URL:

https://sheets.googleapis.com/v4/spreadsheets/1pSQ4W0GV85Z-6QrUx0UxVA3VCSHE3x93BT3c-R6mHZk/values/表单响应 1!A1:AZ1000?valueRenderOption=UNFORMATTED_VALUE

但返回的结果json是错误的,如下:

{
  "range": "'Form Responses 1'!A1:F103",
  "majorDimension": "ROWS",
  "values": [
    [
      "cc"
    ],
    [
      4.3668413379866e+15
    ],
    [
      4.14809933325943e+15
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 6

从您的端点来看,我认为您可能在Sheets API中使用spreadsheets.values.get方法。如果我的理解是正确的,那么在您的情况下,如何使用查询参数valueRenderOption?当你的端点被修改后,它会变成如下所示。

修改后的端点:

https://sheets.googleapis.com/v4/spreadsheets/{MYSHEET}/values/Sheet1!A1:D5?valueRenderOption=UNFORMATTED_VALUE
Run Code Online (Sandbox Code Playgroud)

本次修改增加了查询参数valueRenderOption=UNFORMATTED_VALUE

参考:

添加:

当我看到你更新的问题时,你的值似乎是 16 位数字。在 Sheets API 中,15 位数字可以视为十进制数。当数字大于 15 位时,如,则检索1000000000000000的值。1e+15当我使用电子表格.values.get、电子表格.values.batchGet 和电子表格.get 方法对此进行测试时,获得了相同的结果。当我看到你的电子表格4.3668413379866e+154.14809933325943e+15检索时。

幸运的是,当我使用 Google Apps 脚本的电子表格服务对此进行测试时,我注意到可以检索4366841337986600和 的值。4148099333259430因此,作为一种解决方法,我想提出以下流程。

用法:

1. 创建一个新的 Google Apps 脚本项目。

Web Apps 的示例脚本是 Google Apps 脚本。因此,请创建一个 Google Apps 脚本项目。

如果您想直接创建,请访问https://script.new/。在这种情况下,如果您尚未登录 Google,则会打开登录屏幕。所以请登录谷歌。这样,Google Apps 脚本的脚本编辑器就打开了。

2. 示例脚本。

请将以下脚本复制并粘贴到创建的 Google Apps 脚本项目中并保存。该脚本用于 Web 应用程序。

https://sheets.googleapis.com/v4/spreadsheets/{MYSHEET}/values/Sheet1!A1:D5?valueRenderOption=UNFORMATTED_VALUE
Run Code Online (Sandbox Code Playgroud)

3. 部署 Web 应用程序。

详细信息可以看官方文档

  1. 在脚本编辑器中,请在脚本编辑器的右上角单击“单击部署”->“新建部署”。
  2. 请点击“选择类型”->“Web App”。
  3. 请在“部署配置”下的字段中输入有关Web应用程序的信息。
  4. 请为“执行为”选择“我”
    • 这就是这个解决方法的重要性。
  5. 请为“谁有权访问”选择“任何人”
    • 在这种情况下,用户不需要使用访问令牌。所以请将此作为测试用例。
    • 当然,您也可以使用访问令牌访问您的 Web 应用程序。请查看这份报告
  6. 请点击“部署”按钮。
  7. 复制 Web 应用程序的 URL。就像是https://script.google.com/macros/s/###/exec

4. 测试。

为了测试此 Web 应用程序,请通过将其替换为您的 Web 应用程序 URL 来访问以下端点。

https://script.google.com/macros/s/###/exec?id=1pSQ4W0GV85Z-6QrUx0UxVA3VCSHE3x93BT3c-R6mHZk&range=Form%20Responses%201!A2:A3
Run Code Online (Sandbox Code Playgroud)

当浏览器访问该端点时,会得到以下结果。

[
  [4366841337986600],
  [4148099333259430]
]
Run Code Online (Sandbox Code Playgroud)

笔记:

参考: