0. 왜?

우리가 만들고 싶은 건 커뮤에서 쓰일 자동봇이다. 이 봇은 응용 기능을 넣을 경우 미리 입력한 데이터만으로는 동작하지 않는다. 예를 들어, 상점 기능을 생각해보자. 흐름은 다음과 같다.

1. 러너가 상점봇에게 양식에 맞춰 멘션을 보낸다. (ex [구매/사과/1])

2. 상점봇이 메뉴의 사과 존재 여부와 러너의 소지금을 확인한다.

3. 사과가 있고 돈도 충분하다면 사과 구매에 성공했다는 답멘을 보내고, 러너의 소지금에서 사과 값을 뺀다.

2, 3번에서 [사과가 메뉴에 있는지] 와 [러너의 소지금]을 어디서 확인할 것인가? 정보가 어딘가에 적혀있으니까 확인하고, 구매처리를 하고, 소지금에서 사과 값을 빼서 업데이트 할 수 있을 것이다. 그 정보가 적혀있는 게 스프레드시트다! 일반적으로는 mysql, oracle 등의 DB(데이터베이스)에 정보를 저장하는데, 그 역할을 스프레드시트가 하는 셈이다.

결론! 상점봇 만들려면 시트 써야 한다! 



1. 구글 클라우드 플랫폼 가입

 우선 구글 클라우드 플랫폼(링크)에 가입해야 한다. 구글 관련 api를 사용하기 위해서 필요한 과정이다. 핸드폰 인증이나 신용카드 입력이 필요한데, 90일간의 무료 체험판 종료 후에 자동 청구되지 않는다고 하는데...... 자세한 내용 확인은 스스로 해보자. 나는 리소스 백업이나 내용 알아보는 게 귀찮아서 소과금 돼도 그냥 쓸 생각이다! 





2. 프로젝트 생성 및 설정

1번에서 가입 절차를 성공적으로 마치면 자동적으로 구글 클라우드 플랫폼의 내 프로젝트 화면으로 이동한다. (실수로 창을 껐다면 여기 : 링크)


2-1. API 사용 설정

메뉴의 API 및 서비스 - 사용 설정된 API 및 서비스 - API 및 서비스 사용 설정 - Google Drive API와 Google Sheets API 사용


2-2. 서비스 계정 만들기

좌측 메뉴 중 API 및 서비스 - 사용자 인증 정보 - 사용자 인증 정보 만들기 - 서비스 계정 클릭해서 생성! 생성 시 역할을 소유자 로 해야한다!


2-3. 키 만들기

방금 만든 계정 클릭 (나갔다면 IAM 및 관리자 - 서비스 계정 에서 찾는다) - 키 탭 클릭 - 키 추가 - 새 키 만들기 - JSON - 만들기 를 누르면 자동으로 txt 파일 하나가 다운로드 된다! 잘 챙겨두자. 나중에 필요하다.




3. 스프레드 시트 세팅

파이썬 코드와 연동되길 원하는 스프레드 시트를 하나 만든다! 이건 구글 클라우드 플랫폼에 가입한 계정과 다른 계정으로 만든 스프레드시트여도 괜찮다.

그 후 우측 상단의 공유 - 아까 다운받은 json 파일의 client_email 값 큰따옴표 떼고 넣기 - 편집자 - 확인!

client_email 값을
사용자 및 그룹 추가에 넣는다




4. 코드 작성 및 연동 확인


4-1. json & 새 파이썬 파일

자동봇을 만들던 폴더에 가서 아까 받아뒀던 json 파일을 붙여넣고, VS Code로 폴더를 연 후 새 파이썬 파일을 만든다. 새 파일을 만드는 건 필수 요소는 아니지만, 편의를 위해 분리하였다.

빨간 박스 외의 모자이크 된 파일은 이전 포스팅에서 쓴 파일들이다.


4-2. 코드 입력

코드를 그대로 복붙한다. 수정해야 하는 부분은 총 세 군데인데,

  • (3) filename='json파일이름.json' 은 4-1에서 폴더에 복붙한 '다운받은 json 파일'의 이름을 그대로 적는다. 오타가 날 것 같다면 json파일 클릭 후 F2 - 전체 이름 복사 - 붙여넣기 해도 된다.
  • (5) .open("만든 스프레드 시트 이름") 은 문자 그대로 스프레드 시트 이름이다. 하단 사진 참고. 예시 사진대로라면 "자몽 자동봇 시트" 라고 적으면 된다.
  • (19) "스프레드 시트의 하단 시트(탭) 이름" 역시 하단 사진 참고 후 본인의 시트에 맞게 바꾸어 적자. 예시 사진대로라면 "MAIN" 이라고 적으면 된다.
import gspread
import pprint

gc = gspread.service_account(filename='json파일이름.json')

wks = gc.open("만든 스프레드 시트 이름")

# 시트 탭 선택 함수
def select_sheet(sheet_name):
    worksheet = wks.worksheet(sheet_name)
    return worksheet

# 시트 전체 정보 터미널에 프린트하는 함수
def shop_sheet(worksheet):    
    all_shop_info= worksheet.get_all_records()
    pprint.pprint(all_shop_info)
    

worksheet = select_sheet('스프레드시트의 하단 시트(탭) 이름')
shop_sheet(worksheet)    


4-3. gspread 설치

터미널을 열고 pip install gspread를 통해 gspread를 설치한다. 얘가 있어야 파이썬을 이용해 스프레드시트를 편리하게 읽고 쓸 수 있다.


4-4. pprint란?

스프레드 시트 내용을 dict형식으로 받아오고, dict를 터미널에 찍어보고 싶을 때 pprint.pprint()를 이용하면 사람이 읽기 편하도록 예쁘게 정렬되어 나오게 하는 용도다.


4-5. 시트에 데이터 입력 및 코드 실행

연동이 잘 되었나 확인하기 위해 스프레드시트에 뭔가 내용을 적고, 코드를 실행해본다! 시트 내용이 나온다면 성공!


이후로 1~2번에서 가입한 구글 클라우드 플랫폼 계정으로 다른 스프레드시트에 접근하고 싶다면 3~4번 세팅을 반복해주면 된다.



5. 마치며

 드디어! 스프레드 시트 연동까지 성공했습니다. 자동봇을 만들기 위한 기본 세팅은 다 끝났다고 할 수 있겠네요. 이제 정말 남은 건 코딩뿐이야~! 그러고 보니 설 연휴 중에 돌아오겠다고 해놓고 조금 늦어졌네요.🙏 생각보다 바쁜 명절을 보냈답니다.

 이후 포스팅은 스프레드 시트에 미리 입력한 키워드별 답멘 보내는 기능을 작성하는 법이 될 거고, 그 포스팅을 끝으로 시리즈를 완결 내려고 합니다! 이후로는 전부 다 응용이니 검색과 간단한 무료 파이썬 기초 강의를 통해 원하는 기능을 직접 만들어 보시면 좋을 것 같아요. 조금 더 많은 글을 적고 싶었는데 이게 생각보다 손이 정말 많이 가네요.😥 나중에 여유가 된다면 부가 기능 구현은 결제 상자를 걸고 올리게 될지도 모르겠지만, 일단 현재 계획은 여기까지입니다!

따라오시면서 궁금한 내용이나 안되는 것이 있다면 언제든 편하게 질문 남겨주세요~



참고 문서

gspread 공식 문서 : https://docs.gspread.org/en/latest/index.html



코딩하는 자몽

자몽님의 창작활동을 응원하고 싶으세요?