我有一个主文件夹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);
};
}
答案 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();
。
这些是我曾经为您提供帮助的文档,以防您想要查看它们或遇到类似问题的其他人: