You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Javascript读取Google Sheets?Tabletop.js失效解决方案

问题根因

你遇到的404错误是Google于2021年8月正式下线旧版Google Sheets API v3导致的,Tabletop.js已于2018年停止维护,底层完全依赖该废弃API,因此原有方案直接失效。

最简替代方案(无需额外依赖、无需申请API密钥)

不需要改用复杂的正式Google Sheets API,你可以直接用Google Sheets公开CSV导出端点实现相同功能,改造成本极低,完全适配你读两个不同工作表的需求:

前置准备

确认你的Google Sheets仍然保持「发布到网络」的状态,且需要读取的两个工作表都在发布范围内即可。

改造代码示例(对应你原有逻辑)

不需要再引入tabletop.js,直接用纯JS实现数据读取:

<script type='text/javascript'>
    // 替换为你自己的表格ID,就是原URL里d/和/edit之间的字符串
    const SHEET_ID = '13XSjvsIgviUqd2zxxxxxxxxxsRO3OIf78Hyw';
    // 这里填你当前页面需要读取的工作表名称,另一个页面改这个参数就行
    const SHEET_NAME = 'EnrolledAll';

    async function init() {
        // 获取CSV数据
        const res = await fetch(`https://docs.google.com/spreadsheets/d/${SHEET_ID}/gviz/tq?tqx=out:csv&sheet=${SHEET_NAME}`);
        const csvText = await res.text();
        // 解析CSV为JSON对象,结构和Tabletop返回的几乎一致
        const rows = parseCSV(csvText);
        showInfo(rows);
    }

    // CSV解析函数,直接复用即可
    function parseCSV(csv) {
        const lines = csv.split('\n');
        const headers = lines[0].replace(/"/g, '').split(',');
        const result = [];
        for (let i = 1; i < lines.length; i++) {
            if (!lines[i].trim()) continue;
            const values = lines[i].replace(/",/g, '|||').replace(/"/g, '').split('|||');
            const row = {};
            headers.forEach((header, index) => {
                row[header.toLowerCase()] = values[index] || '';
            });
            result.push(row);
        }
        return result;
    }

    function showInfo(sheet) {
        // 以下逻辑和你原有代码完全一致,不需要改动
        console.log(sheet);
        var targetIG = document.getElementById('IGCode').innerHTML;
        var igRoster="";

        for (i = 0; i < sheet.length; i++) {
            if (sheet[i].ig==targetIG) {
                igRoster=igRoster + "<li>" + sheet[i].name;
                if (sheet[i].class!="")
                    igRoster=igRoster + " (" + sheet[i].class + ")";
                igRoster=igRoster + "</li>";
            }
        }
        document.getElementById('IGRoster').innerHTML=igRoster;
    }
    window.addEventListener('DOMContentLoaded', init);
</script>

多工作表适配

你两个页面需要读不同工作表的需求,只需要在对应页面的代码里修改SHEET_NAME变量为对应工作表名称即可,无需其他调整。

可选方案:Google Sheets API v4

如果你后续需要更复杂的操作(比如筛选、分页、写入数据),可以考虑改用正式的Google Sheets API v4,需要先申请API密钥,然后通过API端点读取数据,流程比上述CSV方案复杂,仅在有进阶需求时推荐使用。

内容的提问来源于stack exchange,提问作者user1769675

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:18:02