from datetime import datetime from src.config import get_config_value from google_src.google_sheet import GoogleSheetReader from src.logger_config import logger def load_executed_from_gsheet(setup_type=None, job_index=None): """Load executed scripts from Google Sheets logs. Returns a list of Source Data values (all entries are considered executed). Args: setup_type: Optional. If provided, only count rows where Final URL contains this value. job_index: Optional. If provided, only count rows for this specific job. """ try: reader = GoogleSheetReader.get_log_reader(worksheet_name=get_config_value("logs_worksheet")) df = reader.get_dataframe() if "Source Data" in df.columns: result_df = df # Optional: filter by job_index if job_index is not None and "Job" in df.columns: result_df = result_df[result_df["Job"] == str(job_index)] # Optional: filter by setup_type in Final URL if setup_type and "Final URL" in df.columns: result_df = result_df[result_df["Final URL"].str.contains(setup_type, na=False)] executed = result_df["Source Data"].tolist() logger.debug(f"Loaded {len(executed)} executed entries from Google Sheets") return executed else: logger.warning("Google Sheets missing required column (Source Data)") return [] except Exception as e: logger.error(f"Failed to load from Google Sheets: {e}") return [] def log_progress_to_gsheet(result: dict, job_index: int, commit=False): """Log progress to Google Sheets by appending rows.""" if not commit: return gsheet_name = get_config_value("logs_worksheet") try: reader = GoogleSheetReader.get_log_reader(worksheet_name=gsheet_name) reader.create_or_update_sheet( worksheet_name=gsheet_name, header=["Timestamp", "Job", "Source Data", "Drive URL", "Final URL", "GCS Filename", "Delete Entry"], values=[{ "Timestamp": datetime.now().isoformat(), "Job": str(job_index if job_index is not None else 0), "Source Data": get_config_value("original_tts_script"), "Drive URL": result.get("drive_url", ""), "Final URL": result.get("final_url", ""), "GCS Filename": result.get("gcs_filename", ""), "Delete Entry": "False", }], ) logger.debug(f"✓ Logged progress to Google Sheet for job {job_index}") except Exception as e: logger.error(f"❌ Failed to log to Google Sheet: {e}")