import os import json from googleapiclient.discovery import build from google.oauth2.credentials import Credentials def get_creds(): token_path = os.path.expanduser('~/.hermes/google_token.json') if os.path.exists(token_path): with open(token_path, 'r') as token: info = json.load(token) return Credentials.from_authorized_user_info(info) raise Exception("Google token not found. Please run authentication first.") def sync_data_to_sheets(spreadsheet_id, sheets_data): """ sheets_data: dict of { sheet_name: [ [row1_val1, row1_val2], [row2_val1, row2_val2] ] } """ creds = get_creds() service = build('sheets', 'v4', credentials=creds) # 1. Ensure sheets exist or create them spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheet_id).execute() existing_sheets = [s['properties']['title'] for s in spreadsheet.get('sheets', [])] requests = [] for sheet_name in sheets_data.keys(): if sheet_name not in existing_sheets: requests.append({ 'addSheet': { 'properties': { 'title': sheet_name } } }) if requests: service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id, body={'requests': requests}).execute() # 2. Write data to each sheet for sheet_name, rows in sheets_data.items(): body = {'values': rows} service.spreadsheets().values().update( spreadsheetId=spreadsheet_id, range=f"'{sheet_name}'!A1", valueInputOption="RAW", body=body ).execute() print("Sync complete.")