如何解决使用带有服务帐户的nodejs的Google电子表格? 修改点:修改后的脚本:注意:参考:
如何在Node.js中使用服务帐户,以便使用Google API在Google的工作表中进行访问?
我尝试使用nodejs(npm)模块google-spredsheet
,但是当loadInfo()总是返回Request failed error 404
edit1: ii在我的目录中已经下载了一个服务帐户和密钥文件。 这是实际的脚本:
const express = require("express"),{GoogleSpreadsheet} = require('google-spreadsheet'),creds = require('./client_secret.json'),app = express();
app.set("view engine","ejs");
app.use(express.static(__dirname+"/public"));
app.get("/google-spreadsheet",async function(req,res){
// Identifying which document we'll be accessing/reading from
var doc;
doc = new GoogleSpreadsheet('1XKcnyJkTyq15AlvhAs3V_2wnP8vgwY3mWXAijyiINVs/edit#gid=0');
// Authentication
await doc.useServiceAccountAuth(creds);
await doc.loadInfo(); // loads document properties and worksheets
console.log("test: "+doc.title);
});
app.listen(8080,() => {
console.log('[EXPRESS] Web Server active on: ' + 8080);
});
解决方法
我相信您的当前情况和目标如下。
- 您的
client_secret.json
用于服务帐户。 - 您正在使用最新版本的“ Google电子表格”。
- 您要使用带有服务帐户的“ google-spreadsheet”访问Google Spreadsheet。
修改点:
- 在您的脚本中,
'1XKcnyJkTyq15AlvhAs3V_2wnP8vgwY3mWXAijyiINVs/edit#gid=0
被用作电子表格ID。在这种情况下,会发生这种错误。我认为这可能是您遇到问题的原因。因此,请将其修改为'1XKcnyJkTyq15AlvhAs3V_2wnP8vgwY3mWXAijyiINVs'
。
修改后的脚本:
修改脚本后,它如下所示。
从:doc = new GoogleSpreadsheet('1XKcnyJkTyq15AlvhAs3V_2wnP8vgwY3mWXAijyiINVs/edit#gid=0');
至:
doc = new GoogleSpreadsheet('1XKcnyJkTyq15AlvhAs3V_2wnP8vgwY3mWXAijyiINVs');
注意:
- 如果
1XKcnyJkTyq15AlvhAs3V_2wnP8vgwY3mWXAijyiINVs
的Google电子表格未与服务帐户的电子邮件共享,则该服务帐户无法使用该电子表格。请注意这一点。
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。