DoctorEvil
DoctorEvil

Reputation: 473

gspread - get_all_values() returns an empty list

If I call a sheet by name, get_all_values function will always give me an empty list for a sheet that is definitely not empty.

import gspread

sheet = workbook.worksheet(sheet_name)
all_rows_list = sheet.get_all_values()

The only time get_all_values seems to return like it should is if I do the following:

all_rows_list = workbook.sheet1.get_all_values()

But the above works just for the first sheet and for no other, which is kind of useless for a workbook with more sheets.


What always works is reading row by row like

one_row_list = sheet.row_values(1) # first row 


But the problem is that I'm trying to read a relatively big workbook with lots of sheets to figure out where I'm supposed to start writing, and it looks like reading row by row triggers "RESOURCES EXHAUSTED" error very fast.

So, am I doing something wrong or is get_all_values broken in gspread?

EDIT: Added a screenshot.enter image description here

Upvotes: 1

Views: 2101

Answers (1)

Nickolay
Nickolay

Reputation: 32073

gspread doesn't work well with sheets with names that could be confused as a cell reference in the A1 notation (like X101 and AT8 in your case).

https://github.com/burnash/gspread/issues/554 is an older issue that describes the underlying problem (the symptoms in that issue are different, but I'm pretty sure the root problem is the same).

I'll copy the workaround with providing a range, that you've discovered yourself:

ws.range("A1:C"+str(end_row)) That end_row is usually row_count of the sheet.

Upvotes: 1

Related Questions