如何更改共享权限Google Drive子文件夹文件?

时间:2019-11-08 11:46:03

标签: google-apps-script

我有一个主文件夹Folder 1 Folder 1中有多个包含文件的子文件夹。我想更改所有共享权限为Access.ANYONE_WITH_LINK的子文件夹文件,而无需登录。目前,我有以下代码,但是只有在没有子文件夹的情况下,它才有效。

    function myFunction() {
      var folderId = "Folder ID";
      var files = DriveApp.getFolderById(folderId).getFiles();
      var result = [];
      while (files.hasNext()) {
          var file = files.next();
          file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
          var temp = {
            file_name: file.getName(),
            url: "http://drive.google.com/uc?export=view&id=" + file.getId(),
          };
          result.push(temp);
      };

    }

1 个答案:

答案 0 :(得分:1)

此代码将帮助您解决当前的问题:

 function myFunction() {
   var folderId = "main-id-folder";
   // Take the mainder folder
   var mainFolder = DriveApp.getFolderById(folderId);
   // Take the subfolders inside your main folder
   var subFolders = mainFolder.getFolders();
   var result = [];

   // Iterate over each subfolder
   while(subFolders.hasNext()){
     var subFolder = subFolders.next();
     // Take the files inside the current subfolder
     var files = subFolder.getFiles();
     // Take each file inside the current subfolder
     while(files.hasNext()){
       var file = files.next();
       var tmp = {
         file_name: file.getName(),
         url: "https://docs.google.com/spreadsheets/d/" + file.getId() + "/edit#gid=0"
       };
       // For the current file, stablish the permissions you want
       file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
       result.push(tmp);
     }
   }
   Logger.log(result);
}

您遇到的问题是,您只想从主文件夹中获取文件,但是要在每个子文件夹中获取文件,您需要首先使用.getFolders();提取每个子文件夹,然后再对每个他们,您可以使用.getFiles();

文档

这些是我曾经为您提供帮助的文档,以防您想要查看它们或遇到类似问题的其他人: