Diferencias entre getValues y getDisplayValues en Google Apps Script


 Generalmente cuando queremos leer un hoja de cálculo con Google Apps Script usamos la función getValues del range. Esto en casi todos lo casos funciona como esperamos , pero hay ciertos casos en los que nos puede dar problemas, sobretodo cuando hablamos de datos formateados ( por ejemplo fechas o monedas)

El caso de las fechas en Google Sheets es paradigmático. Podemos ver un ejemplo en la siguiente imagen, todas las celdas tienen el mismo valor pero su representación es claramente diferente en cada celda por que depende del formato:

Diferencias de formato con celdas con los mismo valores

Lo gracioso de estas celdas es que si obtienes los valores con getValues obtendremos siempre el mismo valor. Si queremos obtener el valor tal y como se ve en la celda tendremos que usar la función getDisplayValues.

Para hacer la prueba podemos usar este código:

function TestDisplayValues() 
{
    var sheet          = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var range          = sheet.getDataRange();
    var values         = range.getValues();
    var display_values = range.getDisplayValues();
    
    sheet.getRange(1, 2, values.length, values[0].length).setValues(values);
    sheet.getRange(1, 3, display_values.length, display_values[0].length).setValues(display_values);
}

Básicamente este código  obtiene un rango y copia en otras columnas lo que obtenemos con el getValues y con el getDisplayValues.

Este es el resultado:

Diferencias entre getValue y getDisplayValues

Como podéis ver en la columna B hemos puesto los valores que vienen del getValues,  mientras que lo que hay en la columna C hay los valores que vienen del getDisplayValues.

Es un tema bastante más complejo de lo que puede parecer en un inicio, no vaciléis en hacerme llegar vuestras dudas.

Nos vemos




No hay comentarios:

Publicar un comentario

Tal vez te interese