Una pregunta que se hacen frecuentemente los usuarios de Sheets es como registrar en una celda la fecha en la que se modifica o se crea una nueva fila.
Esto se conoce en ingles como timestamp, y yo lo bautizaré «registro de fecha automática».
En este artículo vemos dos métodos para insertar una fecha automática en Google Sheets.
Que es un timestamp en Google Sheets
Un timestamp es básicamente una fecha que ponemos para registrar un ingreso de un documento o un dato.
Lo importante de esta fecha es que quede fija y que no sea fácil cambiarla.
Esto lo podríamos hacer de varias maneras: De manera manual, con una macro, o con una fórmula con referencias circulares.
Método 1: Manual
Si bien el título de este artículo es registro automático de fechas, no sobra saber un par de métodos para hacerlo manualmente antes de involucrarnos con macros o fórmulas complejas
Hay dos formas manuales de hacerlo
Función HOY() en Google Sheets
La primera es con la función HOY().
Esta función, precisamente nos trae la fecha y hora de hoy. Pero como no queremos que se modifique, y la función HOY() nos da un valor hoy y otro diferente mañana, entonces deberíamos después de aplicarla pegarla como valores para que quede fija
De nuevo, no es la mejor forma ni la más automática, pero es bueno saber que se puede hacer así.
Atajo de teclado: Ctrl + ´
La segunda es con un atajo de teclado: Ctrl + ´
Esta es una manera muy sencilla de poner la fecha de hoy sin que quede con una función como en el anterior método
Método 2: Macro
La segunda forma es a través de una sencilla macro.
Simplemente va a evaluar cuando un usuario ponga un valor en una celda específica, y una vez se haga, traerá la fecha y hora del día de hoy.
Ventaja principal
Siempre va a ejecutarse y no depende de accionar manual del usuario
Desventajas principales
- Por más de que la fecha no va a cambiar por si sola, podríamos borrar o modificar por error la formula, al menos que la protejamos.
- Como la macro edita nuestra hoja, obligatoriamente debemos dar permiso de edición a todos los colaboradores que participen, aumentando el riesgo de que cambien la celda.
Armando la base
Primero estructuremos nuestra base de ejemplo de la siguiente manera:
Vamos a crear una base de control de documentos. En esta, necesitaremos los siguientes registros
- Una columna para escribir el nombre del documento
- Una columna para seleccionar un supervisor o responsable. Un desplegable sencillo.
- Una columna de fecha. Aquí es donde nuestro código imprimirá la fecha actual

Construyendo el código
Vamos a nuestro código.
Para acceder al mismo vamos a «Herramientas» > «Editor de Secuencia de Comandos».
Vamos a borrar lo que encontramos aquí y escribir una nueva función que se llame timestamp.
function timestamp() {
//Aqui va el código
}

Vamos a conectarnos con nuestro archivo y nuestra pestaña usando los métodos .getActiveSpreadsheet() y .getSheetByName(), así:
//"Conectarse" con el archivo
var archivo =SpreadsheetApp.getActiveSpreadsheet();
//"Conectarse" con la pestaña donde se va a realizar el timestamp
var ss = archivo.getSheetByName("Datos");
Luego, buscamos la celda en la que el usuario está situado, su valor, su fila y su columna.
Para esto usamos .getActiveCell, getRow() y .getColumn() respectivamente.
//Traer la celda activa
var activa = ss.getActiveCell();
//Traer el valor de la celda activa
var valor = activa.getValue();
//Traer la fila de la celda activa
var filaActiva = activa.getRow();
//Traer la columna de la celda activa
var colActiva =activa.getColumn();
Construimos un condicional para asegurarnos que el código solo se ejecute cuando la fila sea superior al encabezado, este en la columna adecuada (la del responsable, en nuestro caso la 2) y que solo se ejecute en la pestaña de datos.
/*Asegurarnos que solo se ejecute despues del encabezado, en la colummna especificada y en la hoja especificada */
if(filaActiva>=2 && colActiva==2 && archivo.getActiveSheet().getName()=="Datos"){
}
Por último, si se cumple la condición, vamos a imprimir la fecha en la celda que especifiquemos. En nuestro ejemplo será la celda a la derecha de la columna del responsable.
Para esto vamos a usar el método offset que nos «mueve» nuestra celda las filas o columnas que le digamos.
En nuestro ejemplo .offset(0,1) le dice a Sheets: «mueva la celda una a la derecha y cero abajo.
//Pondremos la fecha una celda a la derecha de la celda modificada
activa.offset(0,1).setValue(new Date());
Una alternativa a esto, cuando no queremos que la columna del registro de fecha sea relativa a alguna otra podemos reemplazar la línea anterior por esta
ss.getRange(filaActiva,3).setValue(new Date());
Donde el número 3 lo van a cambiar por la columna donde quieran imprimir el timestamp.
Una última cosa que podremos hacer es solo imprimir la fecha si no hay valor anterior. Es decir impedir que al modificar el responsable cambie la fecha original.
Esto lo hacemos con otro condicional
if(activa.offset(0,1).getValue()){
//No hacer nada
}else{
//Poner la fecha
}
De nuevo, si no quieren que la columna sea relativa, podemos cambiar el .offset por .getRange() como en el ejemplo anterior
Si tuviéramos más aprobaciones en distintas columnas, como en este ejemplo:

Solo tendríamos que añadir en la condición del código la nueva columna, así
if(filaActiva>=2 && (colActiva==2 || colActiva==4) && archivo.getActiveSheet().getName()=="Datos"){
//Ejecutar
}
Donde 2 y 4 serian las columnas de los responsables, y a la derecha de cada uno estaría la fecha.
Así mismo podrían poner todas las condiciones que quieran con el mismo operador ||.
Ejecutar el código
Nos falta una última parte y es como hacer para que el código se ejecute de manera automática cuando alguien escriba algo en la base
Hay varias maneras de ejecutar el código para que de verdad sea automático
Lo último que nos falta es crear una función onEdit() y dentro de esta correr nuestra función:
function onEdit(){
timestamp();
}
onEdit es un ejemplo de lo que se conoce como activadores. Un activador es una función que se ejecuta al momento que pasa algo.
En el caso de onEdit, se ejecuta cada vez que alguien edita una celda, es decir cada vez que alguien cambia el valor de una celda.
Código
Aquí te dejo el código completo.
Ten en cuenta que puedes personalizarla con algunas de las variaciones que mencioné en el artículo
function timestamp() {
var archivo =SpreadsheetApp.getActiveSpreadsheet();
var ss = archivo.getSheetByName("Datos");
var activa = ss.getActiveCell();
var valor =activa.getValue();
var filaActiva = activa.getRow();
var colActiva =activa.getColumn();
if(filaActiva>=2 && (colActiva==2 || colActiva==4) && archivo.getActiveSheet().getName()=="Datos"){
if(activa.offset(0,1).getValue()){
}else{
activa.offset(0,1).setValue(new Date());
}
}
}
function onEdit(){
timestamp()
}
Método 2: Formula con referencia circular
Nota: Este método es muy interesante, pero es altamente inestable. Como experimento y para conocer los límites de Sheets es recomendable que lo prueben, pero para sus bases de «producción» y de uso diario, les recomiendo altamente que usen el método anterior.
Esta va a ser una fórmula extraña si no están acostumbrados a trabajar con iteraciones (Como el 99% de usuarios. Yo la descubrí cuando investigaba este tema, pero no tenía ni idea que existía).
Ventaja Principal
Al ser una fórmula, podemos proteger la hoja, y no va a tener problema para los colaboradores, y no van a poder cambiar o borrar las fechas
Desventajas
- Al ser una fórmula, si llegamos a eliminar el dato del responsable, la fórmula se va a resetear y quedar en blanco
- Desafortunadamente esta fórmula no funciona bien con ArrayFormula, entonces nos va a tocar arrastrarla hasta nuestra última fila, y cada vez que agreguemos nuevas filas, asegurarnos que esté con fórmula.
- Es inestable. A veces, por alguna actualización de Sheets, se puede «dañar», y todas las fórmulas pueden quedar en 0.
Construyendo la función
Básicamente vamos a usar la fórmula HOY(), pero solo la vamos a correr la primera vez que se modifique el responsable, es decir cuando la celda donde está la fecha esté vacía.
La fórmula evaluaría las siguientes 3 condiciones
- Si no hay un responsable, pues no hay fecha
- Si ya hay una fecha, mantengamos esa fecha
- Si no hay fecha, pongamos la fecha de hoy con la función HOY()
Esta es nuestra base de ejemplo

Teniendo en cuenta que la fecha iría en la C, la fórmula sería la siguiente:
=IFS(O(A2="";B2="");"";C2<>"";C2;VERDADERO;AHORA())
Pero si pones esa fórmula así como está. te va a dar un error.
Nos falta un paso.
Como estamos hablando de referencias circulares (Estamos invocando a la celda C2 desde la misma celda C2), entonces debemos manejar las iteraciones para referencias circulares.
Para esto vamos a «Archivo» > «Configuración de la hoja de cálculo»
Vamos a la pestaña de «Cálculo»
Vamos a la sección «Calculo iterativo»
Escogemos la opción «Activar»
En número máximo de iteraciones ingresamos 1

Ya con esto, como por arte de magia nuestra fórmula va a funcionar.
Pero ojo, de nuevo hago la aclaración que esta fórmula es inestable y a veces se «resetea» por razones que no tengo 100% claras. Por eso les recomiendo usar el método anterior para que no tengan problemas.
Conclusion
El registro de fechas automático en Google Sheets o timestamp es una herramienta muy útil para poder llevar registros de control de documentación o de entrada y salida, y también puede ser muy útil en muchos otros casos, de gestión de tareas y demás.
Vimos dos métodos para hacer el timestamp, cada uno con sus ventajas y desventajas y que pueden llegar a ser utiles en distintos casos.
Cuéntame si te es útil y que nos quedó faltando.
Buenos días,
Muchas gracias por tu contenido, es de muchísima ayuda, pero tengo una duda. Tengo un excel en el que en una pestaña quiero poner la fecha en función de si se cambian las celdas de una columna, pero no por que la cambie yo de manera manual, estas celdas cambian por una fórmula de sumatorio y la macro no me funciona, hay solución?
El tema es que el activador de edición solo funciona cuando se cambia de manera manual la celda y no a través de una fórmula
Saludos!
Una opción es activarla con tiempo y estar revisando la fórmula
Saludos!
como hacer un timestamp con casilla verificación ?
en las condiciones pones que el valor sea el de la casilla (normalmente es «true»)
Saludos!
buenas a todos
tengo que hacer una lista la cual debe tener checkbox
lo que debe de hacer el checkbox es, que cada vez que sea verdadero me sume un numero en otra celda y me imprima en otra hoja la fecha y hora cuando ocurrió el evento true
Te toca hacer un contador
Con .getValue() traes el valor de la fecha
le sumas 1
despues con .setValue vuelves a poner el nuevo numero
Saludos!
Hola juan, me gustaria aplicar fecha de acuerdo a tres palabras distintas en tres columnas diferentes de la misma hoja, comó puede ser el codigo?
Hola!
Lo difícil es establecer el orden en que se va a digitar. Si estas segura que la última que se va a diligenciar es la tercera, ahi es donde va a estar tu columna «activadora»
Saludos!
Hola Juan, no logro poder hacer que me agregar además el usuario que edita.
podrás orientarme?
de ante mano muchas gracias!, aca un seguidor
Hola!
Si los usuarios son de gmail.com no te van a salir. Si son de un dominio workspace (pepito.com) si puede funcionar
Saludos!
Hola buenos dias juan,
Primero que todo muchas gracias por compartir todos los conocimientos me han sido de mucha utilidad y he aprendido bastante para aplicarlo en mi trabajo, haciendo el TimeStamp quisiera poder dar solucion al hacer un timestamp que verifique que la celda de los datos esten llenas pero que la del tiempo este vacia, y si es asi genere el timestamp, ya que he intentado de varias maneras pero no logro que se rellene la casilla de timestamp solo se ejecuta cuando me paro sobre la celda y escribo algo.
De antemano muchas gracias.
Hola!
Todo el truco está en el manejo correcto de los condicionales. Déjame ver como tienes tu código
Saludos!
Hola buenos dias juan,
Primero que todo muchas gracias por compartir todos los conocimientos me han sido de mucha utilidad y he aprendido bastante para aplicarlo en mi trabajo, haciendo el TimeStamp quisiera poder dar solucion al hacer un timestamp que verifique que la celda de los datos esten llenas pero que la del tiempo este vacia, y si es asi genere el timestamp, ya que he intentado de varias maneras pero no logro que se rellene la casilla de timestamp solo se ejecuta cuando me paro sobre la celda y escribo algo.
De antemano muchas gracias.
Muchas gracias! Muy util! COmo puedo hacer para que si pego varias celdas a la vez se agreguen automaticamente a todas ellas la fecha. Porque aparece solo la primera de todas. Muchas gracias nuevamente. Saludos atte.
Esa esta mas compleja!
LA dejo para otro video
Saludos!
excelente aporte, una pregunta como puedo hacer que me marque la fecha al yo colocar un texto especifico dentro del timestamp
gracias por compartir
Hola John
Mil gracias por tus palabras!
Lo incluirias en esta linea
if(filaActiva>=2 && (colActiva==2 || colActiva==4) && archivo.getActiveSheet().getName()==»Datos» && valor==»lo que tu quieras»)
Un gran saludo!
Hola, como hago para que funcione cuando los demás usuarios del documento hagan modificación funcione; solo funciona cuando yo modifico la celda 🙁 gracias
HOla!
Lo que pasa es que los usuarios tiene que haber dado permiso para usarlo
Para eso debemos agregar un boton o explicarle al usuario que de play en la función desde el editor de secuencias por lo menos una vez+
Saludos!
Estimado, mil gracias por compartir desinteresadamente tus conocimientos.
He hecho literalmente el ejemplo que utilizaste en una planilla nueva de google sheets pero no funciona, me aparece un cuadro con fondo negro y nada más.
Necesito hacer eso mismo de hace mucho tiempo y lo he estado haciendo a mano con el consabido peligro de poder equivocarme.
¿Podré compartirte esa planilla para que la veas?
Es más… estoy dispuesto a pagar para que me lo soluciones jeje…
Mil gracias.
Alfredo
Hola Alfredo
Claro que si, escríbeme a jsguzmanbgmail.com
Un gran saludo!
Hola Juan, un gusto, encontré tu video en youtube y me pareció muy interesante.
Debo pedirte ayuda, yo tengo una hoja de calculo que a través de un activador de appscript me trae el precio por importJson del Bitcoin, el tema es que quiero llevar registro de esa celda que va cambiando.
Por lo tanto necesito que los valores que me trae cada 1 minuto en esa celda queden registrados en dos columnas apartes, como una base de datos o tabla (una con el precio y otra con fecha y hora) y que los vaya apilando.
Se que por este camino del timestamp voy medio encaminado, pero e pierdo y no logro llegar a lo que quiero hacer.
Desde ya muchas gracias.
Saludos.
Hola Fernando
Esta muy buena la idea para un video. Espero poderlo publicar pronto
Un gran saludo!
Como puedo registrar fecha cuando una celda cambia de valor…por ejemplo de «Abierto» a «Cerrado»
Estoy intentando crear un timestamp que haga lo siguiente:
Desde slack envio un dato y al recibirlo en google sheets me indique la fecha y hora de ese ingreso, y cuando se actualice en otra columna me digite la fecha de actualización.
¿Podrias guiarme con eso?
Hola Jhon
Ya estoy haciendo el video donde vemos eso
Un gran saludo!
Excelente aporte felicitaciones!!!!, tengo una consulta, en mi caso tengo un formulario en google sheets, donde deseo que las columnas 4,5 y 6 cuando sean modificados, primero capture en la columna 7 el primer timestamp del primer registro de cualquiera de las columnas 4,5 y 6, luego en columna 8 la fecha de modificación de cualquiera de las columnas 4,5 y6 cómo se podría realizar?
Ya vi el error
function timestamp() {
var archivo =SpreadsheetApp.getActiveSpreadsheet();
var ss = archivo.getSheetByName(«Urgencies»)
var activa = ss.getActiveCell();
var valor =activa.getValue();
var filaActiva = activa.getRow();
var colActiva =activa.getColumn();
Logger.log(valor);
if(filaActiva>=2 && colActiva==2 && archivo.getActiveSheet().getName()==»Urgencies»){
if(activa.offset(0,-1).getValue()){
}else{
activa.offset(0,-1).setValue(new Date());
}
}
}
function onEdit(){
timestamp();
}
se estaba cerrando mal el onEdit con dos }
Excelente!
Es un error del codigo del artìculo? (para arreglarlo)
Saludos!
Te agradezco muchisisisisimo!!!!!!!!!!!!!! Tenía todo el día con esto y gracias a tu comentario lo logre en 5 minutos!!!!!!!!!!!!!!!!!!!!!!!! 🥰🥰🥰🥰🥰
Eres un crack!!!
Saludos desde Monterrey, México!
Excelente!
Hola . Soy principiante y me cuesta mucho las macro. Quisiera hacerlo más simple. Podría ejecutar una función de nombre xxx que al ejecutarse devuelva en la celda los comandos CTRL+ ‘ para que así plasme la fecha y hora de ese momento?
Hola Daniel
Pues la verdad, si ya haces CTRL + ‘, no creo que haya necesidad de hacer el botón.
Saludos!
Buenas Guzman!
Muy bueno tu trabajo, me viene ayudando pila.
Igualmente, si me pudieras dar una mano con lo siguiente te agradezco.
Quiero generar un timestamp cada vez que se cargue un dato a un sheets, pero no cargandolo yo manualmente, desde una aplicacion se envian formularios que se cargan automaticamente generando una nueva fila, por lo que deberia agregarse la timestamp cada vez que se agrega una nueva fila con datos en una columna X, y luego cargar un dato en una columna Y de la misma fila, que genere otra marca en la misma fila.
El formulario que envio no genera timestamp automatico como google ni tiene la opcion de activarlo.
De momento, lo pude solucionar usando una query a otra sheet y utilizando el IFS, pero vuelve la hoja bastante pesada.
No puedo usar el IFS sin el query ya que al agregarse filas nuevas la formula se va hacia abajo.
Espero que se haya entendido y me puedas dar una mano.
Abrazo!
Hola Nicolas
Ya te respondí en tu otro comentario
Saludos!
Buenas Guzman!
Muy bueno tu trabajo, me viene ayudando pila.
Igualmente, si me pudieras dar una mano con lo siguiente te agradezco.
Quiero generar un timestamp cada vez que se cargue un dato a un sheets, pero no cargandolo yo manualmente, desde una aplicacion se envian formularios que se cargan automaticamente generando una nueva fila, por lo que deberia agregarse la timestamp cada vez que se agrega una nueva fila con datos en una columna X, y luego cargar un dato en una columna Y de la misma fila, que genere otra marca en la misma fila.
De momento, lo pude solucionar usando una query a otra sheet y utilizando el IFS, pero vuelve la hoja bastante pesada.
No puedo usar el IFS sin el query ya que al agregarse filas nuevas la formula se va hacia abajo.
Espero que se haya entendido y me puedas dar una mano.
Abrazo!
Agrego tambien, no es un formulario de google, viene desde slack, por lo que no genera timestamp automaticamente.
Hola Nicolas
Ya te respondí en tu otro comentario
Saludos!
Hola Nicolas
Mil gracias por tus palabras!
Que tan exacto tiene que ser el timestamp
Te lo pregunto porque podrias hacer un timestamp que corra cada 5 minutos y que verifique que la celda de los datos esten llenas pero que la del tiempo este vacia, y si es asi genere el timestamp
Como la ves? Factible?
Saludos!
Un gran saludo!
hola Juan, muy buenos dias,
Estoy tratando de hacer lo que dice en este comentario de hacer un timestamp que corra cada 5 minutos y que verifique que la celda de los datos esten llenas pero que la del tiempo este vacia, y si es asi genere el timestamp pero no lo he logrado llevo mucho tiempo pensando y no doy con la logica, seria tan amable de instruirme en como hacerlo intente con la formula sin macro pero como estoy usando la funcion de getLastRow me envia la informacion al ultimo renglon debajo de la formula.
De antemano muchas Gracias.
Seria algo asi
datos.forEach(fila=>{
if(fila[0] && !fila[1]) fila[1]=new Date()
})
Saludos!
Hola,
Pese a que tengo puesto function onEdit(), no me lo ejecuta automáticamente.
function timestamp() {
var archivo =SpreadsheetApp.getActiveSpreadsheet();
var ss = archivo.getSheetByName(«Urgencies»)
var activa = ss.getActiveCell();
var valor =activa.getValue();
var filaActiva = activa.getRow();
var colActiva =activa.getColumn();
Logger.log(valor);
if(filaActiva>=2 && colActiva==2 && archivo.getActiveSheet().getName()==»Urgencies»){
if(activa.offset(0,-1).getValue()){
}else{
activa.offset(0,-1).setValue(new Date());
}
}
function onEdit(){
timestamp();
}
}
Hola Manuel
Dale play desde el editor de código al onEdit la primera vez para que te pida los permisos
Saludos!
Hola!, he podido crear las marcas, sin embargo tengo una duda,
Quiero poder filtrar en la columna donde se me van generando y poder filtrar por el día de hoy, para tener una casilla que me lo vaya diciendo cada día.
He probado con:
=CONTAR.SI(A2:A;»=»&HOY())
en la columna desde la A2 en adelante se van generando, y lo que quiero es poder ver cuantas llevo hoy. Algo se me escapa porque hay 0 cuando contando veo bastantes.
Puede ser porque la marca incluye la hora? una manilla por favor?
Mil gracias!
Hola
Si, vas por el lado correcto, el problema es que el timestamp es una fecha con hora, básicamente un numero con decimal,
por ejemplo el 5 de abril de 2019 es un numero, exactamente el 43560.5
Una opción es redondear para abajo la fecha y ahí si la puedes comparar con HOY()
Saludos!
Buenas tardes, deseo se encuentre muy bien. Como puedo hacer para tener varios timestamp simultaneos en diferentes columnas y cual es el limite por hoja
Hola Jhon
En teoría no debería haber limite
Simplemente en el condicional pon todas las columnas con una condicion «o»
Así:
if(filaActiva>=2 && (colActiva==2 || colActiva==4 || colActiva==6) && archivo.getActiveSheet().getName()==»Datos»){
}
Me cuentas
Saludos!
nunca funciono
Hola Sergio
Una lástima
Si tienes el error o alguna duda puntual me cuentas y lo miramos con mucho gusto
Saludos!
Buenas!!
Estoy aplicando la fórmula del hilo que va increíblemente bien, pero me surge una pequeña duda.
Tengo esta fórmula, que la he adaptado según las casillas:
=IFS(O(L2=»»);»»;R2″»;R2;VERDADERO;AHORA())
para que en R2 se incluya la hora cuando L2 no esté vacío, el problema lo tengo en que en L2 lo que he puesto es un check y no se va a incluir dato alguno salvo la marca al hacer click
He probado con L2=true, L2=verdadero, L2=»verdadero» pero no lo aplica correctamente.
Seguro que es fácil pero no encuentro la forma, por si alguien la sabe.
Gracias de antemano!
Un saludo
Hola!
Vete a la celda donde esta la casilla de verificación
Dale clic derecho > Validación de Datos
En opciones, puedes poner los valores cuando se seleccione o no se seleccione, ahi puedes poner cualquier texto, por ejemplo chequeado
Después pones en tu IFS =»chequeado»
Saludos!
Hola existe una forma de estampar tambien el usuario o correo de quien edita? Ademas de la fecha?
Hola!
Si se puede
Usa libro.getUser()
Saludos!
Hola. Gracias José por tu aporte, me fue de mucha utilidad para una planilla de producción que hice en mi trabajo Funciona la perfección.
Excelente!
Buenos días, como puedo hacer para que al ingresar el dato supervisor tome la hora pero que ya después no permita modificar la hora, es decir si alguien quisiera borrar el dato que aparece con la fecha y hora registrada anteriormente ,esta no se cambiar.
Gracias por tus aportes
Hola Omar
Mil gracias
Te cuento que esto se hace con protecciones individuales
La otra semana sale un video de esto
Un gran saludo!
Perfecto muchas gracias guzman, por cierto una última duda a ver si tú que sabes mucho de google sheets puedes ayudarme.
Sabes porque las scripts y hipervinculos no se ejecutan en IOS?
Llevo una página de fútbol donde somos 48 personas, utilicé a la perfección tu tutorial de enviar datos de una pestaña a otra para usar desde móvil y en andriod nos funciona bien y en ios no va el código y la verdad que me tiene amargado lo del ios jaja
saludos!!
Hola!
Muy extraño!
Primera vez que lo oigo
Debe tener algo que ver con los links pero tocaria investigarlo
Saludos!
function timestamp() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(«Hoja 1»);
ss.getRange(«A1»).setValue(new Date());
}
Buenass, estaba intentando usar la primera fórmula que hiciste y no me funciona.. no se cúal es el error
Yo lo que quiero es que en la celda «A1» de la «Hoja 1» cada vez que haya una modificación en la «Hoja 1» se me cambie automáticamente la fecha en «A1»!!
Es como la función NOW pero que si cambias algo en otra Hoja no se me modifique la fecha en «Hoja 1»
Hola!
Ya la pusiste dentro de un onEdit o un activador?
Saludos!
Buenass, no, esta fué la única fórmula que puse que la ví en tu video
function timestamp() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(«Hoja 1»);
ss.getRange(«A1»).setValue(new Date());
}
que me puede faltar en la fórmula?
Vale añadiendo la función onEdit si funciona el único error que tengo es que solo quiero que la fecha me cambie en la «Hoja 1» y por desgracia con esta fórmula en cualquier hoja que hago un cambio se cambia tambien en la «Hoja 1»
function timestamp() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(«Hoja 1»);
ss.getRange(«A1»).setValue(new Date());
}
function onEdit() {
timestamp();
}
Hola Jose
Debes poner un condicional como hacemos en el artículo
Saludos!
Hola amigo, siempre muy buenas tus guias, me tienes saliendo de apuros siempre y automatizando mi excel facilitandome siempr el trabajo. Quisiera pedirte ayuda con una formula en especifica.
Tengo un formulario de google que llenan constantemente, pero quisiera saber como puedo hacer que en una celda de cada una de las respuestas nuevas que lleguen, yo pueda insertar una celda donde yo coloque la fecha que se gestiono esa respuesta(por razones tecnicas prefiero colocar la fecha yo manualmente por que hay variables) PERO que esa celda cambie de color, es decir ME ALERTE, al ya haber transcurrido 3 dias o si es posible, especificamente 72 horas. Esto es porque se supone que una vez yo coloque la fecha manualmente, quisiera saber cuales tienen mas de 3 dias. Alguna idea de como ingresar ese formato condicional?
Ejemplo para ser menos confuso: la fecha yo coloco «20/2/2021» y al ser el dia 23/2/2021 esa culumna este automatizada para cambiarle el color a esa celda a ROJO. De antemano muchas gracias y sigue asi
Hola Gabriel,
Sería un formato condicional y buscas formula personalizada y pones la siguiente formula
=HOY()-A2>=3
Me cuentas
Saludos!
Por cierto, excelente contenido y forma de explicar lo buscaba desde hace mucho.!!! Gracias por el aporte.
Mil gracias Karla!
hola, solo una gran pequeña consulta, si necesito colocar la fecha automatica en la columna A (a la izquierda) y su condicion sera la columna (B) como deberia hacer la parte activa.offset(0,1).setValue(new Date());
gracias
Hola!
Puedes usar negativos en el offset
Seria offset(0,-1)
Saludos!
Excelente!
Necesito registrar la fecha/hora de los cambios de un rango de columnas.
Por ejemplo:
Fila activa y Columnas 7-60
¿alguna idea?
Muy amable!
Hola!
Como lo registrarias.
En otra hoja poner «Pedro cambió la celda A20 en esta fecha?»
Un gran saludo!
Hola Juan! ¿Como estas?
Excelente forma de explicarlo y muy util.
Utilice la formula para un archivo de monitoreo de tiempos, sin embargo al día siguiente la fecha se movio, y se replico en todas las celdas del mismo día, realmente no sé a que pueda deberse. Me podrias ayudar por favor con algun consejo para saber a que se debe esto, utilice esta formula:
=IFS(O(A2=»»;B2=»»);»»;C2″»;C2;VERDADERO;AHORA())
y modifique la parte de la referencia circular, sin embargo esta pasando esta situación.
Agradeceria pudieras ayudarme por favor.
Muchas gracias y excelente trabajo el que realizas, muy util.
Saludos!
Hola
Esto debe ser porque no se está cumpliendo ninguna de las condiciones anteriores, revisa la condición de que C2 no este vacío
Saludos!
Buenas, cuando comparto la hoja de calculo no le funciona el proyecto timeshap, en mi equipo funciona correctamente, le estoy dando vueltas y no encuentro la solución, sabrías decirme porque?
Hola Pedro
La razón es que la primera vez que va a correr necesita que el usuario de su permiso.
Una forma es teniendo un botón o un menú para que le pida permisos la primera vez
La mejor forma es convirtiendo el script en un complemento
Espero pronto hacer un video de esto
Un gran saludo!
Hola! Necesito que si cambia la información de la celda, también cambie la fecha de registro.
Intenté sacar el condicional que le pusiste a la macro (lo último) pero no me funciona, cómo puedo hacerlo?
Gracias!!!!
Hola!
Intenta cambiar esta linea
if(activa.offset(0,1).getValue()){
por esta
if(activa.offset(0,1).getValue()==»){
Me cuentas
Saludos!
Hola, estoy intentando lo mismo pero me tira error por este simbolo: »
Hola,
Muchísimas gracias era lo que necesitaba hace mucho tiempo!
Saludos!
Excelente!
Me alegro que te sea útil
Saludos!
Hola, como puedo hacer que la fecha ingresada se borre automáticamente cuando borro la celda que muestra el nombre del supervisor, es decir, esta es null.
Hola cambia esta parte del código
if(filaActiva>=2 && (colActiva==2 || colActiva==4) && archivo.getActiveSheet().getName()==»Datos»){
if(activa.offset(0,1).getValue()){
if(activa==»){
activa.offset(0.1).clearContent();
}
}else{
activa.offset(0,1).setValue(new Date());
}
}
}
Básicamente estamos agregando un nuevo condicional que si hay un valor actual de fecha y aparte no hay valor en la celda de supervisor en tu caso, borre la fecha
Me cuentas si te funciona
Saludos!
Gracias excelente explicación, mil gracias
Mil gracias por el comentario!
Hola
Fantástica explicación.
He intentado hacer la misma macro pero en dos pestañas diferentes y me anula una de ellas, la primera. ¿Cómo podría hacerlo?
Gracias
Hola Gloria!
Gracias por escribir!
1cambia esto
if(filaActiva>=2 && colActiva==2 && archivo.getActiveSheet().getName()==»Datos»)
por esto
if(filaActiva>=2 && colActiva==2 && (archivo.getActiveSheet().getName()==»Datos» || archivo.getActiveSheet().getName()==»Datos 2″)
Si las columnas son diferentes ahi tendriamos que hacer otro cambio
ME cuentas si te funciona
Saludos!
Hola juan
Como sería también en columnas diferentes?. Hice el código original para tres hojas distintas y no me funciona en ninguna, pero si lo hago para una sola hoja anda todo ok. Gracias!
Realmente util y muy bien explicado