Me gustaría definir una función personalizada en Google Sheet. Esta función debería hacer algo muy simple, sin embargo, no he logrado encontrar cómo hacerlo. Estoy muy confundido con todas las respuestas que leí porque no puedo encontrar una referencia clara sobre cómo tratar las fechas en los scripts de Google.
Por lo que entiendo, las manipulaciones básicas de fechas se pueden hacer con:
new Date()
: por lo que entiendo, define un objeto que tiene algunas propiedades. No sé cómo usar la fecha de una celda y convertirla como tal objeto.Utilities.formatDate()
: esto es para cambiar el formato de la fecha visto como una cadena .- la biblioteca
Moment
( http://momentjs.com/ )
Al final, ¿cómo puedo ingresar dos fechas (por ejemplo 31/01/2016
) y, por ejemplo, encontrar el máximo entre las dos y extraer el mes de la primera?
function myfun(date1,date2) {
// month = month of date 1
// return maximum(date1,date2);
}
También estoy interesado si alguien puede explicar los esquemas de tratar con las fechas, o indicar una buena referencia.
google-sheets
google-apps-script
entendido
fuente
fuente
Respuestas:
Obtener y establecer valores de fecha y hora
Cada vez que su secuencia de comandos llama
.getValue()
a una celda con formato de fecha, fecha-hora o duración, obtiene un objeto Fecha de JavaScript . A continuación, puede aplicar varios métodos enumerados en esa página MDN a este objeto, inclusogetMonth()
para el mes. Ejemplo:Por el contrario, puede asignar un objeto Date a una celda usando
setValue
, y se formateará automáticamente como tal.Zonas horarias
La marca de tiempo en Hojas de cálculo de Google se encuentra en la zona horaria local, que se configura a través de Archivo> Configuración de hoja de cálculo. El script también opera dentro de una zona horaria, que puede ser diferente y se encuentra en Archivo> Propiedades del proyecto en el editor de script. Si estas zonas horarias no están de acuerdo, tendrá un problema con las marcas de tiempo.
Para verificar si las zonas horarias están de acuerdo, puede comparar ambas manualmente o hacer algo como esto:
Esto ingresa la fórmula
=date(2015,1,1)
en la celda A1. El resultado será 2015-01-01 00:00:00 en la zona horaria de la hoja de cálculo. La secuencia de comandos obtiene la fecha y extrae horas en la hora local de la secuencia de comandos. Si las zonas horarias están de acuerdo, debería ver 0.0 en el registro.fuente
Respuesta corta
A continuación, se presentan dos funciones personalizadas como ejemplos de cómo Google Sheets y Google Apps Script podrían funcionar con las fechas.
Ejemplo 1: obtenga la fecha más reciente
Ejemplo 2: obtenga el mes de la fecha más reciente
Breve explicacion
En el primer ejemplo, el método JavaScript Math.max hace el trabajo.
Si se ordena obtener una fecha como resultado, se crea un objeto de fecha utilizando la nueva Fecha () .
En el segundo ejemplo, se asigna un objeto de fecha a una variable, luego se usa el método getMonth () JavaScript para obtener el índice del mes. Tenga en cuenta que el uso de JavaScript
0
para el elemento inicial0
es para enero,1
febrero y así sucesivamente.Referencias
fuente
date1
,date2
pasé como números (por lo general: 54243)? ii) Ahora intenté extraer el mes dedate2
uso,date2.getMonth()
pero cuando la celda es01/12/2015
, devuelve 10 y 11 para02/12/2015
. Supongo que es por la zona horaria. La función de hojamonth()
es mucho más simple.myfunction2
devuelve 10 y cuando el máximo es 12/02/2015, devuelve 11. Aunque estoy bien con el 11, no entiendo ¿Por qué es devuelve 10 para 01/12/2015. Como dije, creo que esto se debe a GMT, pero no estoy seguro. ¿Me estoy perdiendo de algo?