我正在使用Google Apps脚本中的Google Drive API(这是沙盒服务器端Javascript,无法使用Google Client API for Javascript)。
我是Google Apps超级管理员,并使用域范围委派和服务帐户进行身份验证,以模拟用户,并且我可以成为域内其他用户的Files:get来电。
现在我正在尝试将文件的所有权从用户A转移到用户B,并通过执行以下步骤使用户C成为编辑器:
当作为用户A进行身份验证时,通过将用户B设置为其他所有者,将文件的所有权从用户A转移到用户B.
当用户A或B进行身份验证时,请将用户C设为文件的编辑者
我已成功完成第1步。
对于第1步,我假设将用户B作为所有者添加的方式是使用Permissions:insert,无论它们是否已在文件上共享。我写了这个:
var url = 'https://www.googleapis.com/drive/v2/files/' + fileId + '/permissions';
var resource = {
"type": "user",
"role": "owner",
"value": "userBEmail"
};
var requestBody = {};
requestBody.method = 'POST';
requestBody.headers = { Authorization: 'Bearer ' + service.getAccessToken() };
requestBody.contentType = 'application/json';
requestBody.resource = JSON.stringify(resource);
requestBody.muteHttpExceptions = true;
try {
var response = UrlFetchApp.fetch(url, requestBody);
var result = JSON.parse(response.getContentText());
Logger.log('result: ' + JSON.stringify(result, null, 2));
} catch(e) {
Logger.log(e.message);
}
结果如下:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Permission type field required",
"locationType": "other",
"location": "permission.type"
}
],
"code": 400,
"message": "Permission type field required"
}
}
我的问题:
这是完成将文件从一个用户转移到另一个用户的正确方法吗?
如果我已将"Permission type field required"
包括在内,为什么会这样说?
在我开始使用第1步后,有没有办法将第2步添加到相同的API调用中(出于性能原因,因为我计划在最多1,000个文件的循环中运行它)
另外值得一提的是:我能够使用this page底部的API资源管理器从我的帐户成功转移文件的所有权到另一个帐户。我提供了与请求正文完全相同的文件ID和内容。
答案 0 :(得分:1)