Как изменить разрешение на совместное использование файлов вложенных папок Google Drive? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть основная папка 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 Ответ

1 голос
/ 08 ноября 2019

Этот код поможет вам решить текущую проблему:

 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();.

Документы

Это документы, которые я использовал, чтобы помочь вам вЕсли вы хотите увидеть их или кого-либо еще, у кого есть похожая проблема:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...