【发布时间】:2019-05-04 12:43:36
【问题描述】:
我能够使用服务帐户创建 google 表格,但无法为用户插入表格的权限:
function createSheet(jwt, apiKey) {
const sheets = google.sheets({version: 'v4'});
var request = {
resource: {
"properties": {
"title": "testSheet"
}
},
auth: jwt
};
以下是 create sheet api 的响应:
config: {transformRequest: {…}, transformResponse: {…}, timeout: 0, xsrfCookieName: "XSRF-TOKEN", xsrfHeaderName: "X-XSRF-TOKEN", …}
data: {spreadsheetId: "XXX", properties: {…}, sheets: Array(1), spreadsheetUrl: "https://docs.google.com/spreadsheets/d/XXX/edit"}
...
status: 200
statusText: "OK"
我的代码。
function insertPermission(fileId) {
var body = {
'value': 'xxx@gmail.com',
'type': 'user',
'role': 'owner'
};
var drive=google.drive({version: 'v3'});
drive.permissions.create({
'fileId': fileId, //sheetID returned from create sheet response
'resource': body
}, function(err, response) {if (err) {
console.error(err);
return;
} else{
console.log(JSON.parse(JSON.stringify(response))) ;
}
});
insertPermission 出错:
index.js:114 错误:权限不足 在创建错误时
或者,有没有办法在 sheet.create api 中指定文件权限?
【问题讨论】:
-
在这里解决了这个问题。关于服务帐户的注意点是它与您的个人帐户不同。复制服务帐户电子邮件地址并授予它访问您 Google 驱动器上目录的权限。另外用户驱动 api 来创建文件而不是工作表 api -
-
此外,gdrive 上还有一个设置来创建文件夹并授予服务帐户对该文件夹的读/写权限。 MyDrive 可通过用户 ID 而不是服务帐户访问。问题现已解决。
标签: node.js google-api google-drive-api google-api-nodejs-client