서론
업무 환경에서 가장 자주 반복되는 작업 중 하나가 문서 작성입니다. 특히 거래명세서, 라벨, 영수증, 견적서 같은 문서는 기본 구조는 동일하지만 내용만 고객이나 제품에 따라 달라집니다. 이 경우 매번 복사해 붙여넣는 방식으로 문서를 만들면 시간이 오래 걸릴 뿐 아니라, 작은 오타나 누락으로 신뢰도가 떨어질 수 있습니다. 이런 문제를 해결할 수 있는 방법이 바로 ‘시트 데이터 병합’입니다. 구글 스프레드시트에 고객 정보, 제품명, 단가, 수량 등 데이터를 정리해 두고, 이를 미리 준비한 구글 문서 템플릿과 결합하면 자동으로 개별 문서가 생성됩니다. 일명 '메일 머지(Mail Merge)' 기법을 활용하는 것으로, 문서 작성의 효율성과 정확성을 크게 높일 수 있습니다.
본론
첫 번째 단계는 데이터 준비입니다. 구글 스프레드시트에 거래명세서 생성에 필요한 데이터 열을 만듭니다. 예를 들어 '고객명', '주소', '제품명', '단가', '수량', '합계' 같은 항목을 열로 두고, 각 행에는 거래 건별 데이터를 입력합니다. 라벨을 만들 경우에는 '제품명', '코드', '바코드번호' 등을 입력할 수 있습니다.
두 번째 단계는 문서 템플릿 작성입니다. 구글 문서에서 거래명세서나 라벨 형식을 미리 디자인하고, 변수가 들어갈 자리에 머지 태그를 삽입합니다. 예를 들어 {{고객명}}
, {{제품명}}
, {{합계}}
와 같은 형식으로 표기합니다. 이렇게 하면 나중에 Apps Script가 시트 데이터를 불러와 자동으로 치환합니다.
세 번째 단계는 Apps Script를 활용한 자동화입니다. 스프레드시트 메뉴에서 ‘확장 프로그램 → 앱스 스크립트’를 열고, 다음과 같은 코드를 작성합니다.
function createDocs() {
var templateId = "템플릿문서ID";
var folderId = "저장폴더ID";
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
var row = data[i];
var copy = DriveApp.getFileById(templateId).makeCopy("거래명세서_" + row[0], DriveApp.getFolderById(folderId));
var doc = DocumentApp.openById(copy.getId());
var body = doc.getBody();
body.replaceText("{{고객명}}", row[0]);
body.replaceText("{{제품명}}", row[1]);
body.replaceText("{{수량}}", row[2]);
body.replaceText("{{합계}}", row[3]);
doc.saveAndClose();
}
}
위 코드는 스프레드시트의 각 행 데이터를 읽어 템플릿 문서에 치환하고, 지정된 폴더에 개별 문서를 생성하는 예시입니다. 이 방식으로 수십 개의 거래명세서를 한 번에 만들어낼 수 있습니다. 라벨 생성도 동일한 원리로, 바코드 번호나 제품명을 치환하면 됩니다.
실무에서는 이 기능을 활용해 정기적으로 발송되는 계약서, 청구서, 고객 안내문 등을 자동화할 수 있습니다. 예를 들어 매달 수백 명의 고객에게 발송되는 거래명세서를 버튼 클릭 한 번으로 생성하면, 인력과 시간을 크게 절약할 수 있습니다. 또한 문서 생성 기록을 시트에 다시 남기도록 확장하면, 언제 어떤 문서가 생성되었는지 추적 관리도 가능합니다.
결론
시트 데이터를 문서 템플릿에 병합하는 방식은 단순 반복 작업을 자동화하여 효율성을 높이고, 오류를 줄이며, 문서의 일관성을 유지하는 데 매우 효과적입니다. 거래명세서, 라벨, 계약서, 안내문 등 반복 문서 작성에 특히 유용하며, 구글 Apps Script와 문서 템플릿을 활용하면 누구나 손쉽게 구현할 수 있습니다. 앞으로 반복되는 문서 작성 업무에 시간을 낭비하지 말고, 자동화된 문서 생성 방식을 도입해 생산성을 높여 보시기 바랍니다.