sin rodeos mira esta breve Guía sobre Rangos Dinámicos en Google Sheets que te ayudaran a ahorrar tiempo , cuando implementes soluciones con código Google apps script en tus hojas de cálculo de Google
Revisa el vídeo
//variables de alcance global o general (para todos los scripts)
const ss = SpreadsheetApp.getActive().getSheetByName("FORMATO DE PEDIDO");
const historico = SpreadsheetApp.getActive().getSheetByName("Historico");
function obenerRangoDiamico() {
let ufila = ss.getLastRow(); Logger.log(ufila);
let rangoDinamico = ss.getRange("C13:C"+ufila);
let valores = rangoDinamico.getValues();
Logger.log(rangoDinamico.getA1Notation());
Logger.log(valores);
let pedidosSinNulos = valores.filter(subarray => subarray.length > 0 && !subarray.every(element => element === null || element === undefined || element == ""));
Logger.log(pedidosSinNulos); //para filtrar nulos,indefinidos o vacios
let pedidosFin = pedidosSinNulos.join("----");
Logger.log(pedidosFin); //para separar cada concepto y poder usar split en la hoja posteriormente 👈
historico.appendRow([pedidosFin])
}
//===================== Solucion #1 ===========================================================
function obtenerRangoDinamicoCorrecto() {
// Obtener todos los valores de la columna C
let valoresColumnaC = ss.getRange("C:C").getValues();
let ultimaFilaReal = 0;
// Iterar desde la última fila teórica hacia arriba
for (let i = valoresColumnaC.length - 1; i >= 0; i--) {
// Si la celda no está vacía (después de recortar espacios en blanco)
if (valoresColumnaC[i][0].toString().trim() !== "") {
ultimaFilaReal = i + 1; // +1 porque los arrays son base 0, las filas son base 1
break; // Una vez que encontramos la última fila con datos, salimos
}
}
Logger.log("La última fila con datos en la columna C es: " + ultimaFilaReal);
// Ahora puedes usar esta 'ultimaFilaReal' para tu rango dinámico
if (ultimaFilaReal >= 13) {
let rangoDinamico = ss.getRange("C13:C" + ultimaFilaReal);
Logger.log(rangoDinamico.getA1Notation());
Logger.log(rangoDinamico.getValues());
} else {
Logger.log("No hay datos en el rango C13 o superior.");
}
}
//===================== Solucion #2 ===========================================================
function obtenerRangoDinamicoConGetDataRange() {
let dataRange = ss.getDataRange();
let ufila = dataRange.getLastRow(); // Esto te dará la última fila de todo el rango de datos
Logger.log("La última fila con datos usando getDataRange es: " + ufila);
if (ufila >= 13) {
let rangoDinamico = ss.getRange("C13:C" + ufila);
Logger.log(rangoDinamico.getA1Notation());
Logger.log(rangoDinamico.getValues());
} else {
Logger.log("No hay datos en el rango C13 o superior.");
}
}
//===================== Solucion #3 ===========================================================
function obenerRangoDinamicoMejorado() {
// Obtener un rango amplio, por ejemplo, hasta la fila 1000, para estar seguros
// O usar ss.getRange("C:C") para toda la columna
let rangoAmplio = ss.getRange("C13:C" + ss.getMaxRows());
let valoresRangoAmplio = rangoAmplio.getValues();
let ultimaFilaRealEnRango = 0;
for (let i = valoresRangoAmplio.length - 1; i >= 0; i--) {
if (valoresRangoAmplio[i][0].toString().trim() !== "") {
ultimaFilaRealEnRango = 13 + i; // 13 es la fila de inicio, i es el índice del array
break;
}
}
Logger.log("La última fila con datos en el rango C13 hacia abajo es: " + ultimaFilaRealEnRango);
if (ultimaFilaRealEnRango >= 13) {
let rangoDinamico = ss.getRange("C13:C" + ultimaFilaRealEnRango);
Logger.log(rangoDinamico.getA1Notation());
Logger.log(rangoDinamico.getValues());
} else {
Logger.log("No hay datos significativos a partir de la fila 13.");
}
}
O tal ve prefieras crear una copia para probarlo de forma más rápida 😉
Aunque yo te recomiendo que escribas el código desde cero , o al menos lo copies y lo revises para que te familiarices con los métodos de apps script 😎
En fin, la decisión es tuya ;)
Nota: si vas a usar el botón para crear tu copia debes asegurarte que estés logueado o autenticado con tu cuenta de Gmail y de preferencia tengas tu Google Drive activo en otra pagina web, de lo contrario tendrás problemas para crear tu copia. 🤷♂️
Te pude interesar:
🔥 Como extraer el código explicado en un video Tutorial de apps script de YouTube ✨
o el siguiente video 👇
síguenos en: