如何通过JavaScript使用Sheets v4 API获取Google Spreadsheet数据为JSON
Google Sheets V4 API JavaScript获取JSON数据方案
你之前使用的是Google Sheets旧版GData API的接口,该接口已经完全废弃下线,现在使用V4版本API获取公开表格数据的方法如下:
前置准备
- 首先将目标Google Sheet设置为公开可查看:打开表格后点击右上角「共享」,将常规访问权限设置为「知道链接的任何人」,角色选择「查看者」后保存
- 申请Google Cloud API密钥:登录Google Cloud控制台,搜索并启用「Google Sheets API」,进入凭据页面创建API密钥,复制保存生成的密钥
- 记录目标表格ID:表格URL中
d/与/edit中间的字符串即为表格ID,你原有代码中的1hA4LKZn9yKoqnSzaI6_73GQSj_ZVpB3O0kC93QM98Vs就是表格ID - 确认要读取的工作表名称,默认名称为
Sheet1,也可自定义填写你实际的工作表名
实现代码
原生Fetch版本(无需引入jQuery)
// 替换为你自己的对应参数 const SPREADSHEET_ID = '你的表格ID'; const API_KEY = '你申请的Google Cloud API密钥'; const SHEET_NAME = 'Sheet1'; const READ_RANGE = 'A:Z'; // 可按需调整读取的列范围 const requestUrl = `https://sheets.googleapis.com/v4/spreadsheets/${SPREADSHEET_ID}/values/${SHEET_NAME}!${READ_RANGE}?key=${API_KEY}`; fetch(requestUrl) .then(res => { if (!res.ok) throw new Error('接口请求失败'); return res.json(); }) .then(rawData => { // rawData.values为二维数组,第一行默认是表头 // 以下代码可转换为键值对格式的结构化JSON const headers = rawData.values[0]; const formattedJson = rawData.values.slice(1).map(row => { return row.reduce((obj, cellValue, index) => { obj[headers[index]] = cellValue; return obj; }, {}); }); // formattedJson即为你需要的JSON格式数据 console.log(formattedJson); }) .catch(err => console.error('数据获取失败:', err));
jQuery版本(兼容旧项目)
// 替换为你自己的对应参数 const SPREADSHEET_ID = '你的表格ID'; const API_KEY = '你申请的Google Cloud API密钥'; const SHEET_NAME = 'Sheet1'; const READ_RANGE = 'A:Z'; const requestUrl = `https://sheets.googleapis.com/v4/spreadsheets/${SPREADSHEET_ID}/values/${SHEET_NAME}!${READ_RANGE}?key=${API_KEY}`; $.ajax({ url: requestUrl, dataType: 'json', success: function(rawData) { const headers = rawData.values[0]; const formattedJson = rawData.values.slice(1).map(row => { return row.reduce((obj, cellValue, index) => { obj[headers[index]] = cellValue; return obj; }, {}); }); console.log(formattedJson); }, error: function(xhr, status, err) { console.error('数据获取失败:', err); } });
注意事项
- Google Sheets API免费配额为每分钟300次请求,超出后会临时封禁访问,高调用量场景建议配置后端服务中转请求
- 不要将API密钥直接提交到公开代码仓库,生产环境建议在Google Cloud控制台配置API密钥的访问域名白名单,避免被他人盗用消耗配额
- 若表格更新后拉取到的是旧数据,可在请求URL后拼接随机参数跳过缓存,示例:
${requestUrl}&t=${Date.now()}
内容的提问来源于stack exchange,提问作者7star
相关产品推荐
相关产品推荐

