0

从编辑权限更改为查看权限后,我遇到了嵌套在文件夹中的 DriveApp 文件不继承文件夹权限的问题。步骤如下:

通过以下方式将具有“编辑”权限的文件夹(包含内部文件)添加到另一个用户的驱动器:

userFolder.addFolder(folderToShare);
folderToShare.addEditor(user);

...然后再次添加文件夹,这次将“编辑”权限更改为“查看”权限:

userFolder.addFolder(folderToShare);
folderToShare.addViewer(user); 

“文件夹”中的内部文件应根据父文件夹的权限更改权限。当“文件夹”更改为用户的“查看”权限时,用户应继承文件夹中文件的“查看”权限。但是,如果在调用 folder.addViewer(user) 时用户对“文件夹”中的文件具有“编辑”权限,则该文件夹将获得“查看”权限,但文件夹中的文件仍具有用户的“编辑”权限不变。

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(user) 之前尝试过 .removeEditor(user),但无济于事。我是否必须调用 folderToShare.getFiles() 并迭代以更改每个文件的权限,还是我遗漏了什么?

4

1 回答 1

0

我在 .removeEditor() 之后和完成 .addViewer() 函数之前使用 Utilities.sleep(5000) 作为起点,这似乎可以解决问题!在添加查看器之前,只需要一两毫秒即可完成编辑器的删除。我将尝试在一段时间内磨练一个甜蜜点。

这是最终代码:

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]);
      }  

现在似乎工作正常...

于 2013-10-18T04:24:07.443 回答