2012-08-11 144 views
7

我有一个Apps脚本,可以创建多个文件并将它们移动到一个文件夹中。有没有办法来直接放在一个文件夹中或者我首先要获得文件然后将其复制到相应的文件夹,然后从根文件夹删除它是这样的:Google Apps脚本:如何在文件夹中创建文件?

folder=DocsList.createFolder("MyFolder"); 
var file=DocsList.createFile(blob); 
file.addToFolder(folder); 
file.removeFromFolder(DocsList.getRootFolder()); 

的问题这是如果你打开Drive,你会看到文件首先放在根文件夹中,然后移动到MyFolder。所以在执行removeFromFolder之前有一点滞后。

回答

10

只是测试下面的代码

function Test() { 
    DocsList.createFolder('Folder1').createFolder('Subfolder1').createFile('File1', 'Empty'); 
} 

它能正常工作,即创造了新创建的文件夹My Drive\Folder1\Subfolder1File1文件。

+0

相关的问题@ megabyte1024 ,如果文件夹已经存在,我可以用.getFolderById(id)替换.createFolder(name)?你尝试过吗? – 2012-08-11 14:59:10

+0

刚刚做到了。一切正常。 'function Test2(){ var id = DocsList.createFolder('Folder2')。getId(); DocsList.getFolderById(id).createFile('File2','Empty'); }' – megabyte1024 2012-08-11 15:05:46

4

我只想评论(但没有50点声望点)。

当原始文章没有.createFolder适用于DocsList.createFolder(它创建根目录中的文件夹)和Folder.createFolder创建子文件夹在上面的原因当前文件夹。

这可能是有目共睹的,但我 - 但我花了好一段时间才能实现:-)

+1

您可能会考虑将其作为真实,完整,独立的答案而不是评论。 – bummi 2013-12-23 15:08:12

5

截至2015年,你应该使用DriveApp服务在谷歌驱动器来管理文件。 DriveApp有一个Folder类,允许您直接在文件夹中创建文件。

function createFilesInFolder() { 
    //This creates the folder 
    var folder = DriveApp.createFolder('My Folder'); 
    //This creates a file in the folder 
    var file = folder.createFile('My File.txt', 
           'Lorem ipsum', 
           MimeType.PLAIN_TEXT); 
} 
7

DocsList不再有效,并已被DriveAPI,Google App Services和Advanced Google服务取代。

这里,我离开我的测试代码,这个代码创建文件夹 - 子 - 谷歌文件 - PDF - 以不同的方式,并将其存储在文件夹和子文件夹,我希望会有所帮助

function Drive_2015() { //busca un folder, si no lo hay lo crea y crea 2 sub carpetas un google document copiado en cada una de ellas 
    var name='folder de prueba'; 
    var carpeta = DriveApp.getRootFolder().searchFolders("title contains '"+name+"'"); 
    if (carpeta.hasNext()===true) {  
     while (carpeta.hasNext()) { 
     var folder = carpeta.next(); 
     Logger.log(folder.getName()+' '+folder.getId()); 
     } 
    }else{ 
    var folder=DriveApp.getRootFolder().createFolder(name); 

    var parent=DriveApp.getFolderById(folder.getId()); // get parent folder 
    var folder2 =parent.createFolder('Subfolder'); // 1° way to create sub folder 
    var folder3=folder.createFolder(name+1);// 2° way to create sub folder (and more easy) 

    var doc = DocumentApp.create('Documento sta'); 
    var sheet = SpreadsheetApp.create('Spreadsheet sta'); 
    Utilities.sleep(300); // este retardo es para garantizar en el user-side la creacion del nuevo archivo 
    var files = DriveApp.getFilesByName('Documento sta');// or Id var file = DriveApp.getFileById(doc.getId()); 
    while (files.hasNext()) { 
     var file = files.next(); 
     Logger.log('ojo '+file.getName()); 
     file.makeCopy(folder3); 
     file.makeCopy(folder2); 
     var file2=file.makeCopy(folder); 
     file2.setName('Acta individual del alumno') 
     var blob = file2.getAs('application/pdf'); 
     var file2pdf = folder.createFile(blob); 
     var file2pdf = DriveApp.getFileById(file2pdf.getId()); 
     var file2pdf=file2pdf.makeCopy(folder); 
     Logger.log('se creó: '+file.getName()+' en la carpeta: '+folder.getName()+' el PDF es: '+file2pdf.getId()); 
     DriveApp.getFileById(file2pdf.getId()).setTrashed(true) 
     DriveApp.getFileById(docid).setTrashed(true) 
     } 
    } 
} 
相关问题