Google Sheets v4 更新效果 JSON 端点数据?2021 年 6 月 8 日关闭

曼尼什

在此处输入图片说明

我阅读了这篇关于 Google Sheet API v4 更新的文章。我需要更改当前的代码结构吗?

我正在使用简单的 JSON 数据在网络上显示 Google 工作表数据。我使用以下代码在网络上制作了一些 PHP 和 JavaScript 基础项目:

.HTML
 var sf = https://spreadsheets.google.com/feeds/list/1l7VfPOI3TYtPuBZlZ-JMMiZW1OK6rzIBt8RFd6KmwbA/1/public/values?alt=json

 $.getJSON(sf, function(data) {
 var sd = data.feed.entry;

 key = data.feed.entry[i]['gsx$key']['$t'];
 name = data.feed.entry[i]['gsx$name']['$t'];
 img = data.feed.entry[i]['gsx$img']['$t'];
 rice = data.feed.entry[i]['gsx$price']['$t'];

.php

$url = 'https://spreadsheets.google.com/feeds/list/1l7VfPOI3TYtPuBZlZ-JMMiZW1OK6rzIBt8RFd6KmwbA/1/public/values?alt=json';
$file = file_get_contents($url); 
$json = json_decode($file);

$rows = $json->{'feed'}->{'entry'};

$key = $row->{'gsx$key'}->{'$t'};
$price = $row->{'gsx$price'}->{'$t'};
$img = $row->{'gsx$img'}->{'$t'};
$name = $row->{'gsx$name'}->{'$t'};

我真的需要更新任何东西吗?

Tanaike

我相信你的目标如下。

  • 您想将端点从 Sheets API v3 更改为其他端点。

问题和解决方法:

在 Sheets API v3 中,可以在没有访问令牌和 API 密钥的情况下使用此 API。但是对于 Sheets API v4,需要使用访问令牌和/或 API 密钥。似乎这是当前的规范。当我看到您的脚本时,未使用访问令牌和 API 密钥。因此,在此答案中,作为一种解决方法,我想提出一种无需访问令牌和 API 密钥即可从电子表格中检索值的方法。终点如下。

https://docs.google.com/spreadsheets/d/{spreadsheetId}/gviz/tq

这是与查询语言一起使用的端点。重要的一点是,在这种情况下,需要将 Google 电子表格作为 Web 发布来发布。请注意这一点。当我看到您的电子表格的 URL 时,电子表格似乎是作为 Web 发布发布的。因此,您的电子表格可以与以下脚本一起使用。

在这个答案中,使用了 Javascript 脚本。

示例脚本 1:

在这个示例脚本中,电子表格的值被直接检索为 CSV 数据。

var sf = "https://docs.google.com/spreadsheets/d/1l7VfPOI3TYtPuBZlZ-JMMiZW1OK6rzIBt8RFd6KmwbA/gviz/tq?tqx=out:csv";
$.ajax({url: sf, type: 'GET', dataType: 'text'})
.done(function(csv) {
  console.log(csv);
})
.fail((e) => console.log(e.status));

示例脚本 2:

在此示例脚本中,电子表格的值作为 JSON 数据检索,并将其解析为标题行和值。

var sf = "https://docs.google.com/spreadsheets/d/1l7VfPOI3TYtPuBZlZ-JMMiZW1OK6rzIBt8RFd6KmwbA/gviz/tq?tqx=out:json";
$.ajax({url: sf, type: 'GET', dataType: 'text'})
.done(function(data) {
  const r = data.match(/google\.visualization\.Query\.setResponse\(([\s\S\w]+)\)/);
  if (r && r.length == 2) {
    const obj = JSON.parse(r[1]);
    const table = obj.table;
    const header = table.cols.map(({label}) => label);
    const rows = table.rows.map(({c}) => c.map(({v}) => v));

    console.log(header);
    console.log(rows);
  }
})
.fail((e) => console.log(e.status));

示例脚本 3:

例如,当使用 Sheets API v4 时,示例脚本如下。在这种情况下,将使用 API 密钥。并且需要公开共享电子表格。请注意这一点。

var url = "https://sheets.googleapis.com/v4/spreadsheets/1l7VfPOI3TYtPuBZlZ-JMMiZW1OK6rzIBt8RFd6KmwbA/values/Sheet1?key=###"
$.getJSON(url, function(data) {
  console.log(data.values);
});

参考资料:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在2016年6月20日之后取消Google Play IAB测试购买的订单

如何使用Java处理Google Sheets API v4中的JSON字符串

Google Finance API从2017年9月6日起不起作用

2017年9月6日之后如何从Google Finance API获取数据以获取多只股票

Android Studio 3.1 Canary 6+后更新了数据绑定(2018年12月12日更新)

iOS 2020年4月30日(延长至6月30日)2020年要求-iOS 13 SDK,全屏设计,启动Storyboard,Swift3

在2020年6月1日之后使用Google云端硬盘API获取“我的云端硬盘”中的文件列表?

Chrome在2020年8月10日更新后未在iframe中发送回Cookie

截至2014年4月8日的Windows XP Mode漏洞

2014年4月8日之后是否可以激活Windows XP(SP3)?

2014年4月8日之后在Windows XP上运行的Internet Explorer 8仍将获得更新吗?

2014年1月17日最新的Google Chrome更新触发页面无响应警报

2014年4月18日固件更新后,Google Glass从菜单中隐藏了我的应用

在Android中的DatePicker 2014年6月8日至2014年6月8日使用零进行处理?

jQuery Facebook API Feed突然停止工作-2015年4月8日

tensorflow构建于2016年10月6日失败

Android无法解析的日期:2017年1月6日

2020年8月1日更新后CentOS 8.2无法启动

当输入日期为 12 月 30 日或 31 日时,Google 脚本格式将日期关闭 1 年

2021 年 1 月 6 日之后 Chrome://gpu 中的错误,更新为 20.04.1

Google Sheets API v4 写入数据

查找给定数据的日期(文本:例如 2019 年 2 月 8 日)

输入文本日期(2021 年 4 月 4 日)并显示时间戳

我如何打印“1989 年 6 月 4 日发生了什么?” 关于 BrainFuck

JavaScript 中的日期格式。例如:2021 年 6 月 10 日

Java 时间解析“2021 年 6 月 26 日,纽约时间下午 04:30:15”

如何使用 2021 年 6 月 28 日星期一这样的 JavaScript 日期和时间

将日期转换为字符串:“2021-08-12”到:“2021 年 8 月 11 日”

Tortoise GIT - 对密码验证的支持已于 2021 年 8 月 13 日移除