Тёмный

Google Sheets-Apps Script, eliminar celdas con base a una condición o dato especifico 

Carlos G
Подписаться 958
Просмотров 4,9 тыс.
50% 1

En este video, vamos a ver cómo se pueden eliminar filas con datos con base a una condición, esto nos puede ayudar cuando queremos alivianar nuestras hojas de cálculo, dejando solo los datos que necesitamos y eliminando todo lo demás de forma más automatizada.
Nos encantaría ayudarte a superar los desafíos que has enfrentado con Apps Script, proporcionandote soluciones prácticas. Participa de esta breve encuesta, para que podamos abordar dichos desafíos en futuros videos y tutoriales. • Post
Saludos.
#google #appsscript #googlesheetstutorial #googlesheets #googlesheetsapp #googleworkspace

Опубликовано:

 

9 июл 2022

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 28   
@Orthon
@Orthon Год назад
Muchísimas gracias por tu ayuda. Te comento que en mi caso el parámetro era númerico, un cero "0" y cuando lo ejecuté no obtuve ningún resultado. Eliminé dos simbolos igual == y me quedé sin practicamente filas (me borró todas menos una). Finalmente dejé dos simbolos = así: if(rangodata[i][0] == "0") y me funcionó correctamente borrando la única fila que cumplia esa condición. Lo comento por si algien se encuentra con un problema parecido. Muchas gracias + LIKE == Subcripción.
@carlosg89
@carlosg89 Год назад
Hola Orthon, excelente tú aporte, mil gracias
@diegojesusmelgarchacon4987
@diegojesusmelgarchacon4987 13 дней назад
Hola Carlos, buenos dias. Porfavor podrias hcer un video donde se elimine una fila en base a un dato duplicado en una columna. gracias
@carlosg89
@carlosg89 10 дней назад
Hola Diego, claro que sii, sus aportes son muy importantes para que podamos construir conocimiento juntos
@luankalua
@luankalua Год назад
Excelente video. Gracias por compartir tu conocimiento :). no me pierdo tus videos. Tengo 2 preguntas* Primera pregunta: es posible en if(rangodata[i][0] == "Paraguay") colocar un rango en vez de "Paraguay", por ejemplo texto que se tiene en celda "A1". Segunda pregunta: en const rangodata = sheet.getRange("D:D").getValues(); como puedo hacer para que funcione desde "D8:D" muchas gracias
@carlosg89
@carlosg89 Год назад
Hola Luan, espero te encuentres muy bien. Respuesta a la primera pregunta: creas una variable similar a la que hemos nombrado "rangodata" y dentro de las comillas del método getRange colocas el rango a evaluar, por ejemplo: const rangodata2 = sheet.getRange("A:A").getValues(); y luego en lugar de poner "Paraguay" en el if, pones el nombre de la variable creada, así se evaluaran los valores de ambas variables y cuándo dichos valores sean iguales se ejecutará el bucle que elimina las celdas, ejemplo: if(rangodata[i][0] === rangodata2[i][0] ), ten presente que los formatos deben ser iguales, por ejemplo los datos de la columna A y D deben ser tipo texto todos o número. La respuesta a la segunda pregunta: const rangodata = sheet.getRange("D8:D").getValues(); solo cambias el rango, el método getRange es para obtener un rango de datos y dicho rango se puede iniciar y finalizar donde desees. Me encató saludarte, espero sean útiles estás respuestas, quedo atento a cualquier otra inquietud.
@cformica81
@cformica81 4 месяца назад
Buenos dias Excelente video. Consulta y si quiero borrar filas que contenga una palabra especifica dentro de frases?
@carlosg89
@carlosg89 4 месяца назад
Hola, espero te encuentres muy bien, lo que puedes hacer es que en el bucle no pones === en lugar de eso pones == saludos y quedo atento
@jaimepelegri5475
@jaimepelegri5475 8 месяцев назад
Hola Carlos, excelente video. Gracias. Tengo la siguiente consulta: si la condición es que elimine las fechas anteriores a seis meses antes de la fecha de la última fila? como se pondría. No sé cómo trabajar el formato fecha en App Script. Gracias!
@carlosg89
@carlosg89 7 месяцев назад
Hola Espero te encuentres muy bien, un código que te puede servir es este function eliminarFilasAnterioresSeisMeses() { // Obtener la hoja de cálculo activa var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Obtener los datos de la hoja de cálculo var datos = hoja.getDataRange().getValues(); // Obtener la última fecha en la última fila de la hoja var ultimaFila = datos[datos.length - 1]; var fechaUltimaFila = ultimaFila[0]; // Asumiendo que la fecha está en la primera columna // Calcular la fecha seis meses antes var fechaSeisMesesAntes = new Date(fechaUltimaFila); fechaSeisMesesAntes.setMonth(fechaSeisMesesAntes.getMonth() - 6); // Iterar sobre las filas y eliminar las que cumplen la condición for (var i = datos.length - 1; i >= 0; i--) { var fechaActual = new Date(datos[i][0]); // Asumiendo que la fecha está en la primera columna // Comparar con la fecha seis meses antes de la última fila if (fechaActual < fechaSeisMesesAntes) { hoja.deleteRow(i + 1); // +1 porque las filas en hojas de cálculo comienzan desde 1 } } } var fechaSeisMesesAntes = new Date(fechaUltimaFila);: Aquí se crea un nuevo objeto Date en JavaScript utilizando la fecha que se encuentra en la variable fechaUltimaFila. La función new Date() crea un objeto de fecha y hora en función del valor proporcionado. En este caso, fechaUltimaFila debería contener la fecha de la última fila de tu hoja de cálculo. fechaSeisMesesAntes.setMonth(fechaSeisMesesAntes.getMonth() - 6);: Esta línea ajusta la fecha del objeto fechaSeisMesesAntes restando 6 meses al mes actual. fechaSeisMesesAntes.getMonth() devuelve el mes actual del objeto Date (0 para enero, 1 para febrero, ..., 11 para diciembre). fechaSeisMesesAntes.setMonth(...) establece el mes del objeto Date al valor proporcionado. En este caso, resta 6 al mes actual, lo que significa retroceder seis meses en el tiempo. Esto se hace para obtener la fecha que está exactamente seis meses antes de la fecha de la última fila en tu hoja de cálculo.
@cris.venture
@cris.venture Год назад
mil gracias, y si quiero borrar filas iguales de todas las hojas de un libro, que código usaría para llamar todas las hojas a la vez y no hacerlo una por una?
@carlosg89
@carlosg89 Год назад
Hola Cristian intenta con este código: const hojas = ['hoja 1','hoja 2']; const activarhojas = hojas.map((nombre) => SpreadsheetApp.getActiveSpreadsheet().getSheetByName(nombre)); Lo que se hace en el anterior código es que se realiza un arrego(Array) con las hojas que quieres que se activen, luego mapeas esos nombres y utilizas los métodos de SpreadsheetApp - getActiveSpreadsheet - getSheetByName, para activar dichas hojas, luego creas una variable para llamar le rango en especifico de las pestañas que si es igual para todas las hojas es igual a la que hemos llamado rangodata solo que en lugar de llamar la variable sheet llamas a la variable const activarhojas y listo. Intenta y si tienes dificultades me puedes volver a escribir, saludos
@alexispablojoseescobar4675
@alexispablojoseescobar4675 Год назад
Hola, excelente video, es posible borrar las celdas de al lado de la columna que cumpla tal condición ?
@carlosg89
@carlosg89 Год назад
Hola Alexis, lo que puedes hacer es que dentro del if cambiar la variable que elimina las filas sheet.deleteRow(), por la variable *const borrar = ss.getRange("Rango de cel das a borrar").clearContent();* en este caso, está evaluando la condición en "E:E" y el rando de celdas a borrar podría ser "F:F", además te dejo un video en el cual borramos contenido de celdas por si te sirve ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-5bJMlzdWL9g.html espero que con esto pueda resolver tú duda o de lo contrario me puedes volver a escribir, mil gracias y cuidate.
@alexispablojoseescobar4675
@alexispablojoseescobar4675 Год назад
​@@carlosg89 Muchas gracias por tu respuesta, el codigo seria el siguiente : function DEL_CR1() { const sheet = SpreadsheetApp.getActiveSpreadsheet(); const ss = SpreadsheetApp.getActiveSpreadsheet(); const rangodata = sheet.getRange("E:E").getValues(); for(let i = rangodata.length-1;i >= 0;i--) { if(rangodata[i][0] === "SI") { const borrar = ss.getRange("F:F").clearContent(); //sheet.deleteRow(i+1) } } } De esta manera me borra toda la columna completa "F". Lo que estoy buscando es que borre solamente las celdas de la columna "F" que cumplan con el criterio del "SI" de la columna E. aguardo su respuesta, muy amable.
@luankalua
@luankalua Год назад
@@alexispablojoseescobar4675 Lo resolviste?
@isidorofit7935
@isidorofit7935 4 месяца назад
Se pueden ocultar filas con un boton? o con checkbox?
@carlosg89
@carlosg89 4 месяца назад
Hola, espero te encuentres muy bien, te comparto un código que crea un botón en la barra de opciones de la google sheet con las funciones de mostrar y ocultar filas, espero te sirva, saludos. function onOpen() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var menuItems = [ {name: 'Ocultar Filas', functionName: 'ocultarFilas'}, {name: 'Mostrar Todas las Filas', functionName: 'mostrarTodasLasFilas'} ]; spreadsheet.addMenu('Filas', menuItems); } function ocultarFilas() { var sheet = SpreadsheetApp.getActiveSheet(); var selection = sheet.getSelection(); var range = selection.getActiveRange(); if (range.getNumRows() > 0) { // Oculta las filas seleccionadas range.activate(); range.offset(0, 0, range.getNumRows()).activate(); sheet.hideRows(selection.getActiveRange()); } else { Browser.msgBox('Selecciona al menos una fila para ocultar.'); } } function mostrarTodasLasFilas() { var sheet = SpreadsheetApp.getActiveSheet(); sheet.showRows(sheet.getRange(1, 1, sheet.getMaxRows(), 1)); }
@tox-on.2239
@tox-on.2239 9 месяцев назад
Como se que numero representa la columna G, en el video mencionas que la columna E es representada con el numero 0 pero yo no se cual numero es el de la columna E
@carlosg89
@carlosg89 9 месяцев назад
Hola, espero te encuentres bien, en este caso hablamos de una arreglo o matriz de datos, cuándo trabajamos con estas, el primer índice con el que se identifica la primera columna de la matriz es cero, por ejemplo si tengo una matriz de dos columnas A y B el índice 0 es la columna A y el indice 1 es la B, en el video tenemos un rango que capturamos en una variable que es G:G, como es una la primera columna del arreglo y también la única entonces su índice es 0, vuelvo a poner el ejemplo, supongamos que el rango que capturamos en la variable es A:B y quiero evaluar la condición en A entonces en el IF pongo [i] para recorrer todas las filas y [0] para recorrer la columna A, con esto el código sabe que debe ir a evaluar la primera columna del rango A:B, si quisiera evaluar una condición en B entonces pongo [1] que representa la segunda columna del arreglo, si tu primera columna es la G entonces el indice es 0, si es la segunda entonces es 1 y así sucesivamente. Espero mi explicación te sirva, saludos.
@MiguelCanoDj
@MiguelCanoDj Год назад
Como se puede hacer para que se ejecute siempre?
@carlosg89
@carlosg89 Год назад
Hola Miguel, se puede agregar un activador por tiempo y se configura si deseas que se ejecute cada minuto o cada hora, lo recomendable es cada hora, la otra opción es agregar un activador "De una hoja de cálculo" y se puede configurar que el script se ejecute al abrirse la hoja, al editarse, al producirse un cambio. Te dejo el video de cómo se implementan activadores ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-bvAOQKSb5kw.html
@cris.venture
@cris.venture Год назад
podrías usar la function onEdit(), esta te permite que se active el codigo cuando halla una modificacion.
@marcosantoniobustos5715
@marcosantoniobustos5715 Год назад
Hay que tener compu para configura un celu 😁
@carlosg89
@carlosg89 Год назад
Hola Marcos, si señor, el Script se debe realizar en un ordenador
@marcosantoniobustos5715
@marcosantoniobustos5715 Год назад
@@carlosg89 yo lo puedo hacer desde mi celular todo lo que hace una computadora y mucho mas con mis modificaciones y en menos tiempo tal asi que tiene red independiente amigo , me modifique y saque todos los productos sea de google o microsotf , Exel , window
@alexdesupercool2291
@alexdesupercool2291 Год назад
Hiciste la de dato específico, pero te falto en base a una CONDICIÓN 🙄
@carlosg89
@carlosg89 Год назад
Hola Alex, gracias por tu comentario, es muy importante, dime si tienes en mente alguna condición, para ingresarla al código y así poder complementar el video. mil gracias
Далее
Appsheet + macros+ gas
13:13
Просмотров 2,3 тыс.
Office Scripts ¡Aprende a usarlas! 🤓
15:46
Просмотров 19 тыс.