2012-08-11 141 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) 
     } 
    } 
} 
相關問題