所以我想创建和(公开)在现有父级中共享一个新文件夹。
例如:\ 2013年9月\ [此处为新文件夹]
当然,你可以:
但是,公开分享该文件夹是不可能的!
确实,如果您尝试使用:setSharing(DriveApp.Access.ANYONE,DriveApp.Permission.EDIT);
你会得到:“TypeError:在对象文件夹中找不到函数setSharing。”
没错,上面的DriveApp功能似乎只适用于使用DriveApp.createFolder制作的文件夹。
当然,没有办法简单地说:
......因为没有移动方法!
有没有人找到解决这个问题的方法?
答案 0 :(得分:3)
您不需要使用2个服务,driveApp已经为您所需要的内容构建了
你只是忘了你可以从另一个创建一个文件夹,而不仅仅是从root ...因此你不需要移动任何东西。
示例:
function createSharedFolder() {
var parent = DriveApp.createFolder('testFolder');
var child = parent.createFolder('child');
child.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
}
要解决这些简单的问题,请考虑使用自动完成功能,请参阅下面的屏幕截图:
如果您的父文件夹已经存在或者您不确定它,这里是一个处理所有用例的函数:(+一个测试函数的函数)
function test(){
createSharedSubFolder('Testparent','Testchild2');
}
function createSharedSubFolder(parent,child) { // folder names as string parameters
var folders = DriveApp.getFolders();
var exist = false
while (folders.hasNext()) {
var folder = folders.next();
if(folder.getName()==parent){exist = true ; var folderId = folder.getId() ; break};// find the existing folder
}
if(exist){
var child = DriveApp.getFolderById(folderId).createFolder(child).setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
}else{
var childFolder = DriveApp.createFolder(parent).createFolder(child);
childFolder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
}
}
答案 1 :(得分:2)
DocsList和DriveApp的组合非常有用。
/* CODE FOR DEMONSTRATION PURPOSES */
function main() {
var parentFolder = DocsList.getFolder('September 2013');
var idNewFolder = parentFolder.createFolder('New Folder').getId();
var newFolder = DriveApp.getFolderById(idNewFolder);
newFolder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
}