안전 결제자세히
- 패키지 범위 내 수정은 무료입니다.
- 납품 후 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 보고서 하나로 저장하는 스크립트.
고객과 모든 정보는 가상입니다.
서비스 소개
쇼핑몰 플랫폼의 주문, 프로젝트 관리 서비스의 작업, 예약 시스템의 내역. 서비스에 공개 API가 있다면 파일을 일일이 내보내지 않아도 데이터를 Google 스프레드시트로 가져올 수 있습니다. 이 Google Apps Script는 고객님의 키로 API에 요청을 보내고, 필요한 필드를 골라 페이지마다 행으로 씁니다. 스탠다드부터는 키를 코드가 아닌 고객님이 채우는 스크립트 속성에 두고, 오류는 Log 탭에 남깁니다. 프리미엄에서는 새로 생기거나 바뀐 행만 추가하고, 트리거로 매시간이나 매일 실행하는 방법을 안내합니다. API 문서 링크와 원하는 필드를 보내 주세요. 한 번 실행은 약 6분으로 제한되므로 아주 큰 가져오기는 나눠서 진행됩니다.
포함 사항
- 받으시는 결과물Apps Script 코드와 스프레드시트에 추가하고 키를 넣고 실행하는 방법을 보여 주는 README가 들어 있는 ZIP 압축 파일. 코드는 주문 페이지에서도 볼 수 있습니다.
- 문서 기준API 자체 문서에 따라 작성
- 고르는 필드필요한 열만, 원하는 순서로
- 모든 페이지여러 페이지로 오는 결과도 끝까지 읽음
- 코드 밖에 두는 키스크립트 속성에 직접 넣음
- 읽기 쉬운 코드주석이 있어 나중에 필드 추가가 쉬움
진행 방식
- 1작업API 문서와 필요한 필드를 보내 주세요
- 2코드문서에 따라 스크립트와 설치 안내서를 작성합니다
- 3시험 실행스프레드시트 사본에 키를 넣고 실행해 보세요
- 4수정패키지 범위 안에서 수정을 요청하고 오류 메시지가 있으면 보내 주세요
준비해 주실 내용
서비스와 API 문서 링크, 필요한 요청(예: 최근 30일 주문), 열이 될 필드. API 응답 예시가 큰 도움이 됩니다. 문서에서 복사하거나 테스트 호출에서 개인 값을 지운 것을 주세요. 데이터를 얼마나 자주 새로 고칠지, 새 행을 추가할지 시트를 다시 쓸지. 실제 API 키는 절대 보내지 마세요. 넣는 위치는 README에 나와 있습니다.
다음 내용을 여쭤봅니다:
- 어떤 서비스이고 API 문서는 어디에 있나요?
- 어떤 데이터가 필요하신가요?
- 얼마나 자주 새로 고칠까요?
패키지 비교
안전 결제
주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.
- 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
- 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
- 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
- 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
- 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
- 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
질문과 답변
어떤 서비스든 되나요?
공개 API가 있고 고객님이 직접 키나 토큰을 받을 수 있는 서비스라면 됩니다. API가 없거나 매번 브라우저 페이지에서 로그인해야 하는 서비스는 대상이 아닙니다.
얼마나 자주 업데이트할 수 있나요?
시간 트리거로 몇 분마다도 가능하지만, 대부분의 데이터는 매시간이나 매일이면 충분합니다. 서비스 자체의 요청 한도와 Google의 스크립트 한도가 적용됩니다.
서비스로 데이터를 다시 보낼 수 있나요?
이 서비스는 데이터를 스프레드시트로 읽어 옵니다. API가 허용한다면 다시 쓰는 것도 가능하니 요청 사항에 적어 주시면 패키지에 맞는지 말씀드리겠습니다.
키를 대신 받아 주시나요?
아니요. 키는 고객님이 서비스 계정에서 직접 만들어 스크립트 속성에 넣으십니다. 저희는 고객님의 계정에 절대 로그인하지 않습니다.
답을 찾지 못하셨나요?