Google에서 스프레드시트 API를 gspread로 사용할 때면 자주 사용하는 기능들이 있는데, 여기에 몇 가지 적어보고자 합니.

 

물론 기능을 사용하기 위해서는 먼저 구글 API에서 키를 받고 연동하는 과정이 중요합니다. 이때, 개발자 계정은 해당 계정에 편집자 권한으로 들어가 있어야 합니다.

 

키 받아서 시트 불러오기

# API 키를 연동하는 과정
key_file = "키파일 경로.json"
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']

creds = ServiceAccountCredentials.from_json_keyfile_name(key_file, scope)
client = gspread.authorize(creds)

# 파일 불러오기
google_sheet = client.open("스프레드 시트 파일 이름")
sheet = google_sheet.worksheet("워크시트 이름")

 

시트 추가 및 삭제하기

# 워크시트 추가하기
new_worksheet = google_sheet.add_worksheet(title = "새 워크시트 이름", rows = 100, cols = 50)

# 워크시트 삭제하기
deleting_worksheet = google_sheet.worksheet("삭제할 시트 이름")
google_sheet.del_worksheet(deleting_worksheet)

 

 

시트 데이터 불러오기

# 특정 셀 데이터 가져오기
data = sheet.acell("A1").value
data = sheet.acell(1, 1).value

# 특정 행 데이터 가져오기 (리스트 형태로 반환)
rows_list = sheet.row_values(1)

# 특정 열 데이터 가져오기 (리스트 형태로 반환)
cols_list = sheet.col_values(1)

# 범위 선택하여 데이터 가져오기 (자료형 Cell data 형식)
range_val_list = sheet.range("A1:C3")

# list in list 형태로 모든 데이터 가져오기
data_list = sheet.get_all_values()

# dictionary 형태로 모든 데이터 가져오기
data_dict = sheet.get_all_records()

 

다만 get_all_records를 쓰기 위해서는, 스프레드 시트가 pandas 형태처럼 정렬된 데이터일 필요가 있습니다. (1행에 attribute가 적혀있어야함)

 

시트 내용 작성

# 워크시트 추가하기
sheet.update("수정할 셀 위치", "수정할 내용")
sheet.update("C3", "Hello")
sheet.update("A1:B2", [[1, 2], [3, 4]]) # 범위 수정도 가능

 

이때 update는 기존에 적힌 내용을 싹 지우고 업데이트 하기 때문에, 기존의 내용에 덧붙여서 쓰는 경우에는 기존에 셀에 있던 내용을 다른 변수에 저장해두는 편이 좋다.