2014-09-30 13 views
6

Ich versuche, einen Ordner zu erstellen, wenn er nicht existiert, aber der Code erstellt bei jeder Ausführung einen neuen Ordner. Ich weiß nicht, ob mein Code richtig ist.Wie erstelle ich einen Ordner, wenn er nicht existiert?

Hier ist mein Code:

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

Danke für Ihre Hilfe !!

Antwort

5

Sie benötigen die if-Bedingung nicht, wenn Sie eine Try/Catch-Struktur verwenden. Die try/catch-Struktur behandelt den Fall, in dem der Ordner nicht selbst existiert.

Probieren Sie es wie folgt aus:

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

Vielen Dank !!! Es klappt!!! –

+1

Gern geschehen :-), bitte erwäge die Antwort zu akzeptieren. Danke. –

2

Google hat seine Scripting geändert. Ich weiß, das ist eine alte Post, aber das ist die beste Antwort, die ich aktuelle einfiel:

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

hoffte, das hilft jemand anderes!

5

Ab Google Apps Script-Code im Jahr 2016 August

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

Dies ist, was ich auch tue, aber ich fand, dass getFoldersByName (fdr_name) .next() gab keinen Fehler zurück, wenn es keine Übereinstimmung gab. Ich habe im Abschnitt try: "var name = newFdr.getName()" hinzugefügt, um einen Fehler zu erzwingen. Das schien mein Problem zu lösen, aber ich bin mir immer noch nicht ganz sicher, warum es nötig war. – Craig

+0

Danke! Ich brauchte eine Weile Googeln, um endlich diese Antwort zu finden, und jetzt funktioniert mein Skript. – Ryan

Verwandte Themen