es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

pygsheets.get_all_records(value_render=”FORMULA”) se está convirtiendo a int.

Estoy tratando de extraer datos y fórmulas de una Hoja de Google utilizando pygsheets y el método getallrecords. Los datos de origen se ven así, donde la celda B2 es =A2*3.

Cuando uso el método getallvalues, obtengo los resultados correctos.

cellVals = ws.getallvalues(includetailingempty=False, valuerender=pygsheets.customtypes.ValueRenderOption.FORMULA) 
print(cellVals)

[[‘Number’, ‘Formula’], [11.5, ‘=A2*3’]]

Pero cuando uso getallrecords, la celda A1 se convierte en un entero.

cellRecs = ws.getallrecords(valuerender=pygsheets.customtypes.ValueRenderOption.FORMULA)     
print(cellRecs)

[{‘Number’: 11, ‘Formula’: ‘=A2*3’}]

Me encantaría no tener que construir una solución alternativa. ¿Algún consejo? ¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el método “get_all_records” está inferiendo el tipo de dato de la celda A1 basado en su contenido, en lugar de hacerlo en función del encabezado de la columna. Una posible solución alternativa es especificar manualmente el tipo de dato de la columna al crear la hoja de cálculo:

    encabezados = ['Número', 'Fórmula']
    tipos_datos = {'Número': float, 'Fórmula': str}
    hoja.insertar_filas(fila=1, valores=encabezados, cantidad=1, opción_entrada_valor='USER_ENTERED')
    hoja.ajustar_ancho_columna(inicio=1, fin=len(encabezados), tamaño_pixeles=100)
    hoja.establecer_dataframe(pd.DataFrame(columns=encabezados, dtype=tipos_datos), inicio='A2')
    

    Este código insertará una fila de encabezados en la hoja, especificando los tipos de datos de las columnas mediante un diccionario. Luego, ajustará el ancho de las columnas y creará un dataframe vacío con los tipos de datos especificados, comenzando en la celda A2. Esto garantizará que el método “get_all_records” interprete correctamente la celda A1 como un número decimal.

Comments are closed.