내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.
종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
자세한 내용은 여기로: https://www.epubguide.net/notice/309
오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.
PDF 페이지를 이미지로 저장 하고, 표, 도표, 이미지를 찾아 자동으로 좌표를 지정합니다.
좌표가 잘못 잡히는 경우가 있기 때문에 좌표 수정도 가능합니다.
크롭 할 이미지 좌표를 다 정리한 후 [확인]을 누르면 crop 파일에 크롭 한 이미지가 저장됩니다.
EPUB을 만들 때 PDF에서 이미지를 추출하는 시간이 오래 걸립니다.
그래서 시간을 절약하고자 만들었는데, 이미지가 많은 책은 2시간 넘게 걸리던 작업을 30분, 익숙해 진 후에는 10~15분 만에 정리가 끝납니다.
다른 분들도 참고하실 수 있도록 10쪽 기능 제한을 걸고 데모를 올려드립니다.
1. 앱을 실행하면 이런 화면이 나옵니다. [불러오기]를 눌러도 되고, 편하게 PDF 파일을 드래그 하면 파일이 열립니다.
2. 작업을 하기 전에 설정을 먼저 맞추세요. 출력 유형, 해상도, 이미지 품질 등을 설정 할 수 있습니다.
3. PDF를 불러오면 이미지로 변환을 해 resource 폴더에 저장합니다. 이미 이미지로 변환을 한 상태라면 불러오기로 resource 폴더를 지정 할 수도 있습니다.
4. PDF 또는 이미지를 불러온 후 [분석]을 누르면 이미지가 있는 파일을 찾아 이미지 좌표를 잡습니다.
5. 이미지가 있는 페이지는 썸네일에 표시가 되고, 이미지 좌표를 알아서 잡습니다. 이 작업이 이미지를 크롭하는 시간을 절약해줍니다. 도표나 표, 복잡하게 겹쳐 있는 이미지는 좌표가 제대로 집하지 않습니다. del키로 좌표를 삭제 할 수 있고, 레이어 순서를 변경할 수 있습니다. 모서리의 둥근 부분을 클릭해 조절하면 좌표를 수정 할 수 있습니다.
6. 좌표 지정이 끝나면, [실행]을 느릅니다. 그럼 crop 폴더에 좌표를 잡은 부분만 크롭해 저장을 합니다. 파일명은 페이지 번호가 붙습니다. 한 페이지에 이미지가 2개 이상이면 끝에 -1, -2...로 숫자가 붙습니다.
간단한 프로그램이지만 전자책 만드는 시간을 많이 절약해 줍니다.
전엔 PDF를 이미지로 저장하고, 이미지 사이즈를 조절하고, 이미지가 있는 페이지만 찾아 분리하고, gimp로 불러와 하나씩 이미지를 크롭했어요. 이렇게 하면 40~50개 정도 이미지가 있으면 1시간 이상, 오래 걸리는 책은 2시간 가까이 걸렸습니다.
내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.
종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
자세한 내용은 여기로: https://www.epubguide.net/notice/309
오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.
인터넷 찾아 보면 PDF를 EPUB으로 변환해 주는 웹서비스나 앱도 많은데 왜 이런 앱이 필요해? 라고 하시는 분도 많을거예요.
네. 그런 앱이 좋다면 그 앱을 사용하시면 됩니다.
이 앱은 PDF를 EPUB으로 만들어 출간을해야 하는 출판계에 계신 분들을 위한 앱입니다.
뿐만 아니라 PDF 원고를 html로 저장 후 hwp로 불러와 편집을 할 수 있습니다.
원고 없이 PDF로 보관하고 있는데 개정판 등을 내기 위해 재편집을 해야 할 때 유용합니다.
너무나 당연한 얘기지만,
이미지 PDF나 아웃라인 PDF는 사용 할 수 없습니다. 이런 PDF는 OCR을 이용하세요.
이 앱의 특징은,
1. PDF의 글자 편집 스타일을 그대로 유지해 준다.
- 글꼴, 글자크기, 색상, 첨자, 기울임, 진하게 등의 기본 스타일을 그대로 유지합니다.
- 추출하고 싶은 스타일을 직접 지정 할 수 있습니다.
2. 문단/줄 정리
- PDF에서 텍스트를 추출 할 때 가장 큰 문제가 문단이 잘리는 문제가 있습니다.
다 자란 새들이 둥지를 떠나듯 성장한 자녀는 부모를 떠난 다. 의심의 여지는 추호도 없는, 유구한 본능이며 당연한 사 실이다. 생애 이벤트(교육, 연애, 취업, 결혼, 출산 등)를 거치면 서 아이는 어른이, 자녀는 부모가 된다. 그런데 오늘날 이 현상은 사뭇 달라졌다. 아들딸이 집을 떠나지 않거나, 나갔 다가 되돌아온 경우가 급격히 늘어난 것이다.
이렇게 잘린 문단을 정리해야 하는데, 정리를 하면 이런 문제가 생기지요.
다 자란 새들이 둥지를 떠나듯 성장한 자녀는 부모를 떠난 다. 의심의 여지는 추호도 없는, 유구한 본능이며 당연한 사 실이다. 생애 이벤트(교육, 연애, 취업, 결혼, 출산 등)를 거치면 서 아이는 어른이, 자녀는 부모가 된다. 그런데 오늘날 이 현상은 사뭇 달라졌다. 아들딸이 집을 떠나지 않거나, 나갔 다가 되돌아온 경우가 급격히 늘어난 것이다.
이렇게 잘린 줄이 신국판 300쪽 기준으로 3000개 ~ 5000개 정도 나옵니다.
제가 표시를 해서 눈에 잘 보이지만, 저런 부분은 찾아 정리하려면 시간이 오래 걸려요.
이런 문단을 정리해 줍니다.
3. 일괄 처리
PDF 한두개라면, 시간 들여 하나씩 정리하면됩니다. 그런데 10개, 20개를 정리하려면 시간이 많이 걸리지요?
여러개의 PDF를 일괄로 처리하는 일괄 처리 기능을 추가했습니다.
일괄 처리는 PDF를 HTML로 추출, 문단 정리, LLM 정리를 알아서 진행합니다.
**사용 방법**
1. 앱을 실행하세요.
(윈도우에서 강제로 Xbox Game Bar(ms-gamingoverlay)를 띄우려고 시도하는데, 이걸 막는 방법을 찾지 못했어요. 이와 관련한 메시지가 뜨면, 무시하면 됩니다.)
2. PDF를 불러온 후 추출 옵션을 설정하세요.
추출 할 필요 없는 쪽번호나 머리글 영역이 있다면 추출 범위를 설정해 본문만 지정합니다.
추출 할 스타일을 선택 할 수 있습니다. 추출을 원하는 스타일을 선택하세요.
3. [XHTM 저장] 버튼을 눌러 XHTML 파일로 저장을 합니다.
저장을 하면 바로 xhtml 정리를 할 것인지 물어봅니다.
YES를 누르면 XHTML 정리로 넙어갑니다.
나중에 작업을 하려면 No를 누르세요. [xhtml 정리] 탭에서 저장한 파일을 불러 올 수 있습니다.
4. xhtml 정리 - 1. 태그 정리.
PDF에서 저장한 xhtml 파일은 문단이 줄 단위로 나눠져 있습니다.
[태그 정리]는 줄 단위로 구분된 문단을 문단 단위로 연결해 주는 기능입니다.
[1. 태그 정리]를 선택한 후 [실행]을 누르세요.
그럼 [PDF 파일명_raw_merged.xhtml]라는 xhtml 파일이 만들어 지고, 아래처럼 before에 단어가 들어갑니다.
단어를 클릭하면 html 편집 창에 단어가 있는 위치로 이동을 해요.
단어를 보고 띄어쓰기 문제가 있는 항목을 수정 할수 있습니다.
하지만, 신국판 300쪽 책 한권에 3000~5000개 정도 있는 단어를 모두 확인하기 힘들지요?
5. xhtml 정리 - 2. LLM 정리
단어 띄어쓰기는 LLM을 이용해 정리 할 수 있습니다.
먼저 ollama를 설치하세요. $200 넘는 유료 AI 모델을 사용한다면, 유료 모델을 권해드려요.
내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.
종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
자세한 내용은 여기로: https://www.epubguide.net/notice/309
오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.
어느정도로 어렵냐 하면, 하나 변환하는 데 한 달 정도 생각을 해야 할 정도로 어렵습니다.
왜?
다음 문단을 보세요. PDF에서 뽑은 텍스트입니다.
===============
나는 어릴 적 짬뽕을 무척 좋아했다. 국물 속에 뒤섞여 있는 해 산물이 그렇게 좋았다. 지금도 그때와 크게 다르지 않다. 나는 여전 히 ‘짬뽕’을 좋아한다. 다만 이번에 좋아하는 짬뽕은 음식이 아니라 금융상품이다. 주식의 거래 방식과 펀드의 분산투자 기능을 결합
...
이러한 매력 덕분에 ETF 시장은 폭발적으로 성장했다. 최근
5년간 글로벌 ETF 자산은 연평균 18% 증가했고,22 2024년 한 해에
만 1.6조 달러, 우리나라 돈으로 약 2,240조 원(환율 1,400원 가정)이
새로 유입되었다.33 지금은 전 세계적으로 14조 달러 이상이 ETF에
투자되어 있을 만큼 인기가 높다. 이렇게 인기가 높은 이유는 기존
...
이 책을 덮을 때쯤, 독자들은 다음의 내용들을 온전히 자신의 것으로 만들게 될 것이다. ETF, 주식, 채권, 금 등 기본 개념의 이해 월배당이 가능한 구조와 원리 세후, 건강보험료, PR까지 고려한 순월배당 개념 국내외 인기 월배당 ETF의 특징과 사례 모든 투자에 필요한 경제 지식과 자산배분 원리 투자자 심리와 편향 교정 이 책은 1장과 2장을 먼저 읽으면 기본 개념을 이해하는 데 도움이 된다.
================
이 중에
(환율 1,400원 가정)
22, 33은 주석 위첨자 2이고, 색은 주황색입니다.
는 본문 보다 글자 크기가 작습니다.
ETF, 주식, 채권, 금 등 기본 개념의 이해 월배당이 가능한 구조와 원리 세후, 건강보험료, PR까지 고려한 순월배당 개념 국내외 인기 월배당 ETF의 특징과 사례 모든 투자에 필요한 경제 지식과 자산배분 원리 투자자 심리와 편향 교정
이 부분은 색과 글꼴이 다르고 앞에 글머리기호가 붙습니다.
여기에 행갈이 된 부분을 자동 정리하면 다음과 깉이 정리됩니다.
해 산물이
여전 히
해에 만
어떤 단어는 붙여쓰기를, 어떤 단어는 띄어쓰기를 해야 하는데 이를 전부 확인해야하지요.
자동으로 처리 후 띄어쓰기만 확인하면 어떨까요?
=========
나는 어릴 적 짬뽕을 무척 좋아했다. 국물 속에 뒤섞여 있는 해 산물이 그렇게 좋았다. 지금도 그때와 크게 다르지 않다. 나는 여전 히 ‘짬뽕’을 좋아한다. 다만 이번에 좋아하는 짬뽕은 음식이 아니라 금융상품이다. 주식의 거래 방식과 펀드의 분산투자 기능을 결합
=========
여기에서 띄어쓰기가 잘못 된 부분을 찾아야해요. 책 한권에 3~4천줄 정도 되니, 그만큼의 단어를 찾아 확인해야 합니다.
그래서 오래 걸려요.
여기에 한자, 영문 병용표기라도 1000개쯤 들어가 있고, 본문 중간에 다른 글꼴로 단어를 강조한다면 원고를 인디자인으로 편집하는 시간 보다 pdf를 epub으로 변환하는 시간이 훨씬 오래 걸립니다.
이 문제를 해결 할 방법이 없을까 고민하다 AI를 이용해 앱을 하나 만들었습니다.
이 앱은 총 3가지 작업을 합니다.
1. PDF의 글자 속성을 반영해 HTML로 변환
PDF의 본문 글꼴을 파악해 본문과 다른 스타일을 글자를 자동으로 인식합니다.
제목은 heading 태그로, 기울임, 진하게, 글자색, 첨자 등은 해당 스타일 속성을 적용합니다.
외국어 병용표기가 1000개쯤 된다 해도, 스타일로 구분 할 수 있어 일괄 변경을 할 수 있습니다.
2. 줄 병합
이렇게 추출한 html 파일은 2단계로 정리를 합니다.
첫번째는 줄 병합입니다.
아래와 같이 분리된 줄을
==========
나는 어릴 적 짬뽕을 무척 좋아했다. 국물 속에 뒤섞여 있는 해 산물이 그렇게 좋았다. 지금도 그때와 크게 다르지 않다. 나는 여전
==========
아래 처럼 연결해 줍니다.
==========
나는 어릴 적 짬뽕을 무척 좋아했다. 국물 속에 뒤섞여 있는 해 산물이 그렇게 좋았다. 지금도 그때와 크게 다르지 않다. 나는 여전
==========
그런데 여기서 문제가 생깁니다. 빨간색 부분, 두 줄이 연결된 부분의 띄어쓰기를 확인해야 하지요.
그래서 정리를 할 때 확인해야 하는 부분을 별도의 태그로 감쌌습니다.
연결 부분은 오른쪽에 목록으로 확인 해 직접 수정 할 수 있습니다. 하지만 수천개를 하나씩 확인하기 어렵지요.
테스트용으로 사용한 이 책만 해도 3700줄이 연결 부위가 있습니다. 이를 해결해야겠지요.
3. LLM을 이용한 단어 병합
LLM을 이용해 단어를 병합하도록 합니다. 유료 LLM은 api를 사용하려면 월 200달러 이상 비용을 지불해야합니다.
내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.
종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
자세한 내용은 여기로: https://www.epubguide.net/notice/309
오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.
전처리 프롬프트는 맞춤법 검사 전에 PDF에서 추출한 텍스트의 줄바꿈을 정리하는 기능입니다.
옵션이기 때문에 전처리 옵션을 켰을 때만 사용합니다.
이것 저것 해 봤는데 이 프롬프트가 가장 잘 정리를 해 줘요. 이 부분도 수정 할 수 있습니다.
전처리가 필요한 이유는 PDF의 특성 때문입니다.
PDF에서 텍스트를 복사해 메모장에 붙여넣어 보세요.
헨리 라이더 해거드(1856–1925)는 영국의 소설가이자 모험문학의 개척자로, ‘솔로 몬 왕의 광산’, ‘그녀’ 등으로 유명하다. 그는 19세기 말 제국주의 시대의 탐험 열 풍 속에서 미지의 아프리카를 배경으로 한 이야기를 통해 인간의 욕망, 신비, 문 명과 야만의 경계를 탐구했다.
이렇게 행 끝이 줄바꿈 됩니다. 그럼 AI는 [탐험 열풍]으로 읽지 않고 [탐험 열] [풍 속에서]로 읽어요.
이 문제를 해결하기 위해 줄바꿈 된 부분을 연결해 주는 작업을 먼저 하는 기능이에요.
4. 분석 설정
분석 설정은 분석 할 PDF의 페이지, 페이지 내 범위 등을 설정합니다.
분석 단위는 한 페이지 단위로 할 것인지, 한 문장식 끊어 할 것인지를 결정합니다.
문장 단위로 하면 더 섬세하기 분석하지만 시간이 오래 걸리고, 문장 단위로 하면 정확도는 떨어지지만 빨라집니다.
분서 범위는 머리글, 바닥글 영역으로 인한 문제를 해결해 줍니다. 아래 예시 이미지에 바닥글의 [프롤로그]는 모든 페이지에 나옵니다. 하단 여백을 설정하면 [프롤로그] 처럼 장 제목이 표시되는 바닥글을 제외 할 수 있습니다.
텍스트 전처리 후 분석을 체크하면 위에서 얘기한 행갈이 문제를 해결해 줍니다.
5. 분석
이제 준비가 끝났습니다. PDF를 불러온 후 [분석]을 누르면 맞춤법 검사를 시작합니다.
처음에는 [분석 페이지 설정]에서 2~3페이지만 먼저 분석을 해 보세요.
프롬프트에 따라 분석 결과가 크게 달라집니다.
예를 들어 프롬프트에서
제약 사항:
문장 윤문이나 문체 수정은 엄격히 배제할 것. 문장의 어조나 구조를 변경하지 말고, 객관적인 오류에만 집중할 것.
이 부분을 삭제하고
어색한 문장은 매끄러운 문체로 윤문 할 것
이라고 지시를 하면, 오탈자 뿐 아니라 어색한 문장을 찾아 추천 문장을 제안해 줍니다.
이를 활용하면 오탈자 검사 뿐 아니라 특정 단어만 찾는 등 다른 목적으로도 활용 할 수 있습니다.
분석 시간은 컴퓨터 성능에 따라 크게 차이가 납니다.
RTX 5090에 vram 24gb 그래픽카드가 있는 PC라면 gemma3:27b 모델로 아주 빠르고 정확하게 분석을 할 거예요.
그래픽 카드 없고 ram 8gb 달린 컴퓨터라면 gemma3:4b 모델로 속도도 오래 걸리거 정확도도 아주 낮을거예요.
제가 테스트 해 본 모델 중 맞춤법 검사를 가장 잘 해준 모델은 gpt-oss:120b입니다.
클라우드 모델을 사용해 봤는데 빠르고 정확해요. 다만, 유료 모델이라 1~2페이지 검사하면 제한에 걸립니다.
6. 분석이 끝나면 [저장]을 눌러 PDF로 저장하세요.
분석을 마치면 오탈자가 있는 페이지의 섬네일은 빨간 선으로 표시됩니다.
오탈자 목록을 보고, 오탈자가 아니라면 [x]를 눌러 삭제 할 수 있습니다.
오탈자는 맞는데 AI가 추천한 단어가 마음에 들지 않는다면 [주석 편집]에서 수정 후 저장을 하세요.
이렇게 2차 편집 후 왼쪽 상단에 있는 [저장]을 누르면 PDF 파일에 주석으로 결과가 저장됩니다.
내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.
종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
자세한 내용은 여기로: https://www.epubguide.net/notice/309
오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.
내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.
종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.
한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.
자세한 내용은 여기로: https://www.epubguide.net/notice/309
오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.
작업 관리는 여러 방식으로 하지만, 가장 손쉽고 익숙한 것은 엑셀(스프레드 시트)을 이용한 정리일 것입니다.
저는 작업 의뢰를 받으면 구글 스프레드에 작업 일정 관리 부터 세금계산서 발행까지 정리를 하고 있어요.
그런데 작업할 도서 목록이 많아지면, 일 단위로 일정을 관리하기 어렵습니다.
그래서 마감일을 관리하기 위해 마감일 기준으로 구글 캘린더에 작업 목록을 정리해 관리를 합니다.
출판사
책제목
제작원가
견적 총액(세금포함)
세금
제작 기한
완료일
정산내역
증빙구분
계산서 발급일자
테스트 출판사
샘플 도서명
100
110
10
2025-12-01
2025-12-15
세금계산서
테스트 출판사
샘플 도서명
100
110
10
2025-12-04
2025-12-04
세금계산서
테스트 출판사
샘플 도서명
100
100
2025-12-05
2025-12-05
계산서
테스트 출판사
샘플 도서명
100
103
3
2025-12-09
2025-12-09
외주
하지만 일이 들어 올 때 마다 작업 일정을 구글 스프레드와 캘린더에 등록하기 귀찮아요.
구글 스프레드에만 등록하면 자동으로 캘린더에 등록되면 얼마나 좋을까?
마침 구글 App Script라는게 있어 AI를 이용해 만들어 봤습니다.
스프레드 시트에 등록한 출판사명 + 도서명을 캘린더 일정 제목으로 하고, 완료일에 일정을 등록하도록 하는 App Script입니다.
복잡한 기능이 아니라 1시간도 되지 않아 앱을 만들었어요.
AI와 대화는 이런걸 만들어줘, 이 기능을 추가해줘, 이렇게 수정해줘 등등 대화 형태로 진행을 했지만, 대화 과정을 모두 보여드릴 필요는 없겠지요?
최종 결과물을 AI 프롬프트로 다시 정리해 보여드립니다.
이 내용에서 필요한 부분만 수정하면 저와 시트 모양이 다르더라도 일정 관리 앱스크립트를 만들 수 있어요.
예를 들어, 데이터 시작 셀을 A5열로 잡았는데 내가 작성한 시트는 A10열 부터 시작을 할 수 있을거예요.
저는 출판사와 책 제목을 캘린더 일정 이름으로 표시했지만, 할일 번호와 할일 제목이 될 수 있겠지요.
당신은 Google Apps Script(GAS) 전문가입니다.
Google Sheets의 데이터를 읽어 Google Calendar에 “종일 일정”을 생성하는 스크립트를 작성하세요. 아래 요구사항을 모두 만족하는 최종 코드를 하나의 .gs 파일 형태로 제시하고, 필요한 경우 보조 함수도 함께 작성하세요.
1) 실행 환경/전제
스크립트는 “컨테이너 바운드” Google Sheets(스프레드시트에 연결된 Apps Script)에서 실행됩니다.
사용자가 스프레드시트를 열면 커스텀 메뉴가 자동 생성되어야 합니다.
캘린더는 사용자가 지정한 calendarId로 접근합니다(권한 이슈가 있을 수 있으니 예외 처리/로그 포함).
2) UI 메뉴 요구사항
onOpen(e) 트리거로 메뉴를 추가하세요.
메뉴 이름: 일정 추가
메뉴 항목 텍스트: 캘린더에 추가
메뉴 클릭 시 실행 함수: sheetTOcalendar
3) 시트/데이터 소스 요구사항
현재 활성 스프레드시트를 가져오고, 데이터는 “현재 활성 시트(Active Sheet)”에서 읽습니다.
calendarId는 Total 시트의 B1 셀에서 읽습니다.
Total 시트가 없거나 B1이 비어 있으면 사용자에게 알리고 중단하세요(예: SpreadsheetApp.getUi().alert 또는 throw new Error).
데이터 범위(열 의미)는 다음과 같습니다.
A열(인덱스 0): 책 제목(title)
B열(인덱스 1): 출판사(publisher)
F열(인덱스 5): 마감일(deadline)
G열(인덱스 6): 완료 여부(finished) — 현재 로직에서는 기본적으로 사용하지 않지만, 확장 가능하도록 구조화하세요(예: 옵션 플래그로 “완료면 스킵”을 쉽게 추가 가능).
데이터 시작 행은 5행입니다(즉, A5부터).
데이터의 마지막 행은 안정적으로 계산해야 합니다.
단순히 중간 빈 행이 있어도 아래 데이터가 누락되지 않도록 구현하세요.
getLastRow() 기반으로 처리하되, 실제로 A열/필수 컬럼이 모두 비어 있는 행은 건너뛰도록 하세요.
4) 일정 생성 규칙(핵심)
각 행에 대해 아래 조건을 만족할 때만 캘린더에 종일 일정을 생성합니다.
title과 publisher가 비어있지 않음
deadline이 유효한 날짜임(Date 객체 또는 변환 가능한 값)
일정 제목(title)은 다음 규칙으로 만드세요.
"{책제목} {출판사}"
일정은 “종일 일정(All-day event)”로 생성해야 합니다.
중복 방지 로직:
같은 deadline 날짜에, 같은 일정 제목이 이미 존재하면 생성하지 않습니다.
구현은 getEventsForDay(deadline)로 해당 날짜의 이벤트 목록을 가져와 제목이 동일한 이벤트가 하나라도 있으면 스킵합니다.
처리 결과는 실행 로그에 남겨야 합니다.
예: “이미 추가됨”, “추가함”, “deadline이 유효하지 않아 스킵” 등.
5) 날짜 처리/유효성 검사
deadline 셀 값이 다음 형태일 수 있으니 모두 고려하세요.
Date 객체
문자열(예: 2025-12-31, 2025.12.31 등)
스프레드시트 날짜 직렬값(숫자)
유효하지 않으면 해당 행은 스킵하고 로그를 남기세요.
가능한 경우 문자열/숫자는 Date로 변환을 시도하세요.
시간대 이슈(한국 시간) 가능성을 고려하여, 최소한 “날짜만” 기준으로 종일 일정이 생성되도록 주의하세요.
6) 성능/안전성 요구사항
루프 변수는 반드시 let 또는 const로 선언하세요(전역 변수 금지).
가능한 한 Spreadsheet 호출을 최소화하세요(한 번에 범위를 읽고 메모리에서 처리).
Calendar 호출도 불필요하게 반복하지 않도록 구조를 깔끔하게 작성하세요.
캘린더 ID가 잘못되었거나 캘린더 객체가 null이면 중단하고 사용자/로그에 안내하세요.
7) 사용성(옵션이지만 포함 권장)
처리 완료 후 “몇 건 처리/몇 건 추가/몇 건 스킵” 같은 요약 정보를 alert 또는 로그로 남기세요.
중복 판단 기준을 추후 확장 가능하도록 분리해 주세요(예: isDuplicateEvent_(cal, date, title) 같은 헬퍼 함수).
8) 최종 산출물 형식
최종 답변에는 다음을 포함하세요.
완성된 Apps Script 코드(전체)
코드 사용 방법(어떤 시트를 어떻게 준비하고, 어떤 메뉴를 눌러 실행하는지) 간단히 3~5줄
불필요한 설명은 줄이고, 바로 실행 가능한 수준으로 작성하세요.