안전 결제자세히
- 패키지 범위 내 수정은 무료입니다.
- 납품 후 3일 이내에 응답하지 않으면 작업이 자동으로 승인됩니다.
결제 시 금액이 예치되며, 작업을 승인해야만 지급됩니다.

결과물 예시
매장 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 보고서 하나로 저장하는 스크립트.
고객과 모든 정보는 가상입니다.
서비스 소개
Gmail 필터는 새 메일에만, 그리고 단순한 조건으로만 작동합니다. 이 Google Apps Script는 받은편지함에 이미 있는 메일까지 정리합니다. 예를 들어 공급업체 도메인에서 온 메일에 모두 라벨 붙이기, 14일 지난 뉴스레터 보관하기, 영수증을 읽음으로 표시하고 회계 라벨 붙이기, 사흘이 지나도 답하지 않은 고객 메일에 별표 붙이기 같은 규칙입니다. 검색창에 입력하는 것과 같은 Gmail 검색어로 작동하므로 규칙을 읽고 바꾸기 쉽습니다. 스탠다드부터는 규칙이 직접 편집하는 Google 스프레드시트 탭에 있고, 로그에 처리 내용이 남습니다. 메일을 삭제하지 않습니다. 라벨 붙이기, 보관, 표시만 하며, 휴지통으로 옮기는 기능은 그런 규칙을 주신 경우에만 더합니다. 설치와 실행은 고객님의 Google 계정에서 직접 하십니다.
포함 사항
- 받으시는 결과물Apps Script 코드와 계정에 추가하고 접근을 허용하고 실행하는 방법을 보여 주는 README가 들어 있는 ZIP 압축 파일. 코드는 주문 페이지에서도 볼 수 있습니다.
- 지난 메일까지받은편지함에 이미 있는 메일에도 작동
- Gmail 검색 규칙from:, subject:, older_than: 등
- 라벨, 보관, 읽음, 별표규칙마다 고르는 동작
- 기본적으로 삭제 없음그런 규칙을 주신 경우에만 휴지통으로
- 읽기 쉬운 코드주석이 있어 나중에 규칙 추가가 쉬움
진행 방식
- 1수칙규칙을 평소 말로 적어 주세요
- 2코드스크립트와 설치 안내서를 작성합니다
- 3시험 실행먼저 규칙 하나로 실행해 라벨을 확인하세요
- 4수정패키지 범위 안에서 수정을 요청하고 오류 메시지가 있으면 보내 주세요
준비해 주실 내용
평소 말로 적은 규칙: 어떤 메일인지(보낸 사람이나 도메인, 제목 속 단어, 기간, 첨부 파일 여부), 어떻게 할지(라벨, 보관, 읽음 표시, 별표), 쓰시는 라벨 이름. 받은편지함의 대략적인 메일 양과 새 메일을 얼마나 자주 정리할지. 무료 Gmail인지 Google Workspace인지. 비밀번호나 개인 메일 스크린샷은 보내지 마세요. shop.example 같은 예시 발신자면 충분합니다.
다음 내용을 여쭤봅니다:
- 무엇을 정리해야 하나요?
- 종류별로 어떻게 할까요?
- 지난 메일도 할까요, 새 메일만 할까요?
- 절대 하면 안 되는 일
패키지 비교
안전 결제
주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.
- 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
- 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
- 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
- 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
- 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
- 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
질문과 답변
그냥 Gmail 필터를 쓰면 안 되나요?
필터는 메일이 도착할 때만 작동하며, 며칠 기다리거나 답장했는지 확인할 수 없습니다. 스크립트는 지난 메일을 포함해 조건에 맞는 모든 메일에 실행되고, 기간 같은 조건도 쓸 수 있습니다.
제 이메일을 삭제하나요?
아니요. 특정 메일을 휴지통으로 옮기라는 규칙을 주시지 않는 한 삭제하지 않으며, 그 경우에도 Gmail이 휴지통에 30일간 보관합니다. 기본적으로 라벨 붙이기, 보관, 표시만 합니다.
이메일이 100,000통인 메일함도 정리할 수 있나요?
네, 나눠서 합니다. 스크립트 실행 한 번은 약 6분으로 제한되므로 실행할 때마다 일정량을 처리하고 다음 실행에서 이어 갑니다. 첫 정리에는 여러 번 실행해야 할 수 있습니다.
제 메일에 접근하시나요?
아니요. 스크립트는 고객님이 직접 계정에 추가하고 접근을 허용하십니다. 저희는 메일을 보지도, 로그인하지도 않습니다.
답을 찾지 못하셨나요?