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

如何用JavaScript调用Google Sheets API获取所有工作表数据?

获取Google Sheets所有工作表数据的解决方案

Google Sheets API的spreadsheets.values.get接口不支持一次性拉取多个工作表的数据,你需要先获取文档内所有工作表的列表,再逐个获取每个表的内容。以下是完整实现代码:

const { google } = require("googleapis");
const spreadsheetId = '123456';

const auth = new google.auth.GoogleAuth({
    keyFile: "credentials/sheets_token.json",
    scopes: "https://www.googleapis.com/auth/spreadsheets",
});

// 主函数:获取所有工作表数据
async function getAllSheetsData() {
    const client = await auth.getClient();
    const googleSheets = google.sheets({ version: "v4", auth: client });

    // 1. 获取文档元数据,提取所有工作表标题
    const spreadsheetMeta = await googleSheets.spreadsheets.get({
        spreadsheetId,
        fields: 'sheets.properties(title)' // 仅请求必要字段,减少数据传输
    });

    const sheets = spreadsheetMeta.data.sheets;
    const allSheetData = {};

    // 2. 遍历每个工作表,拉取对应数据
    for (const sheet of sheets) {
        const sheetTitle = sheet.properties.title;
        const sheetRes = await googleSheets.spreadsheets.values.get({
            spreadsheetId,
            range: sheetTitle // 用工作表标题作为范围参数,获取该表全部数据
        });
        // 处理空表情况:若工作表无数据,返回空数组
        allSheetData[sheetTitle] = sheetRes.data.values || [];
    }

    return allSheetData;
}

// 调用并处理结果
getAllSheetsData()
    .then(data => console.log('所有工作表数据:', data))
    .catch(err => console.error('获取失败:', err));

关键说明

  • 你之前尝试的空范围、省略range参数无效,因为spreadsheets.values.get必须明确指定单个工作表或表内具体范围;Sheet1:Sheet10这类跨表写法也不被API支持。
  • 用spreadsheets.get获取元数据时,通过fields参数精准请求工作表标题,避免返回冗余内容,提升请求效率。
  • 遍历过程中以工作表标题作为range参数,即可拉取对应表的全部行数据,同时处理空表的边界情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:23:14