Me gustaría definir una función personalizada en Google Sheet. Esta función debería hacer algo muy simple, pero no he logrado encontrar cómo hacerlo. Estoy muy confundido con todas las respuestas que leo 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 vista como una cadena .
  • la biblioteca Moment ( http://momentjs.com/ )

Al final, ¿cómo puedo ingresar dos fechas (por ejemplo, 31/01/2016) y, digamos, encontrar el máximo entre las dos y extraer el mes del primero uno?

function myfun(date1,date2) { // month = month of date 1 // return maximum(date1,date2); } 

También me interesa si alguien puede explicar los esquemas de cómo tratar las fechas, o indicar una buena referencia.

Comentarios

Responder

Obtener y configurar valores de fecha y hora

Siempre que su secuencia de comandos llame a .getValue() en una celda con formato de fecha, fecha-hora o duración, obtiene un objeto Fecha de JavaScript . Luego, puede aplicar varios métodos enumerados en esa página MDN a este objeto, incluido getMonth() para el mes. Ejemplo:

 var sheet = SpreadsheetApp.getActiveSheet(); var value = sheet.getRange("A1").getValue(); // is a Date object Logger.log([value.getMonth(), value.getHours(), value.getUTCHours()]); // examples of available methods 

A la inversa, puede asignar un objeto Date a una celda usando setValue, y será formateado automáticamente como tal.

 sheet.getRange("B2").setValue(new Date()); // current timestamp 

Zonas horarias

La marca de tiempo en Hojas de cálculo de Google está en la zona horaria local, que se establece mediante 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 coinciden, tendrá un problema con las marcas de tiempo.

Para comprobar si las zonas horarias concuerdan, puede comparar ambas manualmente o hacer algo como esto:

var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange("A1").setFormula("=date(2015,1,1)"); Logger.log(sheet.getRange("A1").getValue().getHours()); 

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. A continuación, el script obtiene la fecha y extrae las horas en la hora local del script. Si las zonas horarias están de acuerdo, debería ver 0.0 en el log.

Comentarios

  • gracias, trabaja para mí, Una pregunta adicional: Quiero comprobar Un montón de celdas, como rango (2, 1, 30, 20) .getValues; – ¿cómo lograrlo?

Respuesta

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 fechas.

Ejemplo 1: Obtenga la fecha más reciente

obtener la fecha más reciente

function myFunction(date1,date2) { return new Date(Math.max(date1,date2)) } 

Ejemplo 2: Obtenga el mes de la fecha más reciente

function myFunction2(date1,date2) { var date = new Date(Math.max(date1,date2)); return date.getMonth(); } 

Breve explicación

En el primer ejemplo, el Math.max El método JavaScript hace el trabajo.

Si orden para obtener una fecha como resu Es decir, se crea un objeto de fecha usando el nuevo Date () .

En el segundo ejemplo, un objeto de fecha se asigna a una variable , entonces se utiliza el método JavaScript getMonth () para obtener el índice del mes.Tenga en cuenta que JavaScript utiliza 0 para el elemento inicial, por lo que 0 es para enero, 1 para febrero y así sucesivamente.

Referencias

Comentarios

  • i) ¿Se pasan date1, date2 como números (normalmente: 54243)? ii) Intenté extraer el mes de date2 usando date2.getMonth() pero cuando la celda es 01/12/2015 devuelve 10 y 11 para 02/12/2015. Supongo que es ' s debido a la zona horaria. La función de hoja month() es mucho más simple.
  • Google Sheets maneja las fechas como números serializados al igual que JavaScript, pero cada uno tiene una fecha de inicio diferente. Por lo tanto, si desea utilizar funciones de fecha de JavaScript, primero debe convertir la fecha de la hoja de cálculo en una fecha de JavaScript. Como ya notó, la ruta más fácil es usar funciones de hoja de cálculo para manejar las fechas de la hoja de cálculo y funciones de JavaScript para manejar fechas de JavaScript.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *