본문 바로가기
카테고리 없음

구글 설문지를 자동생성 도전

by redcubes 2024. 11. 23.

Python을 이용해 Google Forms API를 사용하고, CSV 파일을 읽어 설문지를 자동으로 생성하는 전체 과정
우선 이 작업에는 몇 가지 준비 단계가 필요하고, 이후 Python 스크립트를 통해 자동화하는 부분으로 나아가게 됨.

1. Google Cloud Project 설정 및 API 사용 설정

  1. Google Cloud Console에 로그인:
    Google Cloud Console에서 새 프로젝트를 생성.
  2. Google Forms API 사용 설정:
    • 생성한 프로젝트에서 API & Services > Library로 이동.
    • 검색창에 "Google Forms API"를 입력하고 해당 API를 활성화.
  3. 서비스 계정 생성 및 인증서 발급:
    • API & Services > Credentials로 이동한 후, Create Credentials를 클릭하고 Service Account를 선택.
    • 서비스를 계정 생성 후, JSON 형식의 인증 파일을 다운로드. 이 파일은 Python에서 Google Forms API에 접근하기 위한 자격 증명이 됨.
    • 파일 이름은 보통 credentials.json으로 저장되는데, Python 스크립트에서 이 파일을 사용함.

2. 환경 설정

Python과 필요한 라이브러리를 설치해야 .

  1. Python 설치:
    Python 3.x 버전이 필요함.
  2. 필요한 라이브러리 설치:
    다음 명령어로 필요한 라이브러리를 설치.
  3. 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']}")

이 코드는 다음과 같은 흐름으로 진행됨:

  1. Google API 인증 설정: credentials.json 파일을 사용해 Google Forms API에 접근할 수 있도록 인증서를 설정함.
  2. 폼 정보 정의: 폼의 제목과 설명을 정의하고, 이후 CSV 파일을 읽어 질문 항목들을 추가함.
  3. CSV 파일 읽기: 준비한 questions.csv 파일에서 각 질문과 답을 불러옴.
  4. 질문 추가: 폼 객체에 각 질문을 추가함.
  5. Google Forms 생성: Google Forms API를 사용해 설문지를 생성하고, 생성된 설문지의 URL을 출력함.

5. 실행하기

코드를 작성한 후 실행하면 Google Forms가 생성되고 URL이 출력됨. 이를 통해 설문지를 볼 수 있음.

주의 사항

  • 서비스 계정 권한: 생성한 서비스 계정에 Google Forms에 대한 작성 및 수정 권한이 있어야 함.
  • Google Workspace 계정 필요 여부: 일반 Gmail 계정에서는 Google Forms API가 제한될 수 있음. Google Workspace 계정을 사용하는 것이 좋음.