Я использую Google Drive API в скрипте Google Apps (который представляет собой изолированный Javascript с песочницей, который не может использовать API-интерфейс Google для Javascript).API для Google Диска - Изменение владельца файла - Ошибка разрешений 400 «Требуется поле типа разрешений»
Я являюсь супер администратором Google Apps и аутентифицирую как пользователь, использующий делегирование домена и учетную запись службы, чтобы олицетворять пользователей, и я могу успешно совершать звонки Files:get в качестве других пользователей в домене.
Теперь я пытаюсь передать право собственности на файл с пользователем А пользователю В, что делает пользователя C редактор, выполнив следующие действия:
Когда проверку подлинности как пользователя А, передача права собственности на файл от пользователя A до пользователя B, установив пользователя 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 вызова (по соображениям производительности, потому что я планирую запустить это в цикле через до 1000 файлов)
Также стоит упомянуть: я смог успешно передать право собственности на файл с помощью проводника API в нижней части this page из моей учетной записи в другую учетную запись. Я предоставил точный идентификатор файла и содержимое тела запроса.