#!/usr/bin/env python3

from google.oauth2 import service_account
from googleapiclient.discovery import build

def read_sheet_data():
    """
    讀取指定分頁的資料結構
    """
    SPREADSHEET_ID = '12dg8UjMTUh8SFPS-X4v83aIwNUEm5CYEKO3RNUW7QCA'
    
    # 要讀取的工作表 - 所有月份
    sheet_names = [
        '2025年7月'
    ]
    
    try:
        creds = service_account.Credentials.from_service_account_file(
            'service_account_key.json',
            scopes=['https://www.googleapis.com/auth/spreadsheets.readonly']
        )
        
        service = build('sheets', 'v4', credentials=creds)
        sheet = service.spreadsheets()
        
        # 讀取試算表資訊 (commented out, keeping as is)
        # spreadsheet = service.spreadsheets().get(spreadsheetId=SPREADSHEET_ID).execute()
        # sheets = spreadsheet.get('sheets', [])
        
        # print(f"試算表標題: {spreadsheet.get('properties', {}).get('title')}")
        # print("所有工作表:")
        # for sheet in sheets:
        #     print(f"- {sheet['properties']['title']}")
            
        # The batchGet call was outside the loop and then individual gets were inside.
        # Let's assume the intention is to process each sheet individually.
        # If batchGet was truly intended, it would need to be processed differently.
        # For now, I'll integrate the individual sheet processing into the loop.

        for sheet_name in sheet_names:
            print(f"\n{'='*60}")
            print(f"工作表：{sheet_name}")
            print('='*60)
            
            # 讀取更多欄位和行數來了解結構
            range_name = f'{sheet_name}!A1:AZ20'
            result = sheet.values().get(
                spreadsheetId=SPREADSHEET_ID,
                range=range_name,
                valueRenderOption='UNFORMATTED_VALUE'
            ).execute()
            
            values = result.get('values', [])
            
            if not values:
                print('沒有找到資料')
                continue
            
            # 顯示標題行和前幾行資料
            for i, row in enumerate(values[:15], 1):
                # 只顯示非空欄位，並截短過長的內容
                filtered_row = []
                for j, cell in enumerate(row):
                    if cell and str(cell).strip():
                        cell_content = str(cell).strip()
                        if len(cell_content) > 20:
                            cell_content = cell_content[:20] + "..."
                        filtered_row.append(f"{chr(65+j)}:{cell_content}")
                
                if filtered_row:  # 只顯示有內容的行
                    print(f"第 {i:2d} 行: {filtered_row}")
                
            print(f"\n總欄位數: {len(values[0]) if values else 0}")
            
            # 特別顯示標題行（通常是第1或第2行）
            if len(values) >= 2:
                print(f"\n標題行分析:")
                for i in range(min(3, len(values))):
                    if values[i] and any(str(cell).strip() for cell in values[i]):
                        print(f"  第{i+1}行可能是標題: {[str(cell) for cell in values[i] if str(cell).strip()]}")
            
    except Exception as e:
        print(f"讀取試算表時發生錯誤：{e}")

if __name__ == '__main__':
    read_sheet_data()