from google.oauth2.credentials import Credentials from googleapiclient.discovery import build import re def get_sheets_service(user_token): creds = Credentials(**user_token) return build('sheets', 'v4', credentials=creds) def extract_spreadsheet_id(url): """Extracts the spreadsheet ID from a Google Sheets URL.""" match = re.search(r"/d/([a-zA-Z0-9-_]+)", url) return match.group(1) if match else None def get_sheet_data(service, spreadsheet_id, range_name="Sheet1!A:Z"): """Fetches all data from a specific range in a Google Sheet.""" sheet = service.spreadsheets() result = sheet.values().get(spreadsheetId=spreadsheet_id, range=range_name).execute() values = result.get('values', []) if not values: return [] # First row is headers headers = values[0] data = [] for row in values[1:]: # Map row values to headers item = {} for i, header in enumerate(headers): if i < len(row): item[header] = row[i] else: item[header] = "" data.append(item) return data