Crear carpetas en Google Drive automáticamente

Crear carpetas desde Google Apps Script
— by

Hoy les muestro como usar Google Apps Script para crear fácil y rápidamente carpetas con los parámetros que ustedes quieran.

Aquí te dejo la explicación en video

Cómo se crea una carpeta en Google Drive con Google Apps Script

Hay varias maneras de crear maneras manualmente en Google Drive, pero eso es tema de otro artículo, hoy nos interesa, es como crear carpetas desde Google Apps Script. Para esto, lo primero que necesitamos, es conectarnos con el servicio DriveApp

En realidad, si son nuevos a Google Apps Script, tenemos que acceder al editor. Para esto sigue los siguientes pasos:

  1. Accede a tu cuenta de Google
  2. Crea un nuevo archivo de Google Sheets (Aquí varias maneras de hacerlo)
  3. Ve a «Extensiones» > «Google Apps Script»
  4. Una vez allí, renombra el proyecto como «Creador de Carpetas»
  5. Renombra la función como «crearCarpeta»

Dentro de la función, vamos ahora si a acceder al servicio DriveApp y a llamar al método createFolder(nombre), donde el argumento nombre es el nombre que le quieres poner a la carpeta

function crearCarpeta() {
  
DriveApp.createFolder("Mi primera carpeta")

}

Sencillo, ¿No?

Lo único a tener en cuenta con este método, es que siempre lo va a crear en la carpeta raíz o «Mi Unidad» de Google Drive

La verdad es una mejor práctica siempre especificar la carpeta en la que se va a crear, para esto vamos primero a definir una variable carpeta, donde escogemos la carpeta y después aplicamos el método createFolder desde esa carpeta en vez de desde el DriveApp

Crear carpeta dentro de otra carpeta en Google Drive

En este ejemplo, lo hacemos otra vez desde la raíz, pero especificando que así lo queremos. Para esto, vas a usar el método getRootFolder para acceder a la carpeta raíz. Quedaría así:

function crearCarpetaEnRaiz() {
  var carpeta=DriveApp.getRootFolder()
  carpeta.createFolder("Mi primera carpeta")
}

En este caso nos aseguramos que queda en la carpeta que queremos.

Si quieres ir un paso más allá, en vez de .getRootFolder, usas .getFolderById para especificar la carpeta que quieras.

Para esto, necesitas saber la identificación de tu carpeta. Esta la traes desde la url de la carpeta en Google Drive

Ahora usas ese ID para el método getFolderById, asi:

function crearCarpeta() {
  var carpeta=DriveApp.getFolderById("1HDXTZ_qXZjDy_UcbJwvuHarEk7iS5X20")
  carpeta.createFolder("Mi primera carpeta")
}

Crear carpeta con subcarpetas


Ya conociendo el método anterior, podemos simultáneamente crear carpetas y subcarpetas.

Par esto, guardamos la recién creada carpeta en una variable nuevaCarpeta, y después volvemos a usar el mismo método así:

function crearSubcarpetasEnCarpetaDefinida() {
  var carpeta=DriveApp.getFolderById("1HDXTZ_qXZjDy_UcbJwvuHarEk7iS5X20")
  var nuevaCarpeta=carpeta.createFolder("Mi primera carpeta")
  nuevacarpeta.createFolder("Mi primera subcarpeta")
}

Y así mismo, podrías crear todas las sub carpetas que quisieras, simplemente repitiendo esa línea

function crearVariasSubcarpetas() {
  var carpeta=DriveApp.getFolderById("1HDXTZ_qXZjDy_UcbJwvuHarEk7iS5X20")
  var nuevaCarpeta=carpeta.createFolder("Mi primera carpeta")
  nuevacarpeta.createFolder("Subcarpeta 1")
  nuevacarpeta.createFolder("Subcarpeta 2")
  nuevacarpeta.createFolder("Subcarpeta 3")
  nuevacarpeta.createFolder("Subcarpeta 4")
}

Esto lo podrías hacer de manera más eficiente usando un bucle, así

function crearVariasSubcarpetas() {
  var carpeta=DriveApp.getFolderById("1HDXTZ_qXZjDy_UcbJwvuHarEk7iS5X20")
  var nuevaCarpeta=carpeta.createFolder("Mi primera carpeta")
  for(var i=1;i<=5;i++){
    nuevacarpeta.createFolder("Subcarpeta "+i)
  }
}

Crear carpeta desde Sheets

Podemos ahora, aplicar estos mismos conceptos, pero usando títulos y listas desde Google Sheets

Digamos que tengamos en nuestra hoja «Datos», en la celda B2, el nombre de la carpeta a crear. Entonces, debemos conectarnos a esta hoja y a esta celda para extraer el nombre, y luego si utilizar los métodos que ya vimos.

Queda´ría algo así

function crearCarpetaDesdeSheets() {
  var libro=SpreadsheetApp.getActiveSpreadsheet()
  var hoja=libro.getSheetByName("Datos")
  var nombreMaestra=hoja.getRange("B2").getValue()
  DriveApp.createFolder(nombreMaestra)
}

Del mismo modo que ya hicimos antes, podemos crear varias carpetas con el mismo nombre usando un bucle, así:

function crearVariasCarpetasDesdeSheets() {
  var libro=SpreadsheetApp.getActiveSpreadsheet()
  var hoja=libro.getSheetByName("Datos")
  var nombreCarpeta=hoja.getRange("B2").getValue()
  for(var i=1;i<=5;i++){
    DriveApp.createFolder(nombreCarpeta)
  }
}

Recuerda que así estás creando todas las carpetas en la raíz. Si quisieras crearlas en una carpeta específica, usamos getFolderById así:

function crearVariasCarpetasDesdeSheetsEnCarpetaMaestra() {
  var carpetaMaestra=DriveApp.getFolderById("1HDXTZ_qXZjDy_UcbJwvuHarEk7iS5X20")
  var libro=SpreadsheetApp.getActiveSpreadsheet()
  var hoja=libro.getSheetByName("Datos")
  var nombreCarpeta=hoja.getRange("B2").getValue()
  for(var i=1;i<=5;i++){
    carpetaMaestra.createFolder(nombreCarpeta)
  }
}

Resumen

Vimos en este artículo, varios métodos para crear carpetas automáticamente con la ayuda de Google Sheets y Google Apps Script. Ya la restricción es nuestra imaginación

Suscríbete para acceder al curso «Descubriendo el poder de Google Sheets» y empezar tu camino a la maestría de Sheets, Forms y Apps Script

Boletín

Nuestras últimas noticias en tu correo electrónico

Respuestas

  1. Avatar de Ricardo
    Ricardo

    Hola Juan, excelente tu tutorial, tengo un problema con el script o tal vez sea otra cosa. La idea era que desde un formulario que se llene se cree una carpeta por cada campo completado. Pero cada vez que lo hago tarda mucho en mostrar la carpeta en el Drive. Este es el Script

    function crearCarpetasAPartirDeUnListado() {
    var carpeta=DriveApp.getFolderById(«1TJ8VTR29O_257dy6uwjj6ytGiZtxYSlm»)
    var libro=SpreadsheetApp.getActiveSpreadsheet() ;
    var hoja=libro.getSheetByName(«Trabajos»);
    var numFilas=hoja.getLastRow()-1;
    var numColumnas=hoja.getLastColumn();
    var rango=hoja.getRange(2,1,numFilas).getValues();
    for (var i = 0; i < numFilas; i++){
    var carpetaactual=carpeta.createFolder(rango[i][0])
    }
    }

    function onOpen (){
    var menu=SpreadsheetApp.getUi().createMenu("Trabajos")
    menu.addItem("📁 Crear carpetas","crearCarpetasAPartirDeUnListado")
    menu.addToUi();
    }

    1. Avatar de jsguzmanb
      jsguzmanb

      Lo estas haciendo bien.

      Lo que pasa es que crear una carpeta es un proceso demorado comparado a otros
      Saludos!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Pin It on Pinterest

Share This