我有一个谷歌工作表,我可以通过访问服务帐户来阅读谷歌工作表.下面是用于阅读的代码片段.

 // configure a JWT auth client
let jwtClient = new google.auth.JWT(
    privatekey.client_email,
    null,
    privatekey.private_key,
    ['https://www.googleapis.com/auth/spreadsheets',
     'https://www.googleapis.com/auth/drive']);
//authenticate request
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
} else {
console.log("Successfully connected!");
}
})

    // getting data from  google sheet
sheets.spreadsheets.values.get({
   auth: jwtClient,
   spreadsheetId: spreadsheetId,
   range: range
}, function (err, response) {
   if (err) {
       console.log('The API returned an error: ' + err);
   } else {
    console.log('Users list from Google Sheets:', response.data.values);
    
   }
});

这非常有效,我正在获取数据.但当我想写google sheet时,它会给出一个错误.一段文字

//  writing to google sheets
let values = [
    [
      'abc','b.ed'
    ],
  ];
  const requestBody = {
    values,
  };
  sheets.spreadsheets.values.update({
    spreadsheetId,
    range:"Sheet1!C3",
    valueInputOption,
    requestBody,
  }, (err, result) => {
    if (err) {
      // Handle error
      console.log(err);
    } else {
      console.log('%d cells updated.', result.updatedCells);
    }
  });

我得到的错误

GaxiosError: Login Required.

推荐答案

让我们看看您的工作示例

sheets.spreadsheets.values.get({
   auth: jwtClient,
   spreadsheetId: spreadsheetId,
   range: range

注意您是如何添加身份验证并将其设置到jwtClient的?这将为您的通话添加授权权限.

现在让我们看看您的更新状态

sheets.spreadsheets.values.update({
    spreadsheetId,
    range:"Sheet1!C3",
    valueInputOption,
    requestBody,

您尚未添加身份验证,这意味着您试图在未经身份验证的情况下执行此操作.更新根据用户的私有数据进行操作您需要权限才能调用此方法.

因此,根据这一逻辑,下面应该修复您的错误

sheets.spreadsheets.values.update({
    auth: jwtClient,
    spreadsheetId,
    range:"Sheet1!C3",
    valueInputOption,
    requestBody,

Node.js相关问答推荐

GitLab SAST中的Nodejcan未找到匹配项

获取驱动器文件夹的直接子文件夹时出现问题

填充函数在Node.js和MongoDB中不起作用

如果我加入另一个公会且我的​​机器人已在其中,欢迎消息发送错误

Nest Js - 在 multer 拦截器中如何设置最大文件上传大小并进行可选文件上传

Nestjs swc 错误:找不到模块项目路径/src/app.module

使用NodeJS通过服务账号列出Google Workspace用户

找不到模块bcryptjs

Angular Build 生产返回致命的 javascript 无效大小错误

(Mongoose) 删除 TTL 字段失败

如何使用 node 在 koa.js 中发送响应

为什么我在生产环境中 deproy Next.js 示例项目时 CSS 不起作用?

`npm install` 以Killed结尾

Aptana Studio 是否有 NodeJS 插件?

来自 Node-aws 的 Dynamo Local:所有操作都失败无法对不存在的表执行操作

我应该在(Docker)容器中使用 forever/pm2 吗?

ChildProcess 关闭、退出事件之间的区别

npm package.json 操作系统特定脚本

__dirname 未在 Node 14 版本中定义

请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?