Search code examples
pythongoogle-sheetsgoogle-sheets-apigspread

AttributeError: module 'gspread' has no attribute 'open_by_key'


I am trying to access a spreadsheet from python using gspread, but keep getting an attribute error.

open_by_url() and open() also don't work, they give an attribute error and say gspread doesn't have that module. I reinstalled gspread v3.6.0 twice, but that didn't do anything. The docs for opening a spreadsheet are at the gspread docs.


Solution

  • Make sure you follow the Authentication of gspread here. Once the auth is complete, you can verify it by using python's built in function dir.

    Example:

    Service account:

    import gspread    
    gc = gspread.service_account()
    print(dir(gc))
    

    OAuth

    import gspread
    gc = gspread.oauth()
    print(dir(gc))
    

    You should see the method open and open_by_url

    You can either use Service Account or OAuth to access your spreadsheet.

    Follow these steps for:

    Service account - https://gspread.readthedocs.io/en/latest/oauth2.html#for-bots-using-service-account

    OAuth - https://gspread.readthedocs.io/en/latest/oauth2.html#for-end-users-using-oauth-client-id