Тёмный

[Google Sheets] ocultar o eliminar filas con cierta condición 

Ofimática para Emprendedores
Подписаться 3,1 тыс.
Просмотров 19 тыс.
50% 1

En este video te mostrare como ocultar o eliminar filas con cierta condición, es decir usaremos 2 condiciones o requisitos para ocultar filas, en Google Sheets y lo resolveremos usando Google apps script.
ver video #2.-eiminar filas.- • Eliminar filas en Goog...
El ejemplo trata de un emprendimiento de helados en el que el dueño trata de controlar los pedidos de helado y desea ocultar/eliminar las filas de los helados que reúnan 2 características, siendo la mas importante el que el pedido ya se haya despachado o enviado
puedes revisar también el articulo aquí: sites.google.com/view/ofimati....
si te ha parecido útil.............
¡SUSCRIBETE A MI CANAL! / ofimática para emprend...
Sígueme en:
Facebook: / ofimaticaparaemprended...
Web: sites.google.com/view/ofimati...
#googlesheets #googleappsscript #appsscript #googleapps #googlescripts #ofimaticaemprendedor

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

 

20 дек 2020

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 68   
@Leover378
@Leover378 3 года назад
Excelente vídeo.
3 года назад
gracias por tu apoyo :)
@javiOnOne
@javiOnOne 3 года назад
Muchas gracias, y bien explicado. Una cuestión, ¿se puede hacer de forma automática?. Sin tener que generar un botón de ejecución. Me refiero a un evento "onchange" o similar (no sé como se llama en Google Docs). Gracias
3 года назад
Hola Javier , si es posible y eso dependerá de las adaptaciones que desees hacer, normalmente el evento/función usado es onEdit en esta pequeña búsqueda en mi web de ejemplos podras ver 3 opciones diferentes de uso de la función onEdit.- sites.google.com/search/ofimaticaparaemprendedores?query=onedit&scope=site&showTabs=false saludos
@amirajulietakollrich3492
@amirajulietakollrich3492 3 года назад
muy bueno el video! información util y muy clara para aprender y no solo copiar y pegar.... tengo una duda, estoy intentando eliminar, y no sé bien cómo actualizar el índice.... le puse i = i-1 (ya que si elimino la fila, tiene que contar desde la anterior), pero me empieza a eliminar todo, aun cuando no se cumple la condicion!
3 года назад
Hola Amira Julieta.- como siempre mi primer recomendación es que 1.-reproduzcas el ejemplo tal cual y solo hasta que obtengas éxito en el y hayas comprendido el código intentes realizar la adaptación, pues si no se cumplen estas 2 condiciones , me temo que no estas en posición de poder adaptar. 2.-en el caso que comentas el error es debido a que si el índice del bucle es 0 y entonces pretendes que haga una operación de(i-1) 0-1, esto te daría -1 y no existe una celda inferior a 1 dentro de una hoja de calculo, por ello en mi ejemplo tengo ss.hideRows(i+2); lo que equivale para el primer caso (0+2)=2 es decir empieza en la fila 2 a ocultar/eliminar según sea el caso , si se cumple la condición if. espero te sea de ayuda.
@JairChaux
@JairChaux 2 года назад
Saludos desde Colombia, gracias por todos tus vídeos... ¿Es posible ocultar formulas en Google sheets?
2 года назад
Hola Jair.- No creo, lo mas parecido a eso es "disfrazarlas" por ejemplo con texto color blanco para que no se noten y quitar la opción de ver la barra de fórmulas y proteger las celdas. obvio si ocultas la fila , como es el caso de este video , las formulas estarán ocultas
@cristianvera2144
@cristianvera2144 2 года назад
Hola !!! Nos podrías hacer un video en el que se de la condición siguiente: Que cuando se esté llenando un formulario en la parte del "menú desplegable" se seleccione un dato (un dni por ejemplo) que va a ir a una hoja de Google Sheets, luego por un proceso automático en la noche (script para generarlo) ese dni que se colocó en el formulario sea eliminado del desplegable que tenga el formulario. Lo que se busca es que todos los días en la mañana partamos el día teniendo el desplegable del formulario "limpio" sin los dni que ya se seleccionaron otros días hacia atrás y que ya no deberían aparecer en dicho desplegable. Espero haberme entendido. Gracias. 👍
2 года назад
Hola Cristian .- podrías precisar algunas cosas! 1.-a que te refieres con proceso automático en la noche!? 2.-que tan "noche"?..., es decir a partir de que hora!!!?? 3.- cuantos "dni" deberían existir en la lista desplegable? 4.-en teoría se deberá terminar con cero dni-s disponibles, esto es así? 5.- todos los días en la mañana es a partir de las 8, 9, 10..!!? 6.-el formulario tendrá otras preguntas? 7.-cuantas preguntas tendría?, esto con el fin de hacer un ejercicio lo mas parecido a la realidad de algunos de ustedes finalmente. esperaría este tipo de preguntas en algún video asociado a formularios y no a Google Sheets, ya que va más de acuerdo al tema, pero en fin, lo que quería proponerte es que crees un formulario con la estructura de datos que estas interesado y después trasfieres la propiedad a mi correo para poder hacer algunas pruebas. no te garantizo que lo haga yo de inmediato ya que tengo muchas muchas cosas pendientes por sacar, pero según vaya pudiendo le voy picando a las teclas a ver que sale.
@josegarcia-xp1mt
@josegarcia-xp1mt 2 года назад
buenas amigo excelente código una consulta , se puede hacer que en vez de ocultar la fila oculte las columnas donde se cumpla las condiciones, ejemplo que si dice vainilla o fresa y el estatus este en enviado. al ejecutarlo se oculte donde este el sabor. existe manera?
2 года назад
Hola José.- normalmente las filas son las que están asociadas a un dato ya que pertenecen a un conjunto, no así a una columna, podrías comentar por que buscas ocultar esa columna!!!?? puedes aportar un caso concreto en que sea necesario hacerlo?
@TiranoEstudios
@TiranoEstudios 2 года назад
Primero quiero felicitarte, tremendo trabajo el que haces y muy bien explicado. Me gustaría hacerte una consulta sobre el código, al eliminar las columnas. ss.deleteRow(i+2); Cuando hace el recorrido solo elimina correctamente la primera fila. Me explico. En mi tabla las siguientes filas cumplen la condición: (45,54,59) y deberían ser eliminadas, pero las que se eliminan son las siguientes : (45,55,61), como te darás cuenta se van recorriendo 1+ cada que se elimina una fila ya que en el segundo caso en ves de eliminar la 54 borra la 55 y en el tercer caso al borrar la 59 borra la 61 por lo que se a recorrido 2 espacios. El ejemplo lo replique tal cual en tu vídeo y como te comente al ocultar las filas funciona perfecto, pero al eliminarlas el código recorre 1 fila mas cada que se cumple la condición.
2 года назад
Hola Drake.- yo diría que imposible que te salga diferente (a menos que me demuestres lo contrario) veras.- el código esta probado no una vez , sino varias veces , es por ello que no escribo código desde cero en el video (aunque am muchos les gusta ese tipo de videos), ya que prefiero probarlo ,hasta asegurarme que no tiene errores y me da el resultado esperado. dicho esto me queda claro que si lo reproduces fielmente tal cual esta en mi video te garantizo que estarías obteniendo el mismo resultado. Donde vienen los problemas.- pues estos ocurren en la adaptación que las personas hace del mismo y ese es tu caso, pues mencionas la fila 45 a 61 que no existen en mi ejemplo. Que puede estarte fallando entonces.-la respuesta mas cercana la tienes tu mismo, yo solo puedo hipotetizar algunas cosas: 1.-tal vez es el rango, en mi caso esta definido así: var datos = ss.getRange(2, 2, uf, 6).getDisplayValues(); es decir empieza en la fila 2, columna 2 que abarca hasta la ultima fila o "uf" de la columna 6 si ese no es tu caso deberías actualizar 2.-posiblemente falle las comparaciones, en mi ejemplo se da así: if(datos[i][3] == "Vainilla" && datos[i][4] == "Enviado"|| datos[i][3] == "Fresa" && datos[i][4] == "Enviado"){ es decir existen 2 comparaciones o posibilidades: A.-que la fila analizada de la columna 4 ( datos[i][3] ) sea igual a vainilla y que la columna 5 (datos[i][4]) sea igual a "Enviado" o B.-que la columna 4 sea igual a fresa y la col 5 a "Enviado, es decir .-datos[i][3] == "Fresa" && datos[i][4] == "Enviado" Esto es por que los índices en una matriz empiezan en cero, por eso datos[i][3]=col4 y e consecuencia datos[i][4] = col5; donde i es la fila que va iterando o cambiando en cada revisión, pues es un bucle "for" el que va analizando todo de momento no se me ocurre otra cosa mas que esa, mira si es por ahí donde tienes el o los problemas
@TiranoEstudios
@TiranoEstudios 2 года назад
@ Muchisimas gracias por tu respuesta, mira lo que note fue lo siguiente: Coloque un log para que me muestre las celdas que cumplen con la condición y hasta ahi funciona perfectamente, por ejemplo me da como resultado las celdas (43,52,57) que si aplicamos el (i+2) , hace la busqueda completa lo que cambia es que al eliminar la fila "45" toda la tabla se recorre por lo que la "52" estará en la fila 51 entonces aunque si borra efectivamente la 52, en realidad es la 51 con el nuevo acomodo de la tabla la que tiene que borrar. hice un pequeño arreglo para solucionar esto, quizá si hay a alguien que le pase lo mismo pueda servirle. en "ss.deleteRow(i+2)" cambie el "2" por una variable ss.deleteRow(i+contador) y definí esa variable antes : "var contador = 2;", justo abajo de la variable "datos" entonces dentro del "for" en el "if" agregue una linea que resta uno ss.deleteRows(i+contador); var contador = contador-1; Con esto pude solucionarlo, asi cuando se recorre la tabla como la variable contador ya no es 2 si no 1 todo va de lujo. En verdad aprecio mucho el conocimiento que nos compartes, vale oro. Eres un crack.
2 года назад
gracias por compartir tu solución, seguro que será útil a otras personas con problemas similares. en el ejercicio que realice en realidad es que oculta la fila pero su índice no deja de ser el mismo, así que agradezco mucho tu participación para el caso de eliminar las filas 👍
@TiranoEstudios
@TiranoEstudios 2 года назад
@ En hora buena, saludos!
@MK13G10N
@MK13G10N 3 месяца назад
@@TiranoEstudios confirmo tambien me paso eso al eliminar y realizando lo que comentas igual me funciono al toque
@cristinameneses7062
@cristinameneses7062 2 года назад
​ @Ofimática para Emprendedores es posible adaptar el código para ocultar columnas? Estoy creando un calendario de vacaciones y me gustaría ocultar las columnas y dejar sólo visible las columnas del mes seleccionado. Tengo las fórmulas para que sólo se rellenen los datos del mes seleccionado en el desplegable y he añadido una línea que indica si hay datos o no en las columnas con la fórmula si datos = 1 si vacío = 0 (si mes seleccionado hay datos si no no); he intentado adaptar el código a una sóla condición (que la linea de esa fórmula = 0, para que la condición sea que si es 0, oculte el resto de columnas, pero recibo un error (Error de sintaxis: SyntaxError: Unexpected identifier, línea: 8, archivo: Oculta columnas.gs). Gracias
2 года назад
Hola Cristina.-si es posible adaptar a columnas, si no estas familiarizada con los métodos, una forma fácil es crear una macro y adaptarla, o partiendo de la macro crear un script, esto básicamente para encontrar algún método que de repente se nos hace escurridizo dentro de la lista de métodos existentes. no puedo abundar mas por que no conozco tu código, ni la estructura y tipo de datos de tu Google Sheets revisa que la columna a ocultar corresponda con el índice o numeral correcto y que esta exista
@javierdavidmora
@javierdavidmora 3 года назад
Muy buena explicación. Podrías apoyarme porque quiero eliminar las filas pero, que la información sea copiada y pegada en otra hoja antes de que la elimine. Para llevar un historial de las entregas. Saludos!
3 года назад
Hola Javier.-podrías usar el método push para almacenar tus datos y después copiarlos en la hoja en la cual pretendes llevar el historial, estas familiarizado con ello???
@AlejandroServindelaO
@AlejandroServindelaO Год назад
Muchas gracias por el vídeo, tengo una duda, realmente soy nuevo en google sheets, me podrías mostrar por favor como insertar o crear el botón de ejecución, gracias de antemano
Год назад
Hola , en este video te muestro 4 formas de ejecutar código.-ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-x47S7ylEsaM.html
@AlejandroServindelaO
@AlejandroServindelaO Год назад
@ Muchas gracias, de verdad muy valiosa tu información
Год назад
@@AlejandroServindelaO me alegra que te haya servido
@ignaciofunes606
@ignaciofunes606 2 года назад
Muchas gracias por el video, queria consultarte sobre que podia ser que si tengo hasta la fila 7 con datos me esconde hasta la 8 que no tiene datos. Muchas gracias, saludos!
2 года назад
Hola Ignacio.- de inicio decirte que normalmente el srcript no es de orden general , sino especifico, de tal manera que las adaptaciones deben realizarse a tu caso particular y muy posiblemente revisando el código te des cuenta de ello y en caso contrario tendría yo que conocer las particularidades y estructura de datos de tu Google Sheets, cosa que en este momento desconozco. mira el código y ve si puedes adaptar, la idea de este canal no es dar soluciones a "todo" , sino crear ejemplos que puedan servir de guía a a las personas interesadas en aprender, si eres una de ellas con gusto te ayudo después de que hagas tu esfuerzo.
@ignaciofunes606
@ignaciofunes606 2 года назад
@ muchas gracias por la respuesta, saludos!
@NyAFE0305
@NyAFE0305 3 года назад
Hola, estoy con un problema, estoy intentando eliminar filas que cumplan con las 2 condiciones, pero al parecer le flush no funciona, ya que cada vez que elimina una fila, los datos suben, y el codigo captura los datos de la variable "datos" la cual no esta actualizada al momento de eliminar una fila, existe alguna forma de actualizar la variable datos, cada vez que se elimina una fila o algo similar? Muchas gracias, esta sencillo y preciso el codigo, y la explicacion excelente (Y)
3 года назад
Hola KilzaNiko .-es posible que tu problema derive de una adaptación incorrecta, lo que sugiero hacer siempre, es que apliquen el ejemplo tal cual lo ven en el video y en principio de cuentas te tendría que salir tal cual esta en el video , así te aseguras de tener tu primer éxito en el manejo de código. Después de ello vendría ahora si la adaptación a tu caso concreto, previo entendimiento del funcionamiento total de cada línea del código de ejemplo. en cuanto al tu comentario del flush que refieres no funciona, yo no encontraría ningún motivo para que no funcionara , hay algún mensaje de error que te marque el código al ser ejecutado?? desde mi óptica lo que pudiera fallarte es que estas haciendo de forma incorrecta las comparaciones de datos pues requiere conocimientos de manejo de matrices y a veces quienes tenemos poco tiempo en esto solemos equivocarnos frecuentemente. es decir aquí: datos[i][3] == "Vainilla" && datos[i][4] == "Enviado" y es lo que te sugiero revisar
@valentinaescobar9158
@valentinaescobar9158 2 года назад
Hola! Muchas gracias por tu video, de mucha utilidad. Tengo una base de datos con más de 500 filas. Cuando corro la macro, solo me elimina de a 2 filas y me sale un mensaje que me dice que esas filas están fuera de los limites. Qué puedo hacer ahí si en total necesita borrar más de 2 filas. Gracias!!!
2 года назад
Hola Valentina el código de ejemplo evalúa ciertas condiciones, si realizaste el ejemplo 100% igual no debería fallarte ya que esta probado para ese caso. creo que tu problema podría estar en las condiciones que deben cumplirse y si no se cumplen pues el código hará su trabajo solo en tanto se cumplan, es decir en pocas palabras el problema es de adaptación de código, pero los datos que me das de 500 fila no deberían afectar en nada mas bien es la información que no compartes la que hace falta saber , para poder ayudarte y si lo haces con gusto lo veo en cuanto me desocupe de una conferencia que tengo en breves minutos
2 года назад
Valentina te dejo este articulo complementario al video, para que revises el tema de adaptación del código.-sites.google.com/view/ofimaticaparaemprendedores/Hojas-de-Calculo/ocultar-o-eliminar-filas-se-se-cumplen-2-condiciones-en-google-sheets
@valentinaescobar9158
@valentinaescobar9158 2 года назад
@ Te quería hacer una pregunta porque la función ss.deleterow tiene (i+2) por qué 2, eso es lo que no logro entender, y no lo encontré en el link que me mandaste.
2 года назад
Hola Valentina.-eso es debido a que i vale cero, es decir i = 0 ; según el código, por lo tanto para que empiece el recorrido en la fila 2, debemos ajustarlo a i+2 (0+2= fila 2) por otra parte en el subtitulo "Breve explicación" en el numeral 2 se menciona su razón de ser, pero estoy de acuerdo que le falta claridad, así que gracias a tu comentario voy a modificar esa parte, tal vez agregando un numeral mas explicito al respecto.
@karlitrosvc
@karlitrosvc 2 месяца назад
hola un favor, como se haria para que en vez de que te revise si la celda contiene la palabra vainilla, te detecte un numero de telefono ? o sea no un mismo numero para toda la columna sino diferentes numeros, ?
2 месяца назад
hola karlitros.- la primer respuesta seria la obvia, cambia la palabra vainilla por el numero de teléfono y prueba a ver que ocurre, si todo va bien tendrás solucionado parcialmente tu problema después de eso puedes intentar con varios if anidados o aun mejor con un bucle que recorra un matriz de números telefónicos y verifique si hay alguna coincidencia con alguno de ellos, la verdad es que eso ya dependerá de cuantos números debe verificar y que es lo que deba hacer después de eso. normalmente lo que recomiendo es que secciones tu problema en pasos mas pequeños y vayas solucionando cada uno de ellos
@imprymeloahora2578
@imprymeloahora2578 3 года назад
Muy bueno hermano, gracias, como seria borrarlas y que la condicon es una fecha determinada gracias
3 года назад
hola imprymelo.- para eliminarlas puedes usar algo como esto: ss.deleteRow(i+2);//para el caso de eliminar filas debes actualizar el índice "i" ,según tus condiciones particulares para borrarlos datos, tendrías que usar el método clear() para la condición de la fecha , dependerá donde este la fecha, esto podría funcionar, con las adaptaciones a tu caso particular: unction eliminaFilasFecha(){ var ss = SpreadsheetApp.getActive().getSheetByName("Sheet1"); var uf = ss.getLastRow(); var datos = ss.getRange(2, 2, uf, 6).getDisplayValues(); for(var i =0;i
@nataliagarcia5473
@nataliagarcia5473 2 года назад
Hola! Tengo una duda. Tengo una hoja que tiene muchísimas filas y al ejecutar el script tarda, entonces quisiera saber si hay una manera de comparar solo las que tengan contenido y pues de alguna manera ignorar las que no tengan información
2 года назад
Hola Natalia.-no comentas de cuantas filas estas hablando una posibilidad es que metas el condicional if dentro de otro condicional if, que indique solo si la celda no esta vacía, algo como: if(datos[i][3] != " "){ //aquí va el bloque if original } todo desde luego dentro del bucle for como se muestra en el articulo original del tema-sites.google.com/view/ofimaticaparaemprendedores/Hojas-de-Calculo/ocultar-o-eliminar-filas-se-se-cumplen-2-condiciones-en-google-sheets
@nataliagarcia5473
@nataliagarcia5473 2 года назад
@ Gracias! lo voy a intentar! estamos hablando de como 250 o más filas
2 года назад
perfecto 👍
@jesusrodriguez9266
@jesusrodriguez9266 3 года назад
Hola que tal! Me gustaría solicitar de tu amable apoyo, debido a que me gustaría que un formato cumpliera una condición que si aparece un concepto en específico desaparezca una fila y en de lo contrario se quede la fila me gustaría como le pudiera hacer.
3 года назад
hola Jesús a que te refieres a un formato = hoja de calculo de Google!!?? en cuanto a la condición a evaluar solo tendrías que sustituir dicha condición en mi código y asegurarte de que esta evaluando el rango correcto para tu caso, que también tendrás que personalizar. de momento solo veo esos 2 cambios que tendrías que hacer según la explicación que me das, prueba y me comentas
@jesusrodriguez9266
@jesusrodriguez9266 3 года назад
@ perfecto, lo intentaré el día de hoy por l noche para ver si lo puedo hacer, justamente no quiero agregar un botón
3 года назад
perfecto, te recuerdo que hay diversas formas e ejecutar un script, te dejo este enlace de ayuda.-ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-x47S7ylEsaM.html
@rominafrias6065
@rominafrias6065 2 года назад
Hola: me sirvió el ejemplo y salió perfecto, la consulta concreta es si en vez de colocar "enviado" quisiera usar casillas de verificación ¿Cómo debería colocarlo en el código? Gracias!!!!
2 года назад
hola Romina.- en este caso al activarse la casilla cambiara su estado a true o verdadero, según tengas configurada tu Google Sheets. esta línea de código deberás sustituir esa parte con true o verdadero: if(datos[i][3] == "Vainilla" && datos[i][4] == "Enviado"|| datos[i][3] == "Fresa" && datos[i][4] == "Enviado"){ pudiendo quedar en un primer intento (con la misma estructura de datos) como: if(datos[i][3] == "Vainilla" && datos[i][4] == true || datos[i][3] == "Fresa" && datos[i][4] == true){ o en su defecto usar "VERDADERO" donde dice true.
@rominafrias6065
@rominafrias6065 2 года назад
@ mil gracias por responder, lo he intentado y no funcionó, me parece raro ya que sería lo lógico así es opte por hacer un desplegable de si o no y use esa condición en el if. Es un genio, no se nada de programación pero siguiendo sus pasos comprendí todo. Saludos desde Argentina!!!!
2 года назад
Hola Romina usa un Logger.log para ver como te arroja el resultado de "verdadero/falso" y a partir de ahí sustituye, en mi caso tuve que hacerlo así: if(datos[i][4] == "TRUE"){ lo que significa que evaluara la columna donde están las casillas y toda la que este "activada" se ocultara dicha fila, pues son pedidos ya terminados o servidos :)
@rominafrias6065
@rominafrias6065 2 года назад
@ genial, lo pruebo siguiendo los pasos indicados. Un genio. Muy atento. Mil gracias 😊
@maximilianoayala7783
@maximilianoayala7783 2 года назад
Como seria si quiero borrar todas las filas menos el encabezado de mi lista?
2 года назад
Hola Maximiliano.- una forma seria definir tu rango y aplicarle el método clear(); te dejo el ejemplo de la ayuda oficial de Google..-developers.google.com/apps-script/reference/spreadsheet/range#clear()
@michaelenrique9247
@michaelenrique9247 Год назад
como puedo ocultar filas y columnas para todos excepto para mi
Год назад
Hola Michael.- la respuesta dependerá si eso es tu resultado final o solo es algo intermedio de lo que buscas lograr, así que necesito información extra para darte una posible solución lo mas acorde posible a tu realidad, quedo atento a tu respuesta.
@BamboGroxo
@BamboGroxo 3 года назад
Hola se podrá hacer que en vez de ocultarse quede la celda bloqueada?
3 года назад
Hola Mauro. no quedan claras las intenciones de "bloquear" la celda por otra parte y dado que las HCG son eminentemente colaborativas y deberías de dar acceso de edición solo a las personas autorizadas, resalta mas la intención, es decir no seria lo usual. por otra parte ciertamente existe un método protect de la clase range el cual podrías usar, te dejo el link para una rápida referencia.- developers.google.com/apps-script/reference/spreadsheet/range#protect()
@BamboGroxo
@BamboGroxo 3 года назад
@ muchas gracias mi amigo!
@gersonlopez7117
@gersonlopez7117 2 года назад
Como deshabilitar comandos como eliminar hojas.
2 года назад
Hola Gerson, no es posible deshabilitar comandos, se pueden agregar solamente mediante un menú personalizado
@devoraceciliagalindorojas7103
@devoraceciliagalindorojas7103 8 месяцев назад
En mac por favor gracias
8 месяцев назад
Hola Devora Cecilia.- dado que esta es una aplicación en la nube, no hay diferencia alguna , y el equipo que uses para hacerlo no interfiere para nada, puedes implementarlo siguiendo este ejemplo al pie de la letra para que no te falle.