쿠폰 만료 리마인더 에이전트 구축
단순 반복적인, 누락되기 쉬운 사항을 자동화 툴을 Gemini를 통해 Apps Script로 해결한 사례입니다.
저희 팀의 "Item List_ALL" 시트에는 대략 400 sku의 IP 굿즈 상품 데이터가 축적되어 있습니다.
그중 일부 상품에는 인게임 재화 쿠폰이 포함되어 있는데, 해당 쿠폰들의 만료일들이 제각각입니다.
이를 사람이 수동으로 관리하다 보니 번번이 갱신 기한을 놓치는 계륵 같은 요소인데요.
이를 방지하기 위해 리마인드 메일 자동화툴을 Apps Script로 10여 분 만에 만들었습니다.
Google Apps Script를 활용하여 '쿠폰 만료 리마인드 에이전트'를 구축
Daily Scan: 매일 정해진 시간(오전 8시)에 시트 전체 데이터를 스캔하는 트리거 설정
Date Logic: 오늘 날짜를 기준으로 '만료 7일 전'인 상품만 필터링
Automatic Dispatch: Gmail API(GmailApp)를 연동 -> 팀 메일로 상품명/만료일 리마인드 메일 발송
일일이 손수 확인하는 과정에서 발생할 수 있는 누락 가능성 최소화
비연속적인 단순 작업을 자동화 → 만료 1주 전 리마인드로 행정처리 시간 확보
function sendCouponExpiryReminders() {
// 1. 수신인 목록 (여기에 팀원분들의 이메일을 쉼표로 구분해서 추가하세요)
const recipientList = [
"
user1@com2us.com
",
"
user2@com2us.com
",
"
user3@com2us.com
"
].join(","); // 여러 이메일을 하나로 합칩니다.
const sheetName = "item List_ALL";
const itemNameColIndex = 6; // G열: 제품명(KR)
const expirationColIndex = 32; // AG열: 쿠폰 만료일
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
if (!sheet) {
Logger.log("❌ 시트를 찾을 수 없습니다.");
return;
}
const data = sheet.getDataRange().getValues();
const today = new Date();
today.setHours(0, 0, 0, 0);
const targetDate = new Date();
targetDate.setDate(today.getDate() + 7);
targetDate.setHours(0, 0, 0, 0);
let itemsToRemind = [];
for (let i = 2; i < data.length; i++) {
const itemName = data[i][itemNameColIndex];
let rawDate = data[i][expirationColIndex];
if (!itemName || !rawDate) continue; let expiryDate; if (rawDate instanceof Date) { expiryDate = rawDate; } else { let dateString = rawDate.toString().replace(/\\./g, '-'); if (dateString.startsWith('26-')) dateString = '20' + dateString; expiryDate = new Date(dateString); } if (expiryDate && !isNaN(expiryDate.getTime())) { expiryDate.setHours(0, 0, 0, 0); if (expiryDate.getTime() === targetDate.getTime()) { itemsToRemind.push("- " + itemName + " (만료일: " + Utilities.formatDate(expiryDate, "GMT+9", "yyyy-MM-dd") + ")"); } }
}
if (itemsToRemind.length > 0) {
const subject = "[리마인드] 쿠폰 만료 1주일 전 상품 알림";
const body = "안녕하세요,\n\n'item List_ALL' 시트 확인 결과, 1주일 뒤 쿠폰이 만료되는 상품들이 있습니다.\n\n" +
itemsToRemind.join("\n") +
"\n\n만료 전 인게임 공지나 관련 조치를 부탁드립니다.";
// GmailApp을 사용하여 실제 사용자가 보내는 것처럼 발송 GmailApp.sendEmail(recipientList, subject, body, { name: "컴투스스토어 MD 자동 알림" }); Logger.log("� 팀원들에게 메일 발송 완료: " + recipientList);
} else {
Logger.log("ℹ️ 오늘(7일 전) 기준 알림 대상이 없습니다.");
}
}