Google Cloud Platform Project and Enable API
You need to create a new or use existing Google Cloud Platform project.
Enable Sheets API in API Library.
Setup Credentials
Goto Google Cloud Console -> Credentials -> OAuth consent screen.
Go back to Credentials to create OAuth client ID:
Application type: Web application, Android, Chrome App, iOS, Other; I chooseOthersas I am running a local script.Name: For you to identify the usage of this key
You will be shown client ID and secret. Click OK.
Click Download JSON and save the file as credentials.json.
Install Libraries
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlibCode
Read all rows from existing Spreadsheet
- Google Drive 
-> New -> Spreadsheets. Insert 2 rows of data into the Sheets. - From the URL (e.g. 
https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0), copy theSPREADSHEET_ID(e.g.1hlTYOqy10Q-1q32ZEkdeBx_D9y_c283_ZHLvPOcJ6b1) 
import pickleimport os.pathfrom googleapiclient.discovery import buildfrom google_auth_oauthlib.flow import InstalledAppFlowfrom google.auth.transport.requests import Request# https://developers.google.com/sheets/api/guides/authorizingSCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly']# SCOPES = ['https://www.googleapis.com/auth/spreadsheets']SHEET_NAME = 'Sheet1'SPREADSHEET_ID = '1hlTYOqy10Q-1q32ZEkdeBx_D9y_c283_ZHLvPOcJ6b1'TOKEN_FILE = 'token.pickle'CREDENTIAL_FILE = 'credentials.json'credentials = Noneif os.path.exists(TOKEN_FILE):    with open(TOKEN_FILE, 'rb') as token:        credentials = pickle.load(token)if not credentials or not credentials.valid:    if credentials and credentials.expired and credentials.refresh_token:        credentials.refresh(Request())    else:        flow = InstalledAppFlow.from_client_secrets_file(            CREDENTIAL_FILE, SCOPES)        credentials = flow.run_local_server(port=10800)    # Save the credentials for the next run    with open(TOKEN_FILE, 'wb') as token:        pickle.dump(credentials, token)service = build('sheets', 'v4', credentials=credentials)sheet = service.spreadsheets()# read row 2# RANGE_NAME = f"'{SHEET_NAME}'!A2"# read all rowsrange_notation = SHEET_NAMEresult = sheet.values().get(spreadsheetId=SPREADSHEET_ID,                            range=range_notation).execute()rows = result.get('values', [])if not rows:    print('No data found.')else:    keys = dict((v,k) for k,v in enumerate(rows[0]))    for row in rows[1:]:        # print(row[keys['url']])        print(row)NOTE: Refer Google Sheets Range A1 Notation.
References: