콘텐츠로 이동

구글 시트 함수로 만들기

google drive 연결하기

from google.colab import drive
drive.mount('/content/drive')

필요한 라이브러리 설치 및 인증

!pip install --upgrade gspread gspread-dataframe

from google.colab import auth
auth.authenticate_user()

import gspread
from gspread_dataframe import set_with_dataframe
from gspread_dataframe import get_as_dataframe
import pandas as pd

구글 시트 API 인증

from google.auth import default

creds, _ = default()
gc = gspread.authorize(creds)

Google Sheets가 없으면 생성하고 있으면 기존 파일을 오픈하여 새로운 데이터를 추가함

def update_sheet(sheet_name, df_new):

    # ✅ 기존 파일이 존재하는지 확인
    spreadsheet_list = gc.list_spreadsheet_files()
    sheet = None
    for f in spreadsheet_list:
        if f['name'] == sheet_name:
            sheet = gc.open_by_key(f['id'])
            break

    # ✅ 파일이 없으면 새로 생성
    if sheet is None:
        sheet = gc.create(sheet_name)

    # 워크시트 선택 (없으면 기본 워크시트 사용)
    worksheet = sheet.get_worksheet(0)

    # ✅ 기존 데이터 불러오기 (비어있을 수도 있음)
    try:
        df_existing = get_as_dataframe(worksheet, evaluate_formulas=True)
        df_existing.dropna(how="all", inplace=True)  # 전부 NaN이면 제거
    except:
        df_existing = pd.DataFrame()

    # ✅ 기존 데이터에 새 데이터 추가
    df_combined = pd.concat([df_existing, df_new], ignore_index=True)

    # ✅ 시트 초기화 후 업데이트
    worksheet.clear()
    set_with_dataframe(worksheet, df_combined)


sheet_name = "Colab Test Sheet"  # 원하는 시트 이름
df_new = pd.DataFrame({           # 추가할 데이터
    '이름': ['홍길동3', '김철수3', '이영희3'],
    '나이': [25, 30, 22],
    '도시': ['서울3', '부산3', '대구3']
})

update_sheet(sheet_name, df_new)