webapps tutorial sirve sheets secuencia que pwa progresivas programar para mega google ejemplos curso crear comandos apps app aplicaciones javascript arrays google-apps-script

javascript - tutorial - Filtrar matriz por fecha con la secuencia de comandos de la aplicación google



pwa tutorial (3)

Creé una hoja de cálculo similar (primera columna con texto, segunda con fechas) y la siguiente secuencia de comandos:

function myFunction() { var sheet = SpreadsheetApp.openById("…"); var ss = sheet.getSheetByName("testing"); var range = ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn()); var data = range.getValues(); var filtered = data.filter(function (row) { return row[1].getFullYear() === 2016; }); Logger.log(filtered); }

Y funciona siempre que la segunda columna sea del tipo Fecha (Formato → Número → Fecha). Aparece el error que ha descrito si cambio el tipo a Texto. Si no hay errores en su código (como .getFullYear lugar de .getFullYear() ya que es una función, no una propiedad), creo que los datos (no la variable, sino los datos de la hoja de cálculo) no son de tipo Fecha.

Tengo una hoja de cálculo de Google que es una tabla de 2 columnas que tiene en la columna A fechas (estoy seguro de que son fechas y todas las funciones de fecha funcionan bien en toda la columna) y en el texto de la columna B.

Con el script de la aplicación de Google, obtuve todos los valores del rango con:

var sheet = SpreadsheetApp.openById("........."); var ss = sheet.getSheetByName("......."); var range =ss.getRange(1,1,ss.getLastRow(),ss.getLastColumn()); var data = range.getValues();

ahora debería tener una matriz 2d con fechas en datos [0] y texto en datos [1]

Puedo filtrar la matriz en datos [1] con:

var filter = data.filter(function (dataRow) { return dataRow[1] == ''sometext''; });

lo que necesito es filtrar los datos [0] por algún valor de fecha (como año, mes o período)

He intentado:

var filter = data.filter(function (dataRow) { return dataRow[0].getFullYear == 2016; });

pero cualquier tipo de función de fecha me da un error que dice que es imposible encontrar la función (como getFullYear ()) en el objeto.

¿Qué estoy haciendo mal?

Gracias por cualquier ayuda

Atentamente


Los métodos de fecha funcionarán en una fecha que funcionará en un objeto de fecha, no en texto. Lo que tienes en la variable dataRow [1] es simplemente una cadena, no un objeto Date. Por lo tanto, no tiene ese método.


Prueba esto

var filtered = data.filter(function (row) { var d = new Date( row[1] ); // change text to Date object return d.getFullYear() === 2016; // then compare });