[2탄] Gemini API + Google Apps Script + Slides 연동 자동화 프로젝트

📌 소개

먼저 작성한 사례글에서 소개한 " 강의 계획서 자동화 시스템"을 좀 더 고도화 해보고 싶었습니다.그래서 만들어진 Apps Script 코드를 ChatGPT 4o 에 첨부해서 분석을 시킨 후 고도화 작업을 시작했습니다.


https://www.gpters.org/research/post/create-lecture-plan-automation-eRhIwbsfPS3Cqwe

고도화 작업 내용

  • ✅ Google Docs 최종 문서의 포맷을 간결하고 보기 좋게 재구성

  • ✅ Google Sheets [강의 자동화] 메뉴에 '강의안 내보내기 (Google Presentation)' 추가

  • ✅ '강의안 내보내기 (Google Presentation)' 를 클릭하면

  • ✅ Gemini가 생성된 강의 계획서를 바탕으로 강의안을 자동으로 생성하고

  • ✅ 구조화된 슬라이드 구성을 만든 뒤

  • ✅ Google Slides로 강의안을 자동으로 만들어주는 시스템!


⚙️ 진행 방법

어떤 도구를 사용했고, 어떻게 활용하셨나요?

  • 🧠 Google Gemini API: 강의 계획서 요약 및 슬라이드 구조 생성

  • 📊 Google Sheets: 강의 입력 폼 및 실행 환경

  • 📜 Google Apps Script: 자동화 백엔드 스크립트 작성

  • 📽️ ChatGPT 4o: 고도화를 위한 코드 수


🧪 사용한 프롬프트 (코드 고도화)

  1. Apps Script 코드 PDF로 제공 후 분석 요청

  2. 생성된 최종 강의 계획서 Google Docs 문서를 PDF로 첨부 후 프롬프트 입력

구글 문서의 최종 형태가 첨부한 파일처럼 나왔어. 특히 3 강의 전체 구성 및 시간 배분의 불필요한 기호와 선들을 모두 제거하고 간결한 일반 텍스트 형태로 깔금하게 정리하고 싶어.
최종 문서의 형태를 간결하고 보기 좋게 재구성할 수 있도록 다시 코드에서  Gemini API를 이용하는 프롬프트를 수정해줘.
수정된 전체 코드를 다시 작성해줘.
  1. ChatGPT 수정사항 확인 후 Code.gs 전체 코드 제공

  2. 최종 생성된 "강의 계획서" 구글 Docs

  3. 강의안 생성을 요청하기 위해 강의안 예시로 내가 작성한 강의안을 PDF로 제공 후 프롬프트 입력

첨부한 PPT 형식과 같이 생성한 강의 계획서를 바탕으로 Gemini API를 이용해 자동으로 구체적이고 상세한 강의안 자료를 생성해서 최종적으로 구글 프르젠테이션을 만들고 싶어.
구글 시트에 생성된 강의 자동화 메뉴에 "강의안 내보내기(Google Presentation)"을 만들어 전체 코드를 수정해서 만들어줘.
  1. ChatGPT 가 반영한 수정 내용 확인 후 최종 코드 제공

한국어를 가진 한국 웹 사이트 스크린 샷
  1. 최종 코드 실행 후 여러 번의 오류와 ChatGPT 가 제시하는 추가 아이디어를 반영하여 수정과 실행을 반복하면서 완성된 코드를 작성하였습니다.

  2. 최종 생성된 "강의안" 구글 Presentation


💡 활용 예시 이미지

  • Google Sheets

한국어로 된 Google 문서의 스크린 샷
  • 강의 입력 사이드바

    한국 신청서의 스크린 샷
  • 슬라이드 내보내기 함수 코드

    빨간색과 흰색 텍스트가있는 컴퓨터 화면의 스크린 샷

  • 자동 생성된 "강의 계획서" 구글 Docs

    한국어 단어가있는 한국어 문서

  • 자동 삽입된 "강의안" 구글 슬라이드 예시


🎯 결과와 배운 점

배운 점과 나만의 꿀팁을 알려주세요.

  • Gemini는 단순한 요약보다 구조화된 프롬프트에 훨씬 잘 반응한다는 것

  • SlidesApp API에서 getPlaceholder()가 null을 반환할 수 있어 반드시 if로 확인해야 한다는 점

  • 강의 흐름을 미리 시나리오처럼 기획하면, AI가 그 흐름을 따라 슬라이드를 매우 효과적으로 만들어준다는 점


과정 중에 어떤 시행착오를 겪었나요?

  • removeSlide(), deleteSlide() 등의 함수는 존재하지 않아 삭제 방식에서 오류 발생

  • .getPlaceholder(...).asShape()는 빈 슬라이드나 잘못된 레이아웃에서는 null 오류 발생

  • JSON 파싱 구조가 다를 경우 Gemini 응답을 적절히 처리하지 못하는 이슈


도움이 필요한 부분이 있나요?

  • 이미지 삽입 자동화 (예: 감정카드 일러스트 자동 삽입)

  • 활동지 자동 생성과 PDF 변환

  • 다국어 슬라이드 자동 생성 (한/영 병기)


앞으로의 계획이 있다면 들려주세요.

  • 같은 구조를 활용하여 "강사 연수 슬라이드"나 "학부모 설명회 슬라이드"도 자동 생성해볼 예정입니다.

  • 특히 구성 요소가 다양해질수록 슬라이드 자동화 수준도 높일 수 있도록 발전시키고 싶어요.


🧩 도움 받은 글 (옵션)

  • ChatGPT와의 실시간 코드 개선 협업

2

👉 이 게시글도 읽어보세요