🔗 지금 바로 사용해보세요!
📥 자동화와 매크로 스프레드시트(주간보고서 시트) 바로가기
클릭 한 번으로 바로 접속해서 복사하여 사용하실 수 있습니다
Apps Script 환경 진입
1. 확장 프로그램 → Apps Script 클릭
2. 새 프로젝트 생성: "자동화 마스터" 이름 설정
3. 코드 편집기 환경 확인
- 파일에서 스크립트 선택
- 이름을 '주간 보고서 자동 생성.gs'라고 저장
- 아래 3가지 함수를 입력

기본 데이터 수집 함수
function collectWeeklyData() {
// 활성 스프레드시트의 주간보고서 시트 가져오기
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("주간보고서");
// 데이터 범위 가져오기 (A2:F8, 헤더 제외)
var data = sheet.getRange("A2:F8").getValues();
var totalSales = 0;
var totalOrders = 0;
var totalCustomers = 0;
// 일별 데이터 합계 계산
for (var i = 0; i < data.length; i++) {
totalSales += data[i][1]; // B열: 매출액
totalOrders += data[i][2]; // C열: 주문수
totalCustomers += data[i][3]; // D열: 고객수
}
// 결과 객체 반환
return {
sales: totalSales,
orders: totalOrders,
customers: totalCustomers,
avgOrder: Math.round(totalSales / totalOrders),
period: "2025년 35주차 (8/25-8/31)"
};
}
보고서 자동 생성 함수
function generateWeeklyReport() {
// 주간 데이터 수집
var weeklyData = collectWeeklyData();
// 새 시트 생성 (보고서용)
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var reportSheet;
// 기존 보고서 시트가 있으면 삭제 후 새로 생성
try {
reportSheet = spreadsheet.getSheetByName("자동생성보고서");
spreadsheet.deleteSheet(reportSheet);
} catch (e) {
// 시트가 없으면 무시
}
// 새 보고서 시트 생성
reportSheet = spreadsheet.insertSheet("자동생성보고서");
// 보고서 헤더 작성
reportSheet.getRange("A1").setValue("주간 매출 보고서");
reportSheet.getRange("A1").setFontSize(16).setFontWeight("bold");
// 보고서 내용 자동 입력
reportSheet.getRange("A3").setValue("보고 기간:");
reportSheet.getRange("B3").setValue(weeklyData.period);
reportSheet.getRange("A4").setValue("총 매출액:");
reportSheet.getRange("B4").setValue(weeklyData.sales.toLocaleString() + " 원");
reportSheet.getRange("A5").setValue("총 주문 수:");
reportSheet.getRange("B5").setValue(weeklyData.orders + " 건");
reportSheet.getRange("A6").setValue("총 고객 수:");
reportSheet.getRange("B6").setValue(weeklyData.customers + " 명");
reportSheet.getRange("A7").setValue("평균 주문액:");
reportSheet.getRange("B7").setValue(weeklyData.avgOrder.toLocaleString() + " 원");
reportSheet.getRange("A9").setValue("보고서 생성일시:");
reportSheet.getRange("B9").setValue(new Date());
// 서식 적용
reportSheet.getRange("A3:A7").setFontWeight("bold");
reportSheet.autoResizeColumns(1, 2);
Logger.log("주간 보고서가 성공적으로 생성되었습니다.");
}
이메일 자동 발송 함수
function sendWeeklyReport() {
// 보고서 생성
generateWeeklyReport();
// 수신자 정보 설정
var recipient = "manager@####.com"; // 실제 이메일 주소로 변경
var subject = "주간 매출 보고서 - " + new Date().toLocaleDateString();
// 이메일 본문 작성
var weeklyData = collectWeeklyData();
var body = "안녕하세요.\n\n";
body += weeklyData.period + " 주간 매출 보고서를 전송드립니다.\n\n";
body += "📊 주요 지표:\n";
body += "• 총 매출액: " + weeklyData.sales.toLocaleString() + "원\n";
body += "• 총 주문 수: " + weeklyData.orders + "건\n";
body += "• 총 고객 수: " + weeklyData.customers + "명\n";
body += "• 평균 주문액: " + weeklyData.avgOrder.toLocaleString() + "원\n\n";
body += "상세한 보고서는 첨부된 스프레드시트에서 확인하실 수 있습니다.\n\n";
body += "감사합니다.\n자동화 시스템";
// 이메일 발송
try {
GmailApp.sendEmail(recipient, subject, body);
Logger.log("이메일이 성공적으로 발송되었습니다: " + recipient);
} catch (error) {
Logger.log("이메일 발송 실패: " + error.toString());
}
}
함수 실행 테스트:
1. collectWeeklyData, generateWeeklyReport, sendWeeklyReport 함수 선택 후 실행 버튼
2. 권한 승인 진행
3. 결과 확인
- 기본 데이터를 수집 실행이 시작되고 완료됨을 로그를 통해 확인가능
- 새로 생성된 "자동생성보고서" 시트 확인

- 수신자 정보 설정
var recipient = "manger@####.com"; // 실제 이메일 주소로 변경시, 해당 이메일로 보고서가 발송됨.

'스프레드시트 활용' 카테고리의 다른 글
| [자동화 스크립트 3] 고객문의 자동처리 (2) | 2025.09.02 |
|---|---|
| [자동화 스크립트 2] 실시간 재고관리 자동화 (1) | 2025.09.02 |
| [매크로] 주간 매출 합계 자동계산 (0) | 2025.09.02 |
| [오류해결방안] Apps Script Error 400 해결방법 (2) | 2025.09.02 |
| 차트와 그래프 실습 완벽 가이드 (3) | 2025.08.31 |