2014-09-30 3 views
6

Я пытаюсь создать папку, если она не существует, но каждый раз, когда я ее запускаю, создается новая папка. Я не знаю, правильный ли мой код.Как создать папку, если она не существует?

Вот мой код:

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

Спасибо за вашу помощь !!

ответ

5

На самом деле вам не нужно условие if, когда вы используете структуру try/catch. Структура try/catch обрабатывает случай, когда папка не существует сама по себе.

Попробуйте так:

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

Спасибо большое !!! Оно работает!!! –

+1

Добро пожаловать :-), пожалуйста, подумайте о принятии ответа. Спасибо. –

2

Google изменил сценарии. Я знаю, что это старый пост, но это лучший текущий ответ, который я мог придумать:

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

Надеется, что это помогает кто-то другое!

5

Как кода Google Apps Script в 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

Это то, что я делаю, но я обнаружил, что getFoldersByName (fdr_name) .next() не возвращал ошибку, когда совпадения не было. Я закончил добавление «var name = newFdr.getName()» в разделе try:, чтобы вызвать сбой. Это, похоже, исправить мою проблему, но я все еще не совсем уверен, зачем это нужно. – Craig

+0

Спасибо! Мне понадобилось некоторое время для поиска в Google, и теперь мой сценарий работает. – Ryan

Смежные вопросы