[자동화 스크립트 6] 자동화 모니터링 및 로깅
🔗 지금 바로 사용해보세요!
클릭 한 번으로 바로 접속해서 복사하여 사용하실 수 있습니다
실행 로그 관리 시스템
function createAutomationLog() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// 로그 시트가 없으면 생성
try {
var logSheet = spreadsheet.getSheetByName("자동화로그");
} catch (e) {
var logSheet = spreadsheet.insertSheet("자동화로그");
// 로그 시트 헤더 설정
logSheet.getRange("A1:F1").setValues([[
"실행일시", "함수명", "상태", "실행시간(ms)", "처리건수", "오류메시지"
]]);
logSheet.getRange("A1:F1").setFontWeight("bold");
}
return logSheet;
}
function logAutomationExecution(functionName, status, executionTime, processedCount, errorMessage) {
var logSheet = createAutomationLog();
var newRow = logSheet.getLastRow() + 1;
logSheet.getRange(newRow, 1, 1, 6).setValues([[
new Date(),
functionName,
status,
executionTime || 0,
processedCount || 0,
errorMessage || ""
]]);
}
// 개선된 재고 모니터링 (로깅 포함)
function monitorInventoryWithLogging() {
var startTime = Date.now();
var processedCount = 0;
var errorMessage = "";
try {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("재고관리");
var data = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
var alertItems = [];
for (var i = 0; i < data.length; i++) {
var row = i + 2;
var productName = data[i][0];
var currentStock = data[i][1];
var safetyStock = data[i][2];
if (currentStock <= safetyStock) {
alertItems.push({
name: productName,
current: currentStock,
safety: safetyStock
});
}
processedCount++;
}
if (alertItems.length > 0) {
sendInventoryAlert(alertItems);
}
var executionTime = Date.now() - startTime;
logAutomationExecution("monitorInventory", "성공", executionTime, processedCount, "");
} catch (error) {
var executionTime = Date.now() - startTime;
errorMessage = error.toString();
logAutomationExecution("monitorInventory", "실패", executionTime, processedCount, errorMessage);
// 관리자에게 오류 알림
GmailApp.sendEmail(
"admin@company.com",
"자동화 오류 발생",
"함수: monitorInventory\n오류: " + errorMessage
);
}
}