Python을 이용해 Google Forms API를 사용하고, CSV 파일을 읽어 설문지를 자동으로 생성하는 전체 과정
우선 이 작업에는 몇 가지 준비 단계가 필요하고, 이후 Python 스크립트를 통해 자동화하는 부분으로 나아가게 됨.
1. Google Cloud Project 설정 및 API 사용 설정
- Google Cloud Console에 로그인:
Google Cloud Console에서 새 프로젝트를 생성. - Google Forms API 사용 설정:
- 생성한 프로젝트에서 API & Services > Library로 이동.
- 검색창에 "Google Forms API"를 입력하고 해당 API를 활성화.
- 서비스 계정 생성 및 인증서 발급:
- API & Services > Credentials로 이동한 후, Create Credentials를 클릭하고 Service Account를 선택.
- 서비스를 계정 생성 후, JSON 형식의 인증 파일을 다운로드. 이 파일은 Python에서 Google Forms API에 접근하기 위한 자격 증명이 됨.
- 파일 이름은 보통
credentials.json
으로 저장되는데, Python 스크립트에서 이 파일을 사용함.
2. 환경 설정
Python과 필요한 라이브러리를 설치해야 .
- Python 설치:
Python 3.x 버전이 필요함. - 필요한 라이브러리 설치:
다음 명령어로 필요한 라이브러리를 설치. pip install google-api-python-client google-auth google-auth-oauthlib google-auth-httplib2
3. CSV 파일 준비
시험 문제와 답을 저장할 CSV 파일을 준비. 예를 들어 다음과 같이 CSV 파일을 만들면 좋음:
Question,Answer
"Apple의 뜻은 무엇인가?", "사과"
"Sky의 뜻은 무엇인가?", "하늘"
이 파일 이름을 questions.csv
로 저장한다고 가정하고 진행할게.
4. Python 코드 작성
이제 Python 코드를 작성해 Google Forms를 자동으로 생성하도록 하겠음. 아래 코드를 사용해 보자.
from googleapiclient.discovery import build
from google.oauth2 import service_account
import csv
# 1. Google API 인증서 로드
SCOPES = ['https://www.googleapis.com/auth/forms.body']
SERVICE_ACCOUNT_FILE = 'credentials.json' # 다운로드한 인증 파일 경로
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('forms', 'v1', credentials=credentials)
# 2. 폼 정보 정의
form = {
"info": {
"title": "자동 생성된 단어 시험",
"description": "이 설문지는 CSV 파일을 통해 자동 생성되었습니다.",
},
"items": [] # 질문이 이 부분에 추가될 예정
}
# 3. CSV 파일에서 질문과 답변 로드
with open('questions.csv', 'r', encoding='utf-8') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
question = row['Question']
answer = row['Answer']
# Google Forms 질문 형식 추가
form_item = {
"title": question,
"questionItem": {
"question": {
"required": True,
"textQuestion": {}
}
}
}
# 폼에 질문 추가
form["items"].append(form_item)
# 4. Google Forms API를 통해 폼 생성
form_result = service.forms().create(body=form).execute()
print(f"Form created: {form_result['responderUri']}")
이 코드는 다음과 같은 흐름으로 진행됨:
- Google API 인증 설정:
credentials.json
파일을 사용해 Google Forms API에 접근할 수 있도록 인증서를 설정함. - 폼 정보 정의: 폼의 제목과 설명을 정의하고, 이후 CSV 파일을 읽어 질문 항목들을 추가함.
- CSV 파일 읽기: 준비한
questions.csv
파일에서 각 질문과 답을 불러옴. - 질문 추가: 폼 객체에 각 질문을 추가함.
- Google Forms 생성: Google Forms API를 사용해 설문지를 생성하고, 생성된 설문지의 URL을 출력함.
5. 실행하기
코드를 작성한 후 실행하면 Google Forms가 생성되고 URL이 출력됨. 이를 통해 설문지를 볼 수 있음.
주의 사항
- 서비스 계정 권한: 생성한 서비스 계정에 Google Forms에 대한 작성 및 수정 권한이 있어야 함.
- Google Workspace 계정 필요 여부: 일반 Gmail 계정에서는 Google Forms API가 제한될 수 있음. Google Workspace 계정을 사용하는 것이 좋음.