Google 表格是否停止允许 json 访问?
Did Google Sheets stop allowing json access?
我有一个应用可以打开我发布到网络上的 json 版电子表格。我使用了这个网站上的说明:https://www.freecodecamp.org/news/cjn-google-sheets-as-json-endpoint/
几个月来一直运行良好,但今天我意识到我的 json 文件的 url 从昨天开始就不再工作了。它给出消息,“抱歉,此时无法打开文件。请检查地址,然后重试。”不过,将电子表格作为网页查看的常规 link 仍然有效。
Google 是否放弃了对此功能的支持?有没有另一种方法可以通过URL获取json格式的电子表格数据?我开始研究 Google 开发人员 API,但它确实令人困惑。
您正在使用 JSON Alt Type variant of the Google Data protocol. This protocol is dated and appears to no longer work reliably. The GData API Directory 告诉:
Google Spreadsheets Data API: GData version is still live. Replaced by the Google Sheets API v4.
Google Sheets API v4 is a modern RESTful interface that is typically used with a client library to handle authentication and batch processing of data requests. If you do not want to do a full-blown client implementation, David Kutcher 为 GData JSON Alt 类型提供以下 v4 模拟,使用 jQuery:
GData(旧版本,不推荐):
var url = 'https://spreadsheets.google.com/feeds/list/' +
spreadsheet_id + '/' + tab_ordinal + '/public/values?alt=json';
($.getJSON(url, 'callback=?')).success(function(data) {
// ...
};
V4(新版本,推荐):
var url = 'https://sheets.googleapis.com/v4/spreadsheets/' +
spreadsheet_id + '/values/' + tab_name +
'?alt=json&key=' + api_key;
($.getJSON(url, 'callback=?')).success(function(data) {
// ...
};
...其中:
spreadsheet_id
是点差地址中的一长串字母和数字sheet——它是/d/
和/edit
[=47=之间的位]
tab_ordinal
是 sheet 的编号 — 标签栏中出现的第一个 sheet 是 sheet 编号 1
,第二个是2
,依此类推
tab_name
是sheet的名字,即当你有sheet时,你在window底部的标签栏中看到的名字] 开放编辑
api_key
是您从 Google Cloud Platform console 获得的 API 密钥
请注意,JSON 两个版本的输出格式不同。
使用 GData 模式,传播sheet 需要共享为 文件 > 共享 > 发布到网络。
使用 V4 模式,传播sheet 需要共享为 文件 > 共享 > 与他人共享 > 拥有 link 的任何人都可以查看 .
gdata 是 Google 表格的旧版本 API,它已关闭。请在此处查看 Google 的公告 https://cloud.google.com/blog/products/g-suite/migrate-your-apps-use-latest-sheets-api
没有 jQuery ...
var url = 'https://docs.google.com/spreadsheets/d/'+id+'/gviz/tq?tqx=out:json&tq&gid='+gid;
具有传播的 idsheet 和 sheet 的 gid
https://codepen.io/mikesteelson/pen/wvevppe
示例:
var id = '______your_speadsheet_id________';
var gid = '0';
var url = 'https://docs.google.com/spreadsheets/d/'+id+'/gviz/tq?tqx=out:json&tq&gid='+gid;
fetch(url)
.then(response => response.text())
.then(data => document.getElementById("json").innerHTML=myItems(data.substring(47).slice(0, -2))
);
function myItems(jsonString){
var json = JSON.parse(jsonString);
var table = '<table><tr>'
json.table.cols.forEach(colonne => table += '<th>' + colonne.label + '</th>')
table += '</tr>'
json.table.rows.forEach(ligne => {
table += '<tr>'
ligne.c.forEach(cellule => {
try{var valeur = cellule.f ? cellule.f : cellule.v}
catch(e){var valeur = ''}
table += '<td>' + valeur + '</td>'
}
)
table += '</tr>'
}
)
table += '</table>'
return table
}
截至 2022 年 3 月:
如果您不想创建密钥,可以使用这种 URL 格式:
https://docs.google.com/spreadsheets/d/{spreadsheetId}/gviz/tq
下载格式为
的json.txt
文件
google.visualization.Query.setResponse({json});
从中你必须切出 json
-或--
根据官方文档配置一个密钥即可。
- 转到 Google 控制台并创建一个项目(或使用现有项目)
- 转到 Credenetials 页面并创建一个 API 键
- 从库中包含 Sheets API
- 瞧瞧!
您现在可以使用 URL 格式获得 json:
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}?alt=json&key={theKey}
编辑:Sheet 应该是 public 并且拥有 link 的任何人都可以查看
我有一个应用可以打开我发布到网络上的 json 版电子表格。我使用了这个网站上的说明:https://www.freecodecamp.org/news/cjn-google-sheets-as-json-endpoint/
几个月来一直运行良好,但今天我意识到我的 json 文件的 url 从昨天开始就不再工作了。它给出消息,“抱歉,此时无法打开文件。请检查地址,然后重试。”不过,将电子表格作为网页查看的常规 link 仍然有效。
Google 是否放弃了对此功能的支持?有没有另一种方法可以通过URL获取json格式的电子表格数据?我开始研究 Google 开发人员 API,但它确实令人困惑。
您正在使用 JSON Alt Type variant of the Google Data protocol. This protocol is dated and appears to no longer work reliably. The GData API Directory 告诉:
Google Spreadsheets Data API: GData version is still live. Replaced by the Google Sheets API v4.
Google Sheets API v4 is a modern RESTful interface that is typically used with a client library to handle authentication and batch processing of data requests. If you do not want to do a full-blown client implementation, David Kutcher 为 GData JSON Alt 类型提供以下 v4 模拟,使用 jQuery:
GData(旧版本,不推荐):
var url = 'https://spreadsheets.google.com/feeds/list/' +
spreadsheet_id + '/' + tab_ordinal + '/public/values?alt=json';
($.getJSON(url, 'callback=?')).success(function(data) {
// ...
};
V4(新版本,推荐):
var url = 'https://sheets.googleapis.com/v4/spreadsheets/' +
spreadsheet_id + '/values/' + tab_name +
'?alt=json&key=' + api_key;
($.getJSON(url, 'callback=?')).success(function(data) {
// ...
};
...其中:
spreadsheet_id
是点差地址中的一长串字母和数字sheet——它是/d/
和/edit
[=47=之间的位]tab_ordinal
是 sheet 的编号 — 标签栏中出现的第一个 sheet 是 sheet 编号1
,第二个是2
,依此类推tab_name
是sheet的名字,即当你有sheet时,你在window底部的标签栏中看到的名字] 开放编辑api_key
是您从 Google Cloud Platform console 获得的 API 密钥
请注意,JSON 两个版本的输出格式不同。
使用 GData 模式,传播sheet 需要共享为 文件 > 共享 > 发布到网络。
使用 V4 模式,传播sheet 需要共享为 文件 > 共享 > 与他人共享 > 拥有 link 的任何人都可以查看 .
gdata 是 Google 表格的旧版本 API,它已关闭。请在此处查看 Google 的公告 https://cloud.google.com/blog/products/g-suite/migrate-your-apps-use-latest-sheets-api
没有 jQuery ...
var url = 'https://docs.google.com/spreadsheets/d/'+id+'/gviz/tq?tqx=out:json&tq&gid='+gid;
具有传播的 idsheet 和 sheet 的 gid https://codepen.io/mikesteelson/pen/wvevppe 示例:
var id = '______your_speadsheet_id________';
var gid = '0';
var url = 'https://docs.google.com/spreadsheets/d/'+id+'/gviz/tq?tqx=out:json&tq&gid='+gid;
fetch(url)
.then(response => response.text())
.then(data => document.getElementById("json").innerHTML=myItems(data.substring(47).slice(0, -2))
);
function myItems(jsonString){
var json = JSON.parse(jsonString);
var table = '<table><tr>'
json.table.cols.forEach(colonne => table += '<th>' + colonne.label + '</th>')
table += '</tr>'
json.table.rows.forEach(ligne => {
table += '<tr>'
ligne.c.forEach(cellule => {
try{var valeur = cellule.f ? cellule.f : cellule.v}
catch(e){var valeur = ''}
table += '<td>' + valeur + '</td>'
}
)
table += '</tr>'
}
)
table += '</table>'
return table
}
截至 2022 年 3 月:
如果您不想创建密钥,可以使用这种 URL 格式:
https://docs.google.com/spreadsheets/d/{spreadsheetId}/gviz/tq
下载格式为
的json.txt
文件
google.visualization.Query.setResponse({json});
从中你必须切出 json
-或--
根据官方文档配置一个密钥即可。
- 转到 Google 控制台并创建一个项目(或使用现有项目)
- 转到 Credenetials 页面并创建一个 API 键
- 从库中包含 Sheets API
- 瞧瞧!
您现在可以使用 URL 格式获得 json:
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{sheetName}?alt=json&key={theKey}
编辑:Sheet 应该是 public 并且拥有 link 的任何人都可以查看