스프레드시트 메일 머지개발·커스터마이징

Google 스프레드시트에 있는 사람들에게 고객님의 Gmail로 맞춤 이메일을 보내는 Google Apps Script

보통 15분 안에 완료수정 포함품질 검수
패키지
안전 결제자세히
  • 패키지 범위 내 수정은 무료입니다.
  • 납품 후 3일 이내에 응답하지 않으면 작업이 자동으로 승인됩니다.

결제 시 금액이 예치되며, 작업을 승인해야만 지급됩니다.

Google 스프레드시트에 있는 사람들에게 고객님의 Gmail로 맞춤 이메일을 보내는 Google Apps Script

결과물 예시

스탠다드 패키지 예시

매장 9곳의 월별 매출 파일을 Excel 보고서 하나로 합치기

실행 방법

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  폴더: sales/2026-10, 파일 9개 발견
2026-11-02 09:14:03 INFO  shop-01.csv: 1,284행
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967행
2026-11-02 09:14:04 WARN  shop-07.csv: 가격 없는 3행 건너뜀 (88, 412, 913번 줄)
2026-11-02 09:14:05 INFO  완료: 10,412행 -> report-2026-10.xlsx ("매출", "합계" 시트)

코드가 아닌 설정으로

매장별 열 이름은 settings.ini에 있어서, 매장이 새로 생기거나 열 이름이 바뀌면 그곳에 한 줄만 고치면 됩니다.

[columns]
date = 날짜, 판매일, 일자
product = 상품, 품목, 상품명
quantity = 수량, 개수, 판매 수량
price = 가격, 단가

코드 일부

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """매장 파일 하나를 읽고 열 이름을 보고서 기준으로 바꿉니다."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: '{name}'에 해당하는 열이 없습니다 (찾은 이름: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

파일: merge_sales.py(310줄), settings.ini, requirements.txt, 그리고 Python 설치, 스크립트 실행, 로그 메시지별 의미를 설명한 README가 들어 있는 ZIP 압축 파일. 고객이 자신의 컴퓨터에서 직접 실행합니다.

고객: 문구점 9곳을 운영하는 작은 체인. 매장마다 한 달 매출을 CSV나 Excel 파일로 보내는데, 열 이름이 조금씩 다릅니다. 과제: 폴더 안의 모든 파일을 읽고 열을 하나의 형식으로 맞춘 뒤, 전체 매출과 매장별 합계 시트가 담긴 Excel 보고서 하나로 저장하는 스크립트.

고객과 모든 정보는 가상입니다.

서비스 소개

고객, 학생, 파트너 80명에게 이름, 날짜, 금액만 다른 같은 이메일을 써야 한다면 복사·붙여넣기에 몇 시간이 걸립니다. 이 Google Apps Script는 Google 스프레드시트 안에 들어가 행마다 고객님의 Gmail로 맞춤 이메일을 보냅니다. {{Name}}, {{Date}} 등 어떤 열이든 템플릿에 채워 넣고, 행에 Sent와 시간을 기록하며, 이미 보낸 행은 건너뛰므로 안심하고 다시 실행할 수 있습니다. 고객님의 이메일을 기다리는 사람들의 목록용이며, 구매한 목록이나 콜드 대량 발송용이 아닙니다. Google은 스크립트로 하루에 보낼 수 있는 이메일 수를 제한하며, 무료 Gmail은 Google Workspace보다 적습니다. 스크립트는 한도에서 멈췄다가 나중에 이어서 보냅니다. 설치와 실행은 고객님의 계정에서 직접 하십니다.

포함 사항

  • 받으시는 결과물Apps Script 코드와 스프레드시트에 붙여 넣고 접근을 허용하고 보내는 방법을 보여 주는 README가 들어 있는 ZIP 압축 파일. 코드는 주문 페이지에서도 볼 수 있습니다.
  • 맞춤 필드제목과 본문에 스프레드시트의 어떤 열이든
  • 고객님의 Gmail에서답장은 평소 이메일처럼 고객님께
  • 발송 표시행마다 보낸 시간이 표시되어 중복 발송 없음
  • Google 한도 안에서하루 한도에서 멈췄다가 나중에 이어서
  • 읽기 쉬운 코드주석이 있어 나중에 템플릿 변경이 쉬움

진행 방식

  1. 1
    작업스프레드시트의 열과 보낼 이메일을 보내 주세요
  2. 2
    코드스크립트와 설치 안내서를 작성합니다
  3. 3
    시험 실행스프레드시트 사본에 붙여 넣고 먼저 내 주소로 보내 보세요
  4. 4
    수정패키지 범위 안에서 수정을 요청하고 오류 메시지가 있으면 보내 주세요

준비해 주실 내용

스프레드시트의 열 이름과 임의의 이름과 주소로 된 두세 행, 이메일 제목과 본문(열이 들어갈 자리 표시), 일반 텍스트인지 Gmail 임시 보관함의 서식 있는 메일인지. 목록에 있는 사람이 누구이고 어떻게 목록에 오르게 되었는지(고객, 회원, 학생), 대략적인 행 수, 무료 Gmail인지 Google Workspace인지. 첨부 파일이 있다면 그 파일과 Drive 위치.

다음 내용을 여쭤봅니다:

  • 누구에게 보내시나요?
  • 스프레드시트에 어떤 열이 있나요?
  • 이메일에 어떤 내용을 쓸까요?
  • 무료 Gmail인가요, Google Workspace인가요?

패키지 비교

패키지베이직간단한 메일 머지₩23,100스탠다드설정 시트가 있는 메일 머지₩47,600프리미엄메일 머지 도구₩96,700
작업 기간1일2일3일
수정 횟수123
코드최대 150줄최대 400줄최대 1,000줄
코드 파일 수1최대 3개최대 8개
설정 파일없음있음있음
알기 쉬운 오류 메시지와 로그없음있음있음
실행 옵션과 예약 실행 안내없음없음있음
설치 및 실행 안내서(README)있음있음있음
언어Google Apps ScriptGoogle Apps ScriptGoogle Apps Script
주문하기 베이직주문하기 스탠다드주문하기 프리미엄

안전 결제

주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.

  • 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
  • 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
  • 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
  • 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
  • 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
  • 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
이용 방법 →

질문과 답변

하루에 몇 통까지 보낼 수 있나요?

Google이 고객님의 계정에 허용하는 스크립트 발송 한도만큼이며, 무료 Gmail은 Google Workspace보다 적습니다. 현재 수치는 Google의 Apps Script 할당량 페이지에 나와 있습니다. 스크립트는 한도에서 멈추고, 다음 실행 때 보내지 않은 첫 행부터 이어서 보냅니다.

구매한 목록으로 보내도 되나요?

아니요. 고객이나 회원처럼 고객님을 알고 이메일을 기다리는 사람들을 위한 스크립트입니다. 구매한 목록과 콜드 대량 발송은 Google의 규칙에 어긋나며 계정이 차단될 수 있습니다.

수신 거부 링크를 넣어 주나요?

이런 이메일을 원하지 않으면 답장해 달라는 문구를 넣고, 수신 거부로 표시한 행은 건너뛰게 할 수 있습니다. 클릭 한 번으로 수신 거부되는 뉴스레터라면 메일링 서비스가 더 알맞습니다.

제 Gmail에 접근하시나요?

아니요. 코드는 고객님이 직접 스프레드시트에 붙여 넣으며, 이메일 발송 허용 여부는 Google이 저희가 아닌 고객님께 묻습니다. 저희는 고객님의 계정에 절대 로그인하지 않습니다.

답을 찾지 못하셨나요?

패키지