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")可以在以下位置找到:
还有仅发布数据子集的选项,这可能更适合您。但我希望这能让你前进。
编辑:后续步骤:
下一个问题可能是 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
我正在尝试使用 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")可以在以下位置找到:
还有仅发布数据子集的选项,这可能更适合您。但我希望这能让你前进。
编辑:后续步骤:
下一个问题可能是 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