2012-08-11 14 views
7

Mam skrypt Apps, który tworzy wiele plików i przenosi je do folderu. Czy istnieje sposób, aby umieścić plik bezpośrednio w folderze czy mogę najpierw trzeba pobrać plik, a następnie skopiować go do odpowiedniego folderu, a następnie usunięcie go z folderu głównego tak:Skrypt Google Apps: jak utworzyć plik w folderze?

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

Problem z to jest tak, że jeśli otworzysz Dysk, zobaczysz pierwszy plik umieszczony w folderze głównym, a następnie przeniesiesz go do MyFolder. Jest więc trochę opóźnienia do wykonania removeFromFolder.

Odpowiedz

10

Wystarczy przetestowany następujący kod

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

To działa zgodnie z oczekiwaniami, czyli stworzył nową File1 dokument w nowo utworzonym folderze My Drive\Folder1\Subfolder1.

+0

pokrewne pytanie @ megabyte1024 , jeśli folder już istnieje, czy mogę zastąpić .createFolder (name) przez .getFolderById (id)? próbowałeś tego? –

+0

Po prostu to zrobiłem. Wszystko działa poprawnie. 'function Test2() { var id = DocsList.createFolder ('Folder2'). getId(); DocsList.getFolderById (id) .createFile ("File2", "Empty"); } ' – megabyte1024

4

Po prostu chciałem komentować (ale nie mam 50 punktów reputacji).

Powód, dla którego powyższa odpowiedź działa, gdy oryginalny post nie był taki, że .createFolder dotyczy zarówno DocsList.createFolder (który tworzy folder w katalogu głównym), jak i Folder.createFolder, który tworzy podfolder w bieżący folder.

Może to być oczywiste dla wszystkich, ale mnie - ale zajęło mi dobrą chwilę zrealizować :-)

+1

Możesz rozważyć uczynienie go prawdziwą, kompletną, samodzielną odpowiedzią zamiast komentarza. – bummi

5

Począwszy od roku 2015, należy skorzystać z usługi DriveApp do zarządzania plikami na Dysku Google. DriveApp ma klasę Folder, która umożliwia tworzenie plików bezpośrednio w folderze.

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

Dokumentacja Dokumenty nie działa i została zastąpiona przez DriveAPI, Usługi aplikacji Google i Zaawansowane usługi Google.

Tutaj zostawiam mój kod testowy kod ten tworzy foldery - podfoldery - google plików - pdf - i zapisuje je w foldery i podfoldery na różne sposoby, i mam nadzieję, że będą pomocne

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) 
     } 
    } 
} 
Powiązane problemy