Google ドライブ SDK はパーミッションのバッチ操作をサポートしていますか (https://developers.google.com/drive/v2/reference/permissions/insert)
たとえば、20 人のユーザーにドキュメントへの書き込み権限を付与したいと考えています。20 回の呼び出しではなく、1 回の REST 呼び出しで実行できますか?
Google ドライブ SDK はパーミッションのバッチ操作をサポートしていますか (https://developers.google.com/drive/v2/reference/permissions/insert)
たとえば、20 人のユーザーにドキュメントへの書き込み権限を付与したいと考えています。20 回の呼び出しではなく、1 回の REST 呼び出しで実行できますか?
このページに出くわしました: https://developers.google.com/drive/migration
最後に、バッチ操作は現在ドライブ API でサポートされていないことがわかります。
プログラムでそれを達成することができますが。私はこの方法でそれを達成するために彼らのjava-scriptサンプルメソッドを変更しました。
/**
* Retrieve a list of permissions.
*
* @param {String} fileId ID of the file to retrieve permissions for.
* @param {Function} callback Function to call when the request is complete.
*/
function retrievePermissions(fileId, callback) {
var request = gapi.client.drive.permissions.list({
'fileId': fileId
});
request.execute(function(resp) {
//console.log(resp);
callback(resp.items);
});
}
/**
* Update a permission's role.
*
* @param {String} fileId ID of the file to update permission for.
* @param {String} permissionId ID of the permission to update.
* @param {String} newRole The value "owner", "writer" or "reader".
*/
function updatePermission(fileId, items,callback) {
var updateRequest = gapi.client.drive.permissions.update({
'fileId': fileId,
'permissionId': items[0].id,
'resource': items[0]
});
updateRequest.execute(function(resp) {
items.splice(0,1);
if (items.length > 0)
updatePermission(fileId,items,callback);
if (items.length == 0)
callback(resp);
});
}
これらのメソッドを呼び出すために、次のコードがあります。
retrievePermissions(result.id, function(items){
var toUpdate = new Array();
var j = 0;
for (var i = 0; i < items.length; i++){
if (items[i].role != "owner" && items[i].id != "anyoneWithLink"){
items[i].role = "reader";
items[i].additionalRoles = [ "commenter" ];
toUpdate[j++] = items[i];
}
}
updatePermission(result.id, toUpdate, function(resp){ console.log (resp) } );
});