Home > Mobile >  Gspread is retrieving all strings from a Google Sheet named range even when some cells are numbers
Gspread is retrieving all strings from a Google Sheet named range even when some cells are numbers

Time:11-06

When I use Gspread to open a Google Sheet and retrieve a named range, what is returned is a list of lists where every data point is a string. Here is a sample sheet:

Google Sheet sample

The cells a1:e5 are a named range called NamedRange1.

I can import NamedRange1 as follows:

wks = gc.open("Gspread_test").sheet1
data_range = wks.get("NamedRange1") # arrives as list of lists

What appears in Python, although the source is a mix of strings and numbers, is a list of lists that is all strings:

[['Able', 'Baker', 'Charlie', 'Delta', 'Echo'],
 ['Blue', 'New York', '3', '', '100'],
 ['Green', 'New Jersey', '4', '5', '100'],
 ['Red', 'New York', '', '6', '100'],
 ['Orange', 'New Jersey', '7', '', '100']]

How can I retrieve the data from Google Sheets so that numbers come in as numbers (and strings as strings)?

CodePudding user response:

Based on enter image description here

Hence, If you want to read the range values as int, set valueRenderOption to UNFORMATTED_VALUE. (Default render option is FORMATTED_VALUE)

data_range = wks.get("NamedRange1", value_render_option='UNFORMATTED_VALUE')

Additional Reference: Gspread get(range_name=None, **kwargs)

  • Related