Una consulta común entre los usuarios de Google Sheets es cómo registrar automáticamente la fecha en la que se modifica o crea una fila nueva. Esto es especialmente útil para llevar un control preciso de cambios o para gestionar documentos y tareas de forma eficiente.
En este tutorial vamos a ver dos métodos prácticos para insertar un timestamp o registro de fecha automática en Google Sheets, uno con Google Apps Script y otro con una fórmula con referencia circular. Además, te compartiré consejos basados en preguntas y comentarios reales de usuarios, para que puedas adaptar estas soluciones a tus necesidades.
Si prefieres aprender viendo un video, te los dejo a continuación, para que sigas el paso a paso visualmente.
¿Qué es un timestamp en Google Sheets?
Un timestamp es un sello de tiempo, es decir, una fecha y hora que se registra automáticamente cuando un dato es ingresado o modificado en una hoja de cálculo. Lo importante es que esta fecha quede fija y no cambie con el tiempo, para tener un registro confiable.
Existen varias formas de lograr esto: manualmente, con macros, con Google Apps Script o con fórmulas. Aquí te mostraré las opciones más útiles y prácticas.
Método 1: Timestamp automático con Google Apps Script
Este es el método que yo más recomiendo por su flexibilidad y automatización total. Utilizaremos Google Apps Script para crear un código que detecte cuando un usuario modifica una celda específica y automáticamente registre la fecha y hora en otra celda.
Además, podemos configurar este script para que se ejecute automáticamente con el activador onEdit(), sin que el usuario tenga que hacer nada adicional.
Cómo preparar la base de datos
Para este ejemplo, vamos a crear una tabla sencilla con estas columnas:
| Columna A | Columna B | Columna C |
|---|---|---|
| Nombre del documento | Responsable | Fecha de registro |
| Documento 1 | Juan | |
| Documento 2 | María |
Queremos que cada vez que alguien escriba o modifique el responsable (columna B), se registre la fecha y hora actual en la columna C, junto a esa fila.
Construyendo el código paso a paso
Para empezar, abre tu hoja de cálculo y ve a Extensiones > Apps Script. Allí vamos a crear la función que hará el registro de la fecha.
El código básico que vamos a usar es el siguiente:
function timestamp() {
// Conectarse con el archivo activo
let libro = SpreadsheetApp.getActiveSpreadsheet();
// Obtener la celda activa (donde se hizo la edición)
let activa = libro.getActiveCell();
// Obtener fila y columna de la celda activa
let filaActiva = activa.getRow();
let colActiva = activa.getColumn();
// Obtener la hoja activa y su nombre
let hojaActiva = activa.getSheet();
let nombreHojaActiva = hojaActiva.getName();
// Condición: solo ejecutar si estamos en la hoja "Datos",
// fila mayor o igual a 2 (para no afectar encabezados),
// y si la columna editada es la 2 (columna B)
if (filaActiva >= 2 && colActiva == 2 && nombreHojaActiva == "Datos") {
// Obtener la celda donde se pondrá la fecha (columna 3, fila activa)
let celdaRegistro = hojaActiva.getRange(filaActiva, 3);
// Solo poner la fecha si la celda está vacía (para no sobrescribir)
if (!celdaRegistro.getValue()) {
celdaRegistro.setValue(new Date());
}
}
}
// Activador simple que se ejecuta al editar cualquier celda
function onEdit() {
timestamp();
}
Este código hace lo siguiente:
- Detecta la celda que se está editando
- Verifica que sea la columna donde queremos activar el timestamp (en este caso la 2)
- Confirma que sea la hoja correcta («Datos») y que la fila sea mayor a 1 para evitar afectar encabezados
- Si la celda de fecha está vacía, escribe la fecha y hora actual
Si quieres que la fecha se actualice cada vez que cambie el responsable, simplemente elimina el condicional que verifica si la celda de fecha está vacía.
Además, si quieres que funcione en varias hojas o columnas, puedes modificar el condicional así:
if (filaActiva >= 2 && (colActiva == 2 || colActiva == 4) && (nombreHojaActiva == "Datos" || nombreHojaActiva == "Datos 2")) {
// código para timestamp
}
Así, el código se ejecutará en las hojas «Datos» y «Datos 2», y para las columnas 2 y 4.
Si quieres borrar la fecha cuando la celda del responsable quede vacía, puedes agregar este condicional:
if (celdaRegistro.getValue() && valor == '') {
celdaRegistro.clearContent();
} else if (!celdaRegistro.getValue()) {
celdaRegistro.setValue(new Date());
}
Esto asegura que si borras el responsable, la fecha también se borre automáticamente.
Permisos y ejecución
La primera vez que ejecutes este script, Google te pedirá autorización para que el script pueda modificar tu hoja. También es importante que cada usuario que quiera que el timestamp funcione para ellos, dé esos permisos.
Si quieres, puedes crear un botón o menú personalizado para facilitar la autorización inicial a tus colaboradores.
Método 2: Timestamp con fórmula y referencia circular
Nota importante: Este método es interesante para experimentar, pero es inestable y no recomendable para bases de datos en producción.
La idea es usar una fórmula con referencia circular para que la fecha se registre la primera vez que se ingresa un dato, y luego no cambie.
La fórmula que usaremos, asumiendo que el responsable está en B2 y la fecha en C2, es esta:
=IFS(O(A2="";B2="");"";C2<>"";C2;VERDADERO;AHORA())
¿Qué hace esta fórmula?
- Si no hay datos en A2 o B2, no muestra nada
- Si ya hay una fecha en C2, mantiene esa fecha
- Si no hay fecha, pone la fecha y hora actual
Para que esta fórmula funcione, debes activar las iteraciones en tu hoja:
- Ve a Archivo > Configuración de la hoja de cálculo
- Selecciona la pestaña Cálculo
- En Cálculo iterativo, activa la opción
- Establece el número máximo de iteraciones en 1
Con esto, la fórmula podrá referenciarse a sí misma y mantener la fecha fija.
Pero recuerda que este método puede ser inestable y si borras el dato del responsable, la fecha también desaparecerá.
Además, tendrás que copiar esta fórmula manualmente a nuevas filas, ya que no funciona bien con ARRAYFORMULA.
Si quieres explorar métodos más avanzados con funciones MAP y LAMBDA, déjamelo saber en los comentarios.
Preguntas frecuentes y consejos prácticos
Basado en los comentarios de usuarios que han probado estos métodos, aquí te dejo algunas respuestas y recomendaciones:
- ¿Cómo hacer que el timestamp funcione en varias hojas?
Modifica el condicional para incluir los nombres de las hojas deseadas con el operador||. - ¿Cómo borrar la fecha si se borra el responsable?
Agrega un condicional que limpie la celda de fecha si la celda del responsable queda vacía. - ¿Cómo registrar la fecha en una columna a la izquierda?
Usaactiva.offset(0, -1).setValue(new Date())para moverte una columna a la izquierda. - ¿Por qué el timestamp no funciona para cambios hechos por fórmulas?
Los activadoresonEdit()solo detectan cambios manuales, no los automáticos por fórmula. - ¿Cómo proteger las fechas para que no se borren?
Protege la hoja o las celdas donde se registran las fechas para evitar modificaciones accidentales. - ¿Cómo registrar el usuario que hizo el cambio?
Se puede agregar al script la funciónSession.getActiveUser().getEmail()para capturar el correo del editor.
Si tienes dudas específicas, puedes escribirme en los comentarios o en mis redes para ayudarte con tu caso particular.
Conclusión
Registrar fechas automáticas en Google Sheets es una técnica muy valiosa para llevar control de cambios, tareas o documentos. Vimos dos métodos principales:
- Un método con Google Apps Script, que es más flexible, confiable y automatizado.
- Un método con fórmula y referencia circular, que es más simple pero menos estable y recomendado solo para pruebas.
Te recomiendo usar el método con Apps Script para proyectos serios y bases de datos importantes.
Si quieres profundizar aún más en este tema y aprender a crear soluciones completas con Google Apps Script y Google Sheets, inscríbete en el curso completo de timestamps en mi academia.
Cuéntame si te fue útil este tutorial y qué otros temas te gustaría que cubriera.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.
Hola Juan, ante todo agredecerte por tu increible trabajo y aporte a la comunidad.
Necesito que el codigo de apps script solo me tome una columna como fila activa, he probado poniendo la columna que necesito en la siguiente parte del codigo:
//Traer la columna de la celda activa
var colActiva = activa.getColumn(«m:m») ;
Pero no me deja, me dice el siguiente error:
Exception: The parameters (String) don’t match the method signature for SpreadsheetApp.Range.getColumn.
(anónimo) @ tim.gs:16
Sabrás como se hace para que solo tome una columna?
Saludos
Hola no se si te entiendo
getColumn() no tiene argumentos
va asi activa.getColumn() y eso te va a devolver la columna de la celda activa
Que es lo que quieres hacer?
Saludos!
Quiero que solo tenga en cuenta una columna, es decir que si se colocan datos en la columna M, cualquiera sea la fila, ponga la marca temporal en la columna del al lado que seria N.
Porque si coloco que tome en cuenta la celda activa, en la planilla que tengo se completan muchos datos a diario en distintas columnas, pero yo solo quiero cuando se completen datos en la columna M, me devuelva en la columna N la fecha y la hora en que eso se modifico.
Saludos
Muchas gracias!
Gracias a ti por comentar
Como estas Juan
Solo quiero que coloque la hora, y no fecha y hora
Hola!
Puedes usar esta linea
fecha.toTimeString()
Saludos!
Hola Juan, quiero entrar a la academia y especialisarme más, pero al intentar entrar, me aparece un msj de error, que al parecer por mi localización no puedo acceder. Estoy en Venezuela, tengo alguna opción de poder hacer los cursos, aparte de un vpn?
Hola!
Gracias por el interés
En la plataforma que tenía la academia (teachable) no permitía Venezuela
Estoy cambiando de plataforma, y espero que en la nueva se pueda desde tu país
Saludos!
Hola Juan, quiero entrar a la academia y especialisarme más, pero al intentar entrar, me aparece un msj de error, que al parecer por mi localización no puedo acceder. Estoy en Venezuela, tengo alguna opción de poder hacer los cursos, aparte de un con?
Hola!
Gracias por el interés
En la plataforma que tenía la academia (teachable) no permitía Venezuela
Estoy cambiando de plataforma, y espero que en la nueva se pueda desde tu país
Saludos!
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!
hola saludos de pronto ya habra subido la respuesta a esta pregunta… tengo el mismo problema
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