2014-09-30 17 views
6

Sto provando a creare una cartella se non esiste, ma il codice crea una nuova cartella ogni volta che la eseguo. Non so se il mio codice è giusto.Come creare una cartella se non esiste?

Ecco il mio codice:

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); 

Grazie per il vostro aiuto !!

risposta

5

In realtà non è necessaria la condizione if quando si utilizza una struttura try/catch. La struttura try/catch gestisce il caso in cui la cartella non esiste da sola.

Prova in questo modo:

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

Grazie mille !!! Funziona!!! –

+1

Prego :-), per favore considera di accettare la risposta. Grazie. –

2

Google ha cambiato il suo scripting. So che questo è un vecchio post ma questa è la migliore risposta attuale che potrei inventare:

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); 
} 

Spero che questo aiuti qualcun altro!

5

A partire dal codice di Google Apps Script nel 2016 agosto

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

Questo è quello che faccio anch'io, ma ho trovato che getFoldersByName (nome_fdr) .next() non restituiva un errore quando non c'era alcuna corrispondenza. Ho finito per aggiungere "var name = newFdr.getName()" nella sezione try: per forzare un errore. Questo sembrava risolvere il mio problema, ma non sono ancora abbastanza sicuro del perché fosse necessario. – Craig

+0

Grazie! Mi ci è voluto un po 'di tempo su Google per trovare finalmente questa risposta, e ora il mio script funziona. – Ryan

Problemi correlati