在从编辑更改为查看权限后,我遇到了嵌套在不继承文件夹权限的文件夹中的DriveApp文件的问题。步骤如下:
通过以下方式将具有“编辑”权限的文件夹(包含内部文件)添加到另一个用户的驱动器:
userFolder.addFolder(folderToShare);
folderToShare.addEditor(user);
...然后再次添加文件夹,这次将“编辑”更改为“查看”权限:
userFolder.addFolder(folderToShare);
folderToShare.addViewer(user);
“folder”中的内部文件应根据父文件夹的权限更改权限。当“folder”更改为用户的“view”权限时,用户应继承文件夹中文件的“查看”权限。但是,如果用户在调用folder.addViewer(user)时对“folder”中的文件具有“edit”权限,则该文件夹将获得“查看”权限,但文件夹中的文件仍保留用户的“编辑”权限不变。
var folderToShare = DriveApp.getFolderById(folderId);
var userFolders = DriveApp.getFoldersByName(thisUser[1]);
if (userFolders.hasNext() == false) {
// do something
} else var userFolder = userFolders.next();
userFolder.addFolder(folderToShare);
folderToShare.addEditor(thisUser[1]);
// folder and files in folder get edit permission
// trying the following on the folder results in view permission on the folder, but edit permission remains on the folder's files
userFolder.addFolder(folderToShare);
folderToShare.addViewer(thisUser[1]);
我在使用.addViewer(用户)之前尝试过.removeEditor(用户),但无济于事。我是否需要调用folderToShare.getFiles()并迭代以更改每个文件的权限,或者我错过了什么?
答案 0 :(得分:0)
我使用了Utilities.sleep(5000)作为.removeEditor()之后和完成.addViewer()函数之前的起点,这似乎可以解决问题!在添加查看器之前,只需要一两毫秒即可完成编辑器的删除。我会尝试在一个甜点上磨一段时间。
以下是最终代码:
if (sharingPermissions == 'edit' || sharingPermissions == 'submit') {
userFolder.addFolder(folderToShare);
folderToShare.addEditor(thisUser[1]);
} else if (sharingPermissions == 'view') {
try {folderToShare.removeEditor(thisUser[1]);}
catch (error) {}
Utilities.sleep(5000);
userFolder.addFolder(folderToShare);
folderToShare.addViewer(thisUser[1]);
}
现在似乎工作正常......