PDF 자동 변환 가이드: 시트 데이터를 버튼 하나로 깔끔한 보고서로 저장하기
“매주 금요일마다 ‘Ctrl+P’와 씨름하고 계신가요?”
반복되는 보고서, 견적서 발송 업무를 3초 컷으로 줄여주는 ‘PDF 변환 자동화 버튼’ 만들기
직장인 A씨의 금요일 오후 풍경을 상상해 봅시다. 주간 업무 보고서를 작성했습니다. 이제 상사에게 보내기 위해 PDF로 변환해야 합니다.
-
파일>다운로드>PDF를 누릅니다. -
가로 방향인지 확인하고, 여백이 잘리는지 미리 보기를 봅니다.
-
바탕화면에 저장합니다.
-
파일 이름을 ‘20240112_주간보고_최종.pdf’로 수정합니다.
-
메일함을 엽니다.
이 과정을 매주, 혹은 매일 반복하고 계신가요? 견적서나 거래명세서처럼 양식은 똑같은데 내용만 바뀌는 문서라면 이 단순 노동은 엄청난 시간 낭비입니다.
“클릭 한 번으로, 지정된 범위만 예쁘게 잘라서, 날짜까지 적힌 파일명으로 저장해 준다면 어떨까요?”
오늘은 구글 시트에 **’PDF 저장 버튼’**을 심는 마법 같은 기술을 소개합니다. 코딩을 몰라도 복사해서 붙여넣기만 하면, 여러분의 시트가 ‘자동 문서 발급기’로 변신합니다.
1. 수동 변환의 고통: “왜 매번 설정이 풀릴까?”
구글 시트의 기본 PDF 다운로드 기능은 훌륭하지만, **’일관성’**이 부족합니다. 급하게 다운로드하다 보면 격자선(Gridlines)을 끄는 걸 깜빡해서 지저분한 문서가 되기도 하고, 인쇄 영역을 잘못 지정해서 엉뚱한 데이터까지 포함되기도 합니다.
자동화 스크립트를 사용하면 **’약속된 설정’**이 강제됩니다.
-
항상 A4 가로 방향으로
-
항상 격자선 없이 깔끔하게
-
항상 B2:G20 범위만 정확하게
이 ‘항상성’이 업무의 퀄리티를 유지해 주는 비결입니다.
2. 마법의 주문서: Apps Script 코드 복사하기
겁먹지 마세요. 여러분이 직접 코드를 짤 필요는 없습니다. 제가 작성한 ‘주문서’를 복사해서 여러분의 시트에 넣어주기만 하면 됩니다.
[준비 단계]
-
PDF로 만들고 싶은 시트를 엽니다. (시트 이름을 기억하세요. 예:
견적서) -
상단 메뉴 [확장 프로그램] > **[Apps Script]**를 클릭합니다.
-
편집기 창이 열리면 기존 내용을 지우고 아래 코드를 붙여넣습니다.
[자동화 코드]
function saveToPDF() {
// 1. 설정: 시트 이름과 저장할 범위를 지정하세요.
var sheetName = "견적서"; // 여러분의 시트 이름으로 변경
var range = "B2:G20"; // PDF로 만들 범위 지정
// 2. 현재 스프레드시트 정보 가져오기
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
var sheetId = sheet.getSheetId();
// 3. 파일 이름 자동 생성 (예: 견적서_2024-01-12.pdf)
var today = Utilities.formatDate(new Date(), "GMT+9", "yyyy-MM-dd");
var fileName = sheetName + "_" + today + ".pdf";
// 4. PDF 변환 옵션 설정 (URL 파라미터 방식)
// size=7 (A4), portrait=false (가로), gridlines=false (격자선 없음)
var url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export" +
"?format=pdf" +
"&size=7" + // A4 크기
"&portrait=false" + // 가로 방향 (세로는 true)
"&fitw=true" + // 너비 맞춤
"&gridlines=false" + // 격자선 숨기기
"&gid=" + sheetId + // 해당 시트 ID
"&range=" + range + // 지정된 범위만 인쇄
"&pagenum=CENTER"; // 페이지 번호 중앙 표시
// 5. PDF 생성 및 드라이브 저장 (권한 필요)
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
});
var blob = response.getBlob().setName(fileName);
DriveApp.createFile(blob); // 구글 드라이브 최상위 폴더에 저장됨
// 6. 완료 알림
SpreadsheetApp.getUi().alert("✅ PDF 저장이 완료되었습니다! \n파일명: " + fileName);
}
📝 수정할 곳: 코드 상단의
sheetName(“견적서”)과range(“B2:G20”)만 여러분의 상황에 맞게 바꿔주세요.
3. 화룡점정: 시트 위에 ‘버튼’ 만들기
코드를 저장했다면, 이제 시트 위에 멋진 버튼을 만들어서 이 기능을 연결할 차례입니다. 매번 스크립트 편집기를 열 수는 없으니까요.
-
시트 화면으로 돌아옵니다.
-
[삽입] > **[그림]**을 클릭합니다.
-
도형 아이콘을 눌러 ‘둥근 사각형’을 하나 그립니다.
-
안에 텍스트로 **”PDF 저장”**이라고 쓰고, 색상도 예쁘게 꾸며줍니다.
-
**[저장 및 닫기]**를 누르면 시트 위에 버튼 그림이 생깁니다.
-
이 그림을 클릭하면 우측 상단에 **점 3개(⋮)**가 보입니다. 클릭!
-
**[스크립트 할당]**을 선택합니다.
-
입력창에 아까 만든 함수 이름인 **
saveToPDF**를 정확하게 적고 [확인]을 누릅니다.
4. 실행 및 권한 승인 (딱 한 번만!)
이제 두근거리는 마음으로 버튼을 눌러보세요. 처음 실행할 때만 “권한 승인” 팝업이 뜹니다.
-
[계속] > [계정 선택] > [고급] > […로 이동(안전하지 않음)] > [허용]
승인이 끝나면 잠시 후… “✅ PDF 저장이 완료되었습니다!” 라는 알림창이 뜹니다. 구글 드라이브(My Drive)에 가보세요. 방금 생성된 따끈따끈한 PDF 파일이 들어있을 겁니다.
5. 응용하기: 이메일로 바로 쏘기?
저장만으로는 부족한가요? 버튼을 누르면 PDF를 생성해서 거래처 이메일로 바로 발송하게 할 수도 있습니다.
위 코드의 마지막 부분(DriveApp.createFile...) 아래에 딱 세 줄만 추가하면 됩니다.
// 이메일 발송 추가 코드
var emailAddr = "client@company.com"; // 받는 사람 이메일
var subject = "요청하신 견적서 송부드립니다.";
var body = "안녕하세요, 첨부파일 확인 부탁드립니다.";
MailApp.sendEmail({
to: emailAddr,
subject: subject,
body: body,
attachments: [blob] // 방금 만든 PDF를 첨부
});
이제 이 버튼은 단순한 저장 버튼이 아니라, **”문서 생성 + 저장 + 발송”**을 3초 만에 끝내는 ‘업무 자동화 로봇’이 되었습니다.
게으른 사람이 세상을 바꿉니다
빌 게이츠는 “나는 어려운 일을 게으른 사람에게 시킨다. 왜냐하면 그는 그 일을 쉽게 하는 방법을 찾아낼 것이기 때문이다”라고 했습니다.
매번 반복되는 Ctrl + P 작업, 성실하게 반복하지 마세요. 그건 컴퓨터가 제일 잘하는 일입니다. 오늘 만들어드린 이 ‘PDF 버튼’ 하나가, 여러분에게 매주 금요일 커피 한 잔의 여유를 선물해 줄 것입니다.
지금 바로 시트 구석에 버튼 하나를 그려넣어 보세요. 신세계가 열립니다.