| 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 [] |
| |
| |
| headers = values[0] |
| data = [] |
| |
| for row in values[1:]: |
| |
| item = {} |
| for i, header in enumerate(headers): |
| if i < len(row): |
| item[header] = row[i] |
| else: |
| item[header] = "" |
| data.append(item) |
| |
| return data |
|
|