Algunas funciones que pueden ayudarte o ahorrarte algo de tiempo.
Last active
October 11, 2025 21:39
-
-
Save Dms-Codee/bea91ccd1f1162fdc2aec04b31c89426 to your computer and use it in GitHub Desktop.
Google Apps Script Utils 🔴🟡🟢🔵
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @fileoverview Script de Google Apps Script que obtiene información sobre las subcarpetas | |
| * dentro de una carpeta específica de Google Drive utilizando su ID. | |
| */ | |
| /** | |
| * ID de la carpeta principal en Google Drive de la cual se obtendrá la información. | |
| * Reemplaza el valor con el ID de tu carpeta. | |
| * @type {string} | |
| */ | |
| const idFolder = ''; | |
| /** | |
| * Name: driveInfoFolders | |
| * | |
| * Description: Obtiene información de todas las subcarpetas dentro de una carpeta de Drive específica. | |
| * | |
| * Esta función accede a una carpeta de Google Drive a través de su ID (`idFolder`), | |
| * itera sobre todas las subcarpetas contenidas dentro de ella y genera un arreglo de objetos | |
| * con los datos más relevantes de cada carpeta encontrada: nombre, URL y descripción. | |
| * | |
| * @returns {Array<{nombreFolder: string, url: string, descripcion: string}>} | |
| * Un arreglo con la información de cada subcarpeta encontrada. | |
| * | |
| * @example | |
| * // Ejemplo de uso | |
| * const folders = driveInfoFolders(); | |
| * Logger.log(folders); | |
| */ | |
| function driveInfoFolders() { | |
| // Obtiene la carpeta principal usando su ID | |
| var folderMain = DriveApp.getFolderById(idFolder); | |
| // Obtiene un iterador con todas las subcarpetas dentro de la carpeta principal | |
| var folders = folderMain.getFolders(); | |
| // Arreglo donde se almacenará la información de cada subcarpeta | |
| var listado = []; | |
| // Recorre todas las subcarpetas y extrae sus datos | |
| while (folders.hasNext()) { | |
| var folder = folders.next(); | |
| var item = { | |
| nombreFolder: folder.getName(), | |
| url: folder.getUrl(), | |
| descripcion: folder.getDescription() | |
| }; | |
| listado.push(item); | |
| } | |
| // Devuelve el listado con la información recopilada | |
| return listado; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @fileoverview Script de Google Apps Script que obtiene los datos de una pestaña específica | |
| * dentro de una hoja de cálculo de Google Sheets utilizando su ID y nombre de pestaña. | |
| */ | |
| /** | |
| * ID de la hoja de cálculo (Spreadsheet) en Google Sheets. | |
| * Reemplaza el valor con el ID de tu documento. | |
| * @type {string} | |
| */ | |
| const idSpreadsheet = ""; | |
| /** | |
| * Nombre (o índice numérico) de la pestaña dentro de la hoja de cálculo. | |
| * @type {string} | |
| */ | |
| const sheetName = ""; | |
| /** | |
| * Obtiene todos los datos de una pestaña específica dentro de una hoja de cálculo de Google Sheets. | |
| * | |
| * Esta función abre una hoja de cálculo mediante su ID (`idSpreadsheet`), accede a la pestaña | |
| * indicada (`sheetName`) y devuelve una matriz con todos los valores de su rango de datos. | |
| * | |
| * @param {string} idSpreadSheet - ID de la hoja de cálculo de Google Sheets. | |
| * @param {string} sheetName - Nombre de la pestaña (también puede ser su índice numérico). | |
| * @returns {Array<Array<*>>} Una matriz bidimensional con los valores de las celdas. | |
| * Cada subarreglo representa una fila de la hoja. | |
| * | |
| * @example | |
| * // Ejemplo de uso: | |
| * const data = getSheetData(idSpreadsheet, sheetName); | |
| * Logger.log(data); | |
| * | |
| * // Si deseas eliminar los encabezados, puedes usar: | |
| * // data.shift(); | |
| */ | |
| function getSheetData(idSpreadSheet, sheetName) { | |
| // Abre la hoja de cálculo por su ID | |
| const ss = SpreadsheetApp.openById(idSpreadSheet); | |
| // Obtiene la pestaña específica por nombre y sus valores | |
| const data = ss.getSheetByName(sheetName).getDataRange().getValues(); | |
| // Si deseas eliminar los encabezados (primera fila), descomenta la siguiente línea: | |
| // data.shift(); | |
| // Devuelve todos los valores de la pestaña | |
| return data; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @fileoverview Función `doGet` de Google Apps Script que genera una interfaz web HTML | |
| * a partir de una plantilla (archivo .html) y agrega las meta etiquetas necesarias | |
| * para hacerla responsiva, compatible con frameworks como Bootstrap. | |
| */ | |
| /** | |
| * Función de entrada principal (`doGet`) utilizada por los Web Apps de Google Apps Script. | |
| * | |
| * Esta función se ejecuta automáticamente cuando se accede al URL del Web App. | |
| * Carga una plantilla HTML (por ejemplo `index.html`), la evalúa, establece un título | |
| * para la página y agrega la metaetiqueta `viewport` para asegurar que la interfaz | |
| * sea responsiva en dispositivos móviles. | |
| * | |
| * @returns {GoogleAppsScript.HTML.HtmlOutput} | |
| * Un objeto `HtmlOutput` configurado con título y metaetiquetas, listo para mostrarse en el navegador. | |
| * | |
| * @example | |
| * // Al desplegar el script como Web App, esta función se ejecutará automáticamente al abrir el enlace: | |
| * // https://script.google.com/macros/s/AKfycbx1234567890/exec | |
| */ | |
| function doGet() { | |
| // Crea una plantilla HTML a partir del archivo 'index.html' en el proyecto | |
| var template = HtmlService.createTemplateFromFile('index'); | |
| // Evalúa la plantilla y establece el título de la página web | |
| var html = template.evaluate().setTitle('ElTituloDeTuSitio'); | |
| // Crea un objeto HtmlOutput a partir del contenido generado | |
| var htmlOutput = HtmlService.createHtmlOutput(html); | |
| // Agrega una metaetiqueta 'viewport' para hacer el sitio responsivo (ideal para Bootstrap) | |
| htmlOutput.addMetaTag('viewport', 'width=device-width, initial-scale=1'); | |
| // Devuelve el contenido HTML procesado y listo para renderizarse en el navegador | |
| return htmlOutput; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @fileoverview Función de utilidad para convertir una URL de vista previa de Google Drive | |
| * en una URL visible y utilizable dentro del atributo `src` de una etiqueta `<img>`. | |
| */ | |
| /** | |
| * Convierte una URL de Google Drive en una URL directa para mostrar imágenes. | |
| * | |
| * Google Drive no proporciona por defecto enlaces directos a imágenes utilizables en HTML. | |
| * Esta función toma una URL de un archivo almacenado en Drive, extrae el ID del archivo | |
| * y construye una URL con el formato correcto para poder usarla como fuente (`src`) | |
| * en una etiqueta `<img>`. | |
| * | |
| * @param {string} imgURL - URL original del archivo en Google Drive. | |
| * Ejemplo de entrada: | |
| * `https://drive.google.com/file/d/1A2B3C4D5E6F7G8H9I/view?usp=sharing` | |
| * | |
| * @returns {string} Una URL visible que puede utilizarse directamente en el atributo `src` | |
| * de una etiqueta `<img>`. | |
| * Ejemplo de salida: | |
| * `https://drive.google.com/uc?export=view&id=1A2B3C4D5E6F7G8H9I` | |
| * | |
| * @example | |
| * // Ejemplo de uso: | |
| * const originalURL = "https://drive.google.com/file/d/1A2B3C4D5E6F7G8H9I/view?usp=sharing"; | |
| * const visibleURL = setImgUrl(originalURL); | |
| * Logger.log(visibleURL); | |
| * // Resultado: | |
| * // https://drive.google.com/uc?export=view&id=1A2B3C4D5E6F7G8H9I | |
| */ | |
| function setImgUrl(imgURL) { | |
| // Divide la URL por cada '/' para obtener las partes del enlace | |
| let splitURL = imgURL.split('/'); | |
| // Extrae el ID del archivo (usualmente se encuentra después del sexto slash) | |
| let getImgID = splitURL[5]; | |
| // Construye la URL visible y utilizable como fuente de imagen | |
| let visibleURL = 'https://drive.google.com/uc?export=view&id=' + getImgID; | |
| // Devuelve la nueva URL | |
| return visibleURL; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * @fileoverview Script de Google Apps Script que convierte una pestaña de Google Sheets | |
| * en un JSON consumible mediante `fetch` u otras solicitudes HTTP. | |
| * | |
| * Incluye funciones para: | |
| * - Obtener los datos de una hoja de cálculo. | |
| * - Transformar los datos en un arreglo de objetos personalizados. | |
| * - Exponer un endpoint web (`doGet`) que devuelve el JSON resultante. | |
| */ | |
| /** | |
| * ID de la hoja de cálculo (Spreadsheet) en Google Sheets. | |
| * Reemplaza el valor con el ID de tu documento. | |
| * @type {string} | |
| */ | |
| const idSpreadsheet = ""; | |
| /** | |
| * Nombre (o índice) de la pestaña dentro de la hoja de cálculo que se convertirá a JSON. | |
| * @type {string} | |
| */ | |
| const sheetName = ""; | |
| /** | |
| * Obtiene los datos de una pestaña específica y los convierte a formato JSON. | |
| * | |
| * Esta función abre la hoja de cálculo mediante su ID (`idSpreadsheet`), | |
| * obtiene los valores de la pestaña indicada (`sheetName`), | |
| * y convierte los datos en un objeto estructurado mediante `createObject()`. | |
| * | |
| * @param {string} idSpreadSheet - ID de la hoja de cálculo de Google Sheets. | |
| * @param {string} sheetName - Nombre o índice de la pestaña a convertir. | |
| * @returns {string} Una cadena JSON representando los datos de la hoja. | |
| * | |
| * @example | |
| * // Ejemplo de uso: | |
| * const jsonData = outputData(idSpreadsheet, sheetName); | |
| * Logger.log(jsonData); | |
| */ | |
| function outputData(idSpreadSheet, sheetName) { | |
| // Abre la hoja de cálculo por su ID | |
| const ss = SpreadsheetApp.openById(idSpreadSheet); | |
| // Obtiene los valores de todas las celdas dentro de la pestaña especificada | |
| const data = ss.getSheetByName(sheetName).getDataRange().getValues(); | |
| // Si deseas eliminar los encabezados, descomenta la siguiente línea: | |
| // data.shift(); | |
| // Convierte el arreglo bidimensional en un objeto estructurado | |
| const object = createObject(data); | |
| // Convierte el objeto final a formato JSON | |
| const json = JSON.stringify(object); | |
| // Devuelve el JSON como cadena | |
| return json; | |
| } | |
| /** | |
| * Construye un objeto estructurado a partir de los datos obtenidos de la hoja. | |
| * | |
| * Por defecto, genera un objeto con una propiedad `relatedObjs` que contiene | |
| * un arreglo de objetos (uno por cada fila de la hoja). | |
| * | |
| * Esta función puede personalizarse para mapear las columnas de la hoja | |
| * a propiedades específicas de cada objeto. | |
| * | |
| * @param {Array<Array<*>>} data - Datos de la hoja de cálculo obtenidos con `getValues()`. | |
| * @returns {{relatedObjs: Array<Object>}} Objeto con un arreglo de elementos representando cada fila. | |
| * | |
| * @example | |
| * // Ejemplo de personalización: | |
| * // Si tu hoja tiene columnas: Nombre, Edad, País | |
| * // puedes modificar dentro del forEach así: | |
| * // let typeObj = { nombre: elemento[0], edad: elemento[1], pais: elemento[2] }; | |
| */ | |
| function createObject(data) { | |
| // Crea el objeto contenedor con una propiedad tipo array | |
| let object = { relatedObjs: [] }; | |
| // Recorre cada fila del arreglo de datos | |
| data.forEach(elemento => { | |
| // Crea un objeto temporal con las propiedades de cada fila (personalizable) | |
| let typeObj = { | |
| // nombre: elemento[0], | |
| // edad: elemento[1], | |
| // pais: elemento[2] | |
| }; | |
| // Agrega el objeto al arreglo principal | |
| object.relatedObjs.push(typeObj); | |
| }); | |
| // Devuelve el objeto estructurado | |
| return object; | |
| } | |
| /** | |
| * Función `doGet` que expone un endpoint público en formato JSON. | |
| * | |
| * Al desplegar el script como Web App, esta función se ejecuta al acceder a la URL pública, | |
| * devolviendo la salida JSON del método `outputData()`. | |
| * | |
| * @returns {GoogleAppsScript.Content.TextOutput} Respuesta HTTP en formato JSON lista para ser consumida. | |
| * | |
| * @example | |
| * // Ejemplo de consumo desde JavaScript: | |
| * // fetch('https://script.google.com/macros/s/AKfycbx1234567890/exec') | |
| * // .then(response => response.json()) | |
| * // .then(data => console.log(data)); | |
| */ | |
| function doGet() { | |
| // Genera la respuesta JSON a partir de los datos de la hoja | |
| return ContentService | |
| .createTextOutput(outputData(idSpreadsheet, sheetName)) | |
| .setMimeType(ContentService.MimeType.JSON); | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment