o
    65i	                     @   sP   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 G dd dZ
e
 Zd	S )
u!   Google Sheets API 클라이언트    )Any)service_account)build   )SERVICE_ACCOUNT_KEYSPREADSHEET_IDc                	   @   s|   e Zd ZdZdgZdd Zedd Z	dded	ed
e	e	e
  fddZ	dd	ed
efddZ	dd	ed
e	e fddZdS )SheetsClientu+   Google Sheets API 클라이언트 클래스z5https://www.googleapis.com/auth/spreadsheets.readonlyc                 C   s
   d | _ d S N)_service)self r   Y/var/www/tkim.planitai.co.jp/gemegg/20251207-make-pdf-report/project/src/sheets_client.py__init__   s   
zSheetsClient.__init__c                 C   s6   | j du rtjjtt| jd}tdd|d| _ | j S )u+   Sheets API 서비스 객체 (지연 로딩)N)ZscopessheetsZv4)credentials)r
   r   ZCredentialsZfrom_service_account_filestrr   SCOPESr   )r   r   r   r   r   service   s   
zSheetsClient.serviceN
range_namespreadsheet_idreturnc                 C   s4   |du rt }| j  j||d }|dg S )u   시트 데이터 조회

        Args:
            range_name: 범위 (예: '予実出力!A1:AZ100')
            spreadsheet_id: 스프레드시트 ID

        Returns:
            2차원 배열 형태의 데이터
        N)spreadsheetIdrangevalues)r   r   spreadsheetsr   getexecute)r   r   r   resultr   r   r   get_sheet_data   s   zSheetsClient.get_sheet_datac                 C   s"   |du rt }| j j|d S )u)   스프레드시트 메타데이터 조회N)r   )r   r   r   r   r   )r   r   r   r   r   get_sheet_metadata4   s   
zSheetsClient.get_sheet_metadatac                 C   s    |  |}dd |dg D S )u   모든 시트 목록 조회c                 S   s0   g | ]}|d  d |d  d |d  d dqS )Z
propertiestitleZsheetIdindex)r    sheet_idr!   r   ).0sheetr   r   r   
<listcomp>F   s    


z/SheetsClient.get_all_sheets.<locals>.<listcomp>r   )r   r   )r   r   metadatar   r   r   get_all_sheets@   s   

zSheetsClient.get_all_sheetsr	   )__name__
__module____qualname____doc__r   r   propertyr   r   listr   r   dictr   r'   r   r   r   r   r   	   s4    



r   N)r+   typingr   Zgoogle.oauth2r   Zgoogleapiclient.discoveryr   configr   r   r   sheets_clientr   r   r   r   <module>   s    
H