PPT 생성기 개발 로그 – 2025-11-16
1. credentials.json 오류 정리
-
/result/페이지(썸네일/다운로드 뷰)로 들어가자마자 아래 에러 발생FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json' -
원인
prompt뷰에서 슬라이드를 만들 때는 OAuth 인증(token.json) 을 쓰고 있었는데,display_slides()/download_pptx()쪽에서는 예전 코드 그대로 서비스 계정용credentials.json파일을 찾고 있었다.
-
해결
- 두 뷰가 같은 인증 방식을 쓰도록 정리해서, 더 이상
credentials.json을 찾지 않도록 수정. - 결과적으로
/result/접근 시 FileNotFoundError 는 사라짐.
- 두 뷰가 같은 인증 방식을 쓰도록 정리해서, 더 이상
2. “내용이 템플릿 그대로” 문제 해결
-
증상
- GPT가 생성한 텍스트를 파일로 잘 만들어 두었는데,
- 실제로 만들어진 PPT를 열어보면 템플릿에 있던 기본 문구가 그대로 남아 있음.
-
조치
create_slides()에서 템플릿 복사 →batchUpdate요청까지 전체 흐름 점검.-
디버그 로그 추가
DEBUG: 56 texts, 0 boxes, 50 requests처럼 텍스트 개수, 매핑된 박스 수, 요청 수를 출력해 확인.
-
이후 수정으로 텍스트 교체 자체는 정상 동작하게 만들었고,
- 템플릿 기본 문구 대신 GPT가 만든 내용이 들어가는 것까지 확인.
3. 텍스트가 “제목 박스에 세로로 쌓이는” 깨짐 현상 분석
-
새로운 문제
- 내용은 들어가는데, 어떤 슬라이드는 제목 박스 한 칸에 본문이 몽땅 들어가서 세로로 쭉 쌓이면서 레이아웃이 무너짐.
-
원인 후보
-
코드가 슬라이드 구조를 모르고 단순히
elements[:2]같은 방식으로 objectId 를 수집해서,- 제목 박스(TITLE), 본문 박스(SUBTITLE), 장식 도형을 구분하지 못함.
-
그 상태로
text_list전체를 순서대로 매핑하면서- 어떤 슬라이드는 제목 박스에 본문까지 다 들어가 버림.
-
-
presentation_data.json구조 분석-
실제 JSON을 열어보니 각 텍스트 박스에 이런 정보가 붙어 있음:
"placeholder": { "type": "TITLE" } -
예시 – 섹션 타이틀 슬라이드 (
p1)TITLE박스:2 한국의 역사적 사건과 인물같은 큰 제목SUBTITLE박스: 한 줄짜리 요약 문장
-
예시 – 내용 슬라이드 (
p8)TITLE:근대화와 한국의 독립 운동(소제목)SUBTITLE: 불릿 포함 본문 전체 (여러 줄)
-
-
오늘까지 얻은 결론
-
텍스트를 넣을 때는 순서가 아니라
placeholder.type기준으로 매핑해야 한다.TITLE→ 슬라이드 제목 1줄SUBTITLE→ 본문(혹은 요약) 전체BODY(notes 등) → 발표자 노트, 보통 건드리지 않기- 그 외 텍스트 없는 도형들은 전부 장식이므로 건드리지 않기
-
4. 다음 할 일(To-do)
-
create_slides()안에서:-
presentation_data.json을 돌면서 슬라이드별로- 제목 박스 objectId (TITLE)
- 본문 박스 objectId (SUBTITLE/BODY) 를 딕셔너리로 수집하는 함수 만들기.
- GPT가 만든 내용도 “슬라이드별 제목 · 슬라이드별 본문” 두 덩어리로 나누기.
-
batchUpdate요청을- 제목 박스에는 제목만,
- 본문 박스에는 본문 전체 가 들어가도록 분리해서 생성.
-
-
이걸 적용하면,
- 섹션 슬라이드는 깔끔한 제목 슬라이드로,
- 내용 슬라이드는 제목 + 본문 구조로
- 레이아웃이 깨지지 않게 정리될 예정.
5. 결론
오류는 그대로 해결된건 웹에서 보이는 오류는 사라짐 credentials.json문제 해결로 모든 기능들은 작동은 함 하지만 처음에 잘 작동했던 기능들이 뭔가 바뀌면서 꼬여서 정상적으로 작동을 안함
이 문제는 아마도 내가 기존에 있는 템플릿별로 내용들이 나오면 그 내용들을 각각 숫자별로 나눠서 해당 page에 맞게 수동으로 배치를 해 줬는데 수정하면서 그 부분이 나라감 그래서 기존에 어떤 방식으로 출력된 txt데이터를 나눴는지 presentation_data.json통해서 파악하는데 시간을 많이 소비함
일단 여기까지 정리하고 다음에 작업할땐 기존에 잘 작동했던 코드에서 어떻게 출력된 txt파일을 ppt에 적용시켜서 결과물을 출력했는지 한번 확인해봐야 할 듯 싶음