Я использую JavaScript Клиентская библиотека Google API для работы с Google Drive API. Я настроил пакетный запрос для создания разрешений для ряда файлов на Google Диске. Каждое изменение предназначено для добавления пользователя в качестве средства просмотра / чтения файла.
Мне удалось правильно обмениваться файлами, вызывая API напрямую для каждого файла, однако даже для 4 или 5 файлов вызывать API каждый раз довольно медленно. Я успешно создал пакетные запросы для других функций, таких как перечисление назначений Google Classroom и копирование файлов Google Диска (после их совместного использования вручную).
Это будет работать:
var permissionParams = {
"role": "reader",
"type": "user",
"emailAddress": emailToShareTo
};
for (f = 0; f < files.length; f++) {
var fileID = 'XXXXXXXXXXXXXXXXXXX'
var permissionParams = {
"role": "reader",
"type": "user",
"emailAddress": emailToShareTo
};
await gapi.client.drive.permissions.create(
{
"fileId": fileId,
"resource": permissionParams
});
}
Однако я пытаюсь сделать то же самое, что и часть пакета, вот так:
function permissionRequest(fileId,params) {
return gapi.client.request({
'path': 'drive/v3/files/' + fileId + '/permissions?supportsAllDrives=true&sendNotificationEmail=false',
'body': params,
'method': 'POST'
});
}
function doSharing() {
var shareBatch = gapi.client.newBatch();
var permissionParams = {
"role": "reader",
"type": "user",
"emailAddress": secondaryEmail
};
for (f = 0; f < files.length; f++) {
var fileId = files[f].id;
var filePermissionRequest = permissionRequest(fileId,permissionParams)
shareBatch.add(filePermissionRequest, {'id': fileId + '-share'});
}
await shareBatch.then(async function(response){
console.log(response);
});
}
Я получаю ошибку:
domain: "global"
message: "Bad Request. User message: "Sorry, an item is restricted in sharing.""
reason: "invalidSharingRequest"
Я знаю, что этими файлами можно поделиться, потому что я могу поделиться ими через интерфейс Drive или с помощью метода gapi.client.drive.permissions.create
, поэтому я уверен, что ничто в домене не ограничивает общий доступ. Я также пытался сделать это с разных учетных записей в разных доменах.
Я действительно изо всех сил пытаюсь понять ошибку. Я пытался воссоздать его с помощью API Explorer, но не смог этого добиться.
Благодарен за любые предложения!