使用全域委派服务账号调用Google Sheets API报缺少有效API密钥错误
问题排查方向
优先检查Sheets客户端初始化参数
你当前的初始化代码const sheets = google.sheets({version: 'v4', jwtObject});存在参数错误:Google官方Node.js客户端要求身份验证凭证必须通过auth字段传递,直接将jwt对象作为顶级字段传入时,客户端无法识别到有效身份凭证,才会触发「缺失API密钥」的报错。
修正后的写法为:const sheets = google.sheets({version: 'v4', auth: jwtObject});确认Sheets API权限域配置正确
检查生成JWT时传入的scopes参数,是否包含Sheets API对应的权限域(比如读写权限https://www.googleapis.com/auth/spreadsheets,只读权限https://www.googleapis.com/auth/spreadsheets.readonly),同时确认Google Workspace管理后台的服务账号全域委派配置中,已经新增了上述Sheets相关权限域,避免只配置了Classroom、Admin SDK的权限遗漏了Sheets的配置。验证模拟用户的表格访问权限
确认JWT中配置的模拟用户emailToImpersonate,本身拥有目标表格的对应访问权限:可以直接登录该用户账号手动访问目标Sheet链接,确认可正常查看/编辑,排除表格权限配置问题。校验JWT授权有效性
在调用Sheets接口前打印jwtClient.credentials字段,确认access_token正常生成、未过期,排除授权流程异常导致凭证无效的问题。
内容的提问来源于stack exchange,提问作者John Gerhardt

