2014-09-30 16 views
6

Próbuję utworzyć folder, jeśli nie istnieje, ale kod tworzy nowy folder za każdym razem, gdy go uruchomię. Nie wiem, czy mój kod jest właściwy.Jak utworzyć folder, jeśli nie istnieje?

Oto mój kod:

var alumnopath = DocsList.getFolderById ('0Bzgw8SlR34pUbFl5a2tzU2F0SUk'); 
var alumno2 = alumno.toString(); 
Logger.log(alumno2); 
try { 
    var folderalumno = alumnopath.getFolder(alumno2); 
    if (folderalumno == undefined){ 
    var folderalumno = alumnopath.createFolder(alumno2); 
    } 
    else { 
    var folderalumno = alumnopath.getFolder(alumno2); 
    } 
} 
catch(e) { 
    var folderalumno = alumnopath.createFolder(alumno2); 
} 
folderalumno.createFile(pdf.getAs('application/pdf')).rename( alumno + " , " + fechafor); 

Dzięki za pomoc !!

Odpowiedz

5

Rzeczywiście nie potrzebujesz warunku if, jeśli korzystasz ze struktury try/catch. Struktura try/catch obsługuje przypadek, w którym folder nie istnieje sam.

Spróbuj tak:

var alumnopath = DocsList.getFolderById ('0Bzgw8SlR34pUbFl5a2tzU2F0SUk'); 
var alumno2 = alumno.toString(); 
Logger.log(alumno2); 
try{ 
    var folderalumno = alumnopath.getFolder(alumno2); 
} 
catch(e) { 
    var folderalumno = alumnopath.createFolder(alumno2); 
} 
folderalumno.createFile(pdf.getAs('application/pdf')).rename( alumno + " , " + fechafor); 
+0

dziękuję !!! To działa!!! –

+1

Nie ma za co :-), rozważ zaakceptowanie odpowiedzi. Dzięki. –

2

Google zmieniła włączony. Wiem, że to stary post, ale jest to najlepsza aktualna odpowiedź, którą mogę wymyślić:

function getFolder(parent_folder,folder_name){ 
    var folders = parent_folder.getFolders();  
    while (folders.hasNext()) { 
    var folder = folders.next(); 
    if(folder_name == folder.getName()) {   
     return folder; 
    } 
    } 
    return false; 
} 

var parent_folder = DriveApp.getFolderById(//id\\); 
var folderName = getFolders(parent_folder,name); 
if (folderName === false){ 
    folderName = outputfolderId.createFolder(name); 
} 

Mam nadzieję, że to pomoże komuś innemu!

5

Jako kodu Google Apps Script w 2016 Aug

var par_fdr = DriveApp.getFolderById(123456789A); // replace the ID 
var fdr_name = "child_fdr"; 

try { 
    var newFdr = par_fdr.getFoldersByName(fdr_name).next(); 
} 
catch(e) { 
    var newFdr = par_fdr.createFolder(fdr_name); 
} 
+0

To też robię, ale odkryłem, że getFoldersByName (nazwa_fdr) .next() nie zwracał błędu, gdy nie było dopasowania. Skończyło się na dodaniu "var name = newFdr.getName()" w sekcji try: wymusić niepowodzenie. To wydawało się naprawić mój problem, ale wciąż nie jestem do końca pewien, dlaczego było to potrzebne. – Craig

+0

Dzięki! Minęło trochę czasu, zanim zacząłem szukać odpowiedzi, a teraz działa mój skrypt. – Ryan

Powiązane problemy