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

Node.js调用Google Sheets API读取多表文档时遇ENAMETOOLONG错误

问题排查与解决

错误原因分析

Error: ENAMETOOLONG: name too long, open" 这个错误本质是文件路径处理异常,大概率是你给keyFile参数传的不是服务账号密钥文件的路径字符串,而是直接把密钥JSON的完整内容赋值给了credentials1变量。系统把超长的JSON内容当成文件名去读取,自然触发“文件名过长”的错误。

另外你的代码还存在两个潜在问题:

  • Google Sheets API目前推荐使用v4版本,v2版本已被弃用,功能受限且可能出现兼容问题
  • sheets.spreadsheets.values.get的调用代码末尾少了一个闭合括号,会导致语法错误

修正后的代码示例

// 确保credentials1是服务账号密钥文件的路径,比如 './service-account-key.json'
const auth = new google.auth.GoogleAuth({
    keyFile: credentials1,
    scopes: ['https://www.googleapis.com/auth/spreadsheets.readonly']
});

// 使用v4版本的Sheets API
const sheets = google.sheets({ version: 'v4', auth: auth });

try {
    const response = await sheets.spreadsheets.values.get({
        spreadsheetId,
        range,
        majorDimension: 'ROWS'
    }); // 补上缺失的闭合括号
    console.log('读取到的数据:', response.data.values);
} catch (err) {
    console.error('请求出错:', err);
}

额外检查事项

  • 确认credentials1变量存储的是相对/绝对文件路径,而非密钥JSON的文本内容
  • 验证服务账号已被添加为目标Google表格的共享协作成员(赋予“查看者”权限即可)
  • 确保spreadsheetId和range变量的取值正确(range格式如'Sheet1!A1:C10')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 18:32:08