laravel - 应以 JSON 格式显示 Google 表格数据的 URL 显示内部错误
问题描述
我想将 Google Sheet 的数据转换为 JSON 格式,以便我可以在我的网站上使用它。但是,每当网站尝试获取 JSON 文件时,我都会收到 500 错误。
我已经尝试了不同的方法将我的工作表转换为 Internet 上可用的 JSON
$url = 'https://spreadsheets.google.com/feeds/list/1dpmzzKNR8hRILX6qMD0KTruxxXYT3UAXR0EcX0zS0dE/1/public/full?alt=json';
$file= file_get_contents($url);
$json = json_decode($file);
$rows = $json->{'feed'}->{'entry'};
return $rows;
解决方案
我有同样的问题; 我能够通过直接从 pubhtml 页面解析 html 以输出类似的 JSON 格式来解决该问题:
不要使用 Google 表格 ID,而是使用“发布到网页”的链接。
我跳过了一些行,因为有些行用于冻结行,但是您应该能够根据需要修改代码。
function importGoogleSheets(publishedUrl, sheetId, onSuccess, onError) {
var headers = [];
var rows;
$.ajax({
url: publishedUrl+'?gid='+sheetId+'&single=true',
success: function(data) {
data = $.parseHTML(data)[5];
htmldata = data;
rows = data.getElementsByTagName('tr');
for (var i = 0; i < rows[1].cells.length; i++) {
headers[i] = 'gsx$' + rows[1].cells[i].textContent.toLowerCase().replace(/[^0-9a-z]*/g, '');
}
for (var i = 3; i < rows.length; i++) {
temp = {};
for (var h = 1; h < headers.length; h++) {
temp[headers[h]] = {'$t': rows[i].cells[h].textContent};
}
all_data[i - 3] = temp;
}
onSuccess(all_data);
},
error: function(data) {
onError(data);
}
});
}
不过需要注意的是,它包含与提要不同的任何空行,因此您可能希望根据某些列过滤输出。
推荐阅读
- autodesk-forge - 有没有办法在查看器中使用 BoxSelection 扩展启用部分选择
- java - 您可以垂直打印生成的随机数(10 个整数)一维数组吗?
- python - Pytest 测试套件在 GitHub Actions 上随机出现错误,无需更改
- python - 从 csv 文件动态创建数据框
- javascript - 如何根据两个过滤器过滤对象数组?
- java - 在 Java 中使用字符串创建一个简单的计算器
- python - 刮了
- 通过 Python 的 BeautifulSoup 在网站中的产品详细信息,但无法将其导出到 csv
- java - Checkstyle 错误:de-lomboked code 超过 7 个参数(找到 20 个)
- jsf - 根据 ui:repeat 列表中特定复选框元素的值禁用 inputTextarea 元素?
- vue.js - [Vue 警告]:在渲染期间访问了属性“myString”,但未在实例上定义