Google 工作表 API:从 public sheet 读取单个单元格值

Google Sheets API: Read single cell value from public sheet

我正在尝试使用 PHP/JS 为 WordPress 编写一个简单的插件。该插件只有一个 objective,用于创建一个小部件。对于那些不熟悉 WordPress 插件实现的人来说,它并不太复杂——我可以像往常一样使用 JS/PHP。因此,就此问题而言,单个 PHP/HTML 文件可能会给出我正在寻找的答案。

我有一个可公开访问的 Sheet,共享设置如下:

我现在只想检索单个工作表上单个单元格的值。工作表名为 Live Summary,单元格为 E20

我已经使用 oAuth 2.0 身份验证完成了这项工作。但是,我不希望用户必须进行身份验证才能看到此信息。

我希望我的网站始终显示此单元格的值,就好像它是网站的一个功能,或者就好像我是从安装了 WordPress 的 MySQL 数据库中提取它一样。

我从 Google Sheets API 中读到过有关使用某些 GET 端点的信息,但对于我来说,我什至不知道从哪里开始,如果我我没有使用 oAuth 令牌。

有人可以 a) 告诉我这是否可行,如果可行,b) 指出正确的入门方向吗?

最好使用 JavaScript - 但我也可以应付 PHP。

以下是如何在没有 OAuth 的情况下使其工作。

1) 向网络上的所有人展示您的 sheet public。 (正如您已经拥有的那样。)

2) 发布:在 Google 表格 UI 中,导航至文件 > 在网络上发布...

3) 选择类型 Link、整个文档、网页,然后单击发布。

之后您可以(仍然)使用 https://developers.google.com/sheets/api/v3/worksheets 中记录的遗留 API 来访问您的数据。

访问数据的URL格式为:

https://spreadsheets.google.com/feeds/<WHAT_KIND_OF_DATA>/<YOUR_SHEET_KEY>/<YOUR_SPREADSHEET_SHEET:)>/public/full?alt=json

因此,例如,我发布的 sheet 的数据(仅包含 E20 的文本 "I'm E20")可以在以下位置找到:

https://spreadsheets.google.com/feeds/cells/1TbMrtJl01i-Q5YudlhdAB_E1LTYkkLswnql5LHyiIuk/1/public/full?alt=json

还有仅发布数据子集的选项,这可能更适合您。但我希望这能让你前进。

编辑:后续步骤:

下一个问题可能是 CORS。您可以使用例如绕过它JSON-P。这是一个完全有效的 JSON-P 解决方案,用于在我的 sheet:

上加载 E20 单元格的内容
<html>
<body>
  <pre id='data'></pre>
</body>
<script>
  const onDataLoaded = (data) => {
    const e20Content = data.feed.entry.find((entry) => entry.title.$t == 'E20').content.$t
    document.getElementById('data').innerHTML = e20Content
  }
</script>
<script src="https://spreadsheets.google.com/feeds/cells/1TbMrtJl01i-Q5YudlhdAB_E1LTYkkLswnql5LHyiIuk/1/public/basic?alt=json-in-script&callback=onDataLoaded"></script>
</html>

多年来我一直成功地使用这种方法,但现在我发现它似乎不起作用。 肯 b