使用服务帐户进行 Google Sheets Api 授权

Ири*_*ёва 5 node.js google-sheets-api

我正在使用googleapis库 v44.0.0。当我尝试登录时,出现错误。

Google Sheets API 之前未在项目 33120758 中使用过或已被禁用。通过访问https://console.developers.google.com/apis/api/sheets.googleapis.com/overview?project=33120758启用它,然后重试。如果您最近启用了此 API,请等待几分钟,以便该操作传播到我们的系统,然后重试。

我在同一项目上使用 google-auth-library 版本 ^ 0.10.0。而这个错误却不是。

const { google } = require("googleapis");
// ...
const JwtClient = new google.auth.JWT(
  client_email, 
  null, 
  private_key, 
  ["https://www.googleapis.com/auth/spreadsheets"]
);
await JwtClient.authorize();
google.options({ auth: JwtClient });

// ...
const client = google.sheets({ version: "v4" });
const data = await client.spreadsheets.get({ spreadsheetId: myId});

Run Code Online (Sandbox Code Playgroud)

Tan*_*ike 5

  • 您想要通过服务帐户使用 Sheets API。
  • 您希望使用 googleapis 和 Node.js 来实现此目的。

如果我的理解是正确的,那么这个修改怎么样?

修改后的脚本:

从:
await JwtClient.authorize();
google.options({ auth: JwtClient });

// ...
const client = google.sheets({ version: "v4" });
const data = await client.spreadsheets.get({ spreadsheetId: myId});
Run Code Online (Sandbox Code Playgroud) 到:
const client = google.sheets({ version: "v4", "auth": JwtClient });
const data = await client.spreadsheets.get({ spreadsheetId: myId});
console.log(data.data)
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 如果您想从自己的 Google 云端硬盘上的电子表格中检索数据,请通过服务帐户的电子邮件共享电子表格。这样,可以从服务帐户检索电子表格。请小心这一点。

在我的环境中,我可以确认修改后的脚本有效。但如果这没有解决您的问题,我深表歉意。