본문 바로가기

마이크로 ERP

고객별 맞춤 견적 요약 리포트 자동 생성 및 정기 발송 시스템 만들기

비즈니스를 운영하다 보면 특정 고객과의 견적 거래가 반복적으로 이루어지게 됩니다. 이때, 월 단위로 견적 내용을 정리하여 고객에게 공유하면 신뢰도를 높일 수 있고, 반복 거래를 유도하는 데에도 긍정적인 영향을 미칠 수 있습니다. ERP 시스템에서는 고객별 견적 리포트를 자동으로 생성하고 발송하는 기능을 제공하지만, 1인 창업자나 소규모 운영자에게는 다소 부담스러울 수 있습니다. 구글 스프레드시트와 앱스 스크립트를 활용하면 고객별로 견적 내역을 자동으로 분류하고, 요약 리포트를 PDF로 생성하여 이메일로 정기 발송하는 구조를 구현할 수 있습니다. 이 글에서는 실제 고객별 견적 리포트를 월 단위로 자동 생성하고 발송하는 시스템을 구축하는 방법을 안내드립니다.

고객별 맞춤 견적 요약 리포트 자동 생성 및 정기 발송 시스템 만들기

 

견적 이력 시트 구성 확인

 

우선 전체 견적 이력은 다음과 같은 형식으로 구성되어 있어야 합니다.

생성일 고객명 이메일 상품명 수량 단가 총액
2025-04-01 김예진 yejin@example.com 머그컵 10 9000 90000
2025-04-08 김예진 yejin@example.com 텀블러 5 12000 60000
2025-04-10 이성훈 sunghoon@example.com 텀블러 20 11000 220000

 

이 시트의 이름은 예를 들어 “견적이력”으로 지정합니다.
이 데이터를 기준으로 고객별로 필터링하여 요약 보고서를 생성하게 됩니다.

고객별 리포트용 시트 구성

리포트용 시트를 하나 생성하고, 예시 이름은 “견적리포트템플릿”으로 설정합니다.
이 시트는 특정 고객의 한 달 치 견적 정보를 요약해 보여주는 형식입니다.

예시 구성:

항목
고객명 김예진
리포트 기간 2025년 04월
총 건수 2건
총 금액 150,000원
주요 품목 머그컵, 텀블러

아래에는 세부 견적 내역을 표로 정리합니다.

날짜 상품명 수량 단가 총액
2025-04-01 머그컵 10 9000 90000
2025-04-08 텀블러 5 12000 60000

이 시트는 데이터를 자동으로 불러오기보다는 스크립트로 매번 덮어쓰도록 구성하는 것이 효율적입니다.

고객별 데이터 필터링 및 리포트 생성 스크립트

아래 스크립트는 특정 고객의 한 달치 데이터를 불러와 리포트를 작성하고, PDF로 변환한 후 이메일로 발송하는 구조입니다.

function sendMonthlyEstimateReports() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dataSheet = ss.getSheetByName("견적이력");
  const reportSheet = ss.getSheetByName("견적리포트템플릿");
  const folder = DriveApp.getFolderById("폴더ID");

  const today = new Date();
  const thisMonth = Utilities.formatDate(today, "GMT+9", "yyyy-MM");
  const data = dataSheet.getDataRange().getValues();

  const customers = {}; // {이메일: {고객명, 견적 목록}}

  for (let i = 1; i < data.length; i++) {
    const [date, name, email, product, qty, unit, total] = data[i];
    const recordMonth = Utilities.formatDate(new Date(date), "GMT+9", "yyyy-MM");

    if (recordMonth === thisMonth) {
      if (!customers[email]) {
        customers[email] = {
          name,
          records: []
        };
      }
      customers[email].records.push([date, product, qty, unit, total]);
    }
  }

  for (let email in customers) {
    const customer = customers[email];
    const name = customer.name;
    const records = customer.records;

    reportSheet.getRange("B1").setValue(name);
    reportSheet.getRange("B2").setValue(thisMonth);
    reportSheet.getRange("B3").setValue(records.length);
    const totalAmount = records.reduce((sum, r) => sum + Number(r[4]), 0);
    reportSheet.getRange("B4").setValue(totalAmount.toLocaleString() + "원");

    const itemSet = new Set(records.map(r => r[1]));
    reportSheet.getRange("B5").setValue(Array.from(itemSet).join(", "));

    // 내역 테이블 작성
    reportSheet.getRange("A8:E").clearContent();
    reportSheet.getRange(8, 1, records.length, 5).setValues(records);

    // PDF 생성 및 이메일 전송
    const pdfName = name + "_견적리포트_" + thisMonth + ".pdf";
    const url = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?format=pdf" +
                "&exportFormat=pdf&gid=" + reportSheet.getSheetId() +
                "&size=A4&portrait=true&fitw=true&sheetnames=false&printtitle=false&pagenum=disable&gridlines=false";

    const options = {
      headers: {
        Authorization: "Bearer " + ScriptApp.getOAuthToken()
      }
    };

    const pdfBlob = UrlFetchApp.fetch(url, options).getBlob().setName(pdfName);
    folder.createFile(pdfBlob);

    MailApp.sendEmail({
      to: email,
      subject: "[견적 리포트] " + thisMonth + " 견적 요약 보고서",
      body: name + "님,\n이번 달 견적 내용을 요약한 리포트를 첨부드립니다.\n감사합니다.",
      attachments: [pdfBlob]
    });
  }
}

트리거 설정으로 자동 발송

스크립트를 매월 1일 오전 9시에 자동 실행되도록 트리거를 설정하면
전 고객 대상의 월간 견적 리포트 자동 발송 시스템이 완성됩니다.

실전 적용 예시

  • 반복 거래가 있는 고객들에게 정기적으로 견적 요약 리포트를 보내며 신뢰 관계 유지
  • 월말 견적을 기준으로 다음 주문이나 정산을 유도
  • 고객의 요청 없이도 먼저 자료를 제공함으로써 전문적 인상 강화
  • 재구매율 상승 및 단골 고객화에 기여

결론

고객별로 맞춤 견적 리포트를 자동 생성하고 정기 발송하는 시스템은 단순한 편의 기능을 넘어서, 고객과의 관계를 강화하고 비즈니스 신뢰도를 높이는 전략적 도구가 됩니다. ERP 없이도 구글 스프레드시트와 앱스 스크립트를 활용하면 누구나 이러한 기능을 직접 구현할 수 있으며, 반복적인 업무 시간을 크게 줄일 수 있습니다. 데이터 기반의 커뮤니케이션은 오늘날 경쟁력 있는 운영자에게 필수적인 역량입니다. 지금부터라도 고객 중심의 자동화 구조를 갖추어보시길 권장드립니다.