更新适配Sheets v4 API的脚本运行失败,寻求解决方案
问题根因
你当前代码的核心问题是沿用了旧版Sheets v3 API的返回结构解析逻辑,而Sheets v4 API的返回数据结构和v3完全不兼容,核心差异如下:
- v3 API的结构化数据存放在
data.feed.entry字段下,用gsx$[表头名]的格式读取对应列内容 - v4 API的原始表格数据存放在
data.values数组中,数组的每一项对应表格的一行,行数组的子项按顺序对应每一列的内容,默认第一行是表头字段
前置检查项
先确认以下配置正确,否则接口会直接返回报错:
- 目标谷歌表格已设置为「任何知道链接的用户可查看」
- 你使用的API Key已在谷歌云控制台开启了Google Sheets API的调用权限
- 请求URL中的工作表名
Section-A和实际表格的工作表名完全一致(大小写、特殊符号均要匹配)
修正后的参考代码
jQuery(document).ready(function() { setTimeout(function() { jQuery.getJSON( "https://sheets.googleapis.com/v4/spreadsheets/1nt-5-zruTuJPOAfRbCgy9sJA2CCVvzo0sCPEPx0uxEk/values/Section-A?alt=json&key=AIzaSyCJuQ_bsRn1SVyfI8rkeq0RUnSpecP7IYk", function(data) { // v4返回的values数组第一行为表头,后续为实际数据行 const rows = data.values; // 没有有效数据直接返回 if (!rows || rows.length < 2) return; // 先获取表头,和你表格第一行的表头名对应 const headers = rows[0].map(header => header.trim().toLowerCase()); // 从第二行开始遍历数据 for (let i = 1; i < rows.length; i++) { const row = rows[i]; // 按表头索引取对应列的值 const perc = row[headers.indexOf('changepct')] || ''; const cap = row[headers.indexOf('marketcap')] || ''; const date = row[headers.indexOf('tradetime')] || ''; const price = row[headers.indexOf('price')] || ''; document.getElementById('perc').innerHTML += perc; document.getElementById('capitalizzazione').innerHTML += cap; document.getElementById('dataTrade').innerHTML += date; document.getElementById('price').innerHTML += price; } } ).fail(function(err) { // 此处可打印错误信息方便排查接口问题 console.log('接口请求报错:', err); }); }, 1000); });
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

