발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 067

재고 부족 자동 감지 → 발주 요청 생성

  • ▸Google Sheets 재고 데이터를 주기적으로 스캔
  • ▸임계값 이하 품목 자동 감지 및 발주 목록 생성
  • ▸발주 요청 이메일을 공급업체에 자동 발송

✅사전 준비

  • □Google Sheets 재고 관리 시트 생성 (컬럼: 품목코드, 품목명, 현재고, 최소재고, 발주단위, 공급업체이메일)
  • □Gmail 발송 계정 OAuth2 설정
  • □발주 이메일 템플릿 작성
  • □Cron 주기 설정 (매일 오전 8시 권장)

재고 부족 필터링

// Google Sheets에서 읽은 후 Code 노드
const items = $input.all();

return items.filter(item => {
  const current = parseInt(item.json['현재고']);
  const minimum = parseInt(item.json['최소재고']);
  return current <= minimum;
}).map(item => ({
  json: {
    ...item.json,
    orderQty: parseInt(item.json['발주단위']),
    urgency: parseInt(item.json['현재고']) === 0 ? '긴급' : '일반'
  }
}));

발주 요청 이메일 본문

제목: [발주 요청] {{ $now.toFormat('yyyy-MM-dd') }} {{ $json.urgency }}

안녕하세요,

아래 품목의 재고가 부족하여 발주를 요청드립니다.

품목코드: {{ $json['품목코드'] }}
품목명: {{ $json['품목명'] }}
현재고: {{ $json['현재고'] }}개
발주수량: {{ $json.orderQty }}개

빠른 처리 부탁드립니다.

감사합니다.
💡 TIP공급업체가 여러 곳인 경우, Sheets에 '공급업체이메일' 컬럼을 추가하고 `GroupBy` 노드로 업체별로 묶어 한 번에 발송하면 더 효율적입니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe067",
  "title": "급여 이체 전 잔액 자동 확인 알림",
  "chapter": 6,
  "category": "재무 & 정산 자동화",
  "difficulty": "⭐⭐",
  "estimatedTime": "40분",
  "usedApps": [
    "오픈뱅킹 API",
    "Google Sheets",
    "Slack"
  ],
  "description": "급여일 2일 전 오픈뱅킹 API로 법인 계좌 잔액을 자동 조회해, 이번 달 급여 총액과 비교합니다. 잔액이 부족하면 대표와 경리팀에 즉시 긴급 Slack 알림을 발송해 급여 이체 실수를 사전에 방지합니다.",
  "nodes": [
    {
      "id": "node1",
      "type": "n8n-nodes-base.scheduleTrigger",
      "name": "급여일 2일 전 실행",
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 9 23 * *"
            }
          ]
        }
      }
    },
    {
      "id": "node2",
      "type": "n8n-nodes-base.httpRequest",
      "name": "오픈뱅킹 계좌 잔액 조회",
      "parameters": {
        "method": "GET",
        "url": "https://openapi.openbanking.or.kr/v2.0/account/balance/fin_num",
        "headers": {
          "Authorization": "Bearer {{$env.OPENBANKING_ACCESS_TOKEN}}",
          "Content-Type": "application/json"
        },
        "queryParameters": {
          "bank_tran_id": "={{$env.BANK_TRAN_ID}}",
          "fintech_use_num": "={{$env.FINTECH_USE_NUM}}"
        }
      }
    },
    {
      "id": "node3",
      "type": "n8n-nodes-base.googleSheets",
      "name": "이번 달 급여 총액 조회",
      "parameters": {
        "operation": "getAll",
        "spreadsheetId": "={{$env.PAYROLL_SHEET_ID}}",
        "sheetName": "급여현황",
        "filters": {
          "conditions": [
            {
              "column": "연월",
              "condition": "equals",
              "value": "={{$now.format('YYYY-MM')}}"
            }
          ]
        }
      }
    },
    {
      "id": "node4",
      "type": "n8n-nodes-base.if",
      "name": "잔액 부족 여부 확인",
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$node['오픈뱅킹 계좌 잔액 조회'].json['balance_amt']}}",
              "operation": "smaller",
              "value2": "={{$node['이번 달 급여 총액 조회'].json[0]['급여총액']}}"
            }
          ]
        }
      }
    },
    {
      "id": "node5",
      "type": "n8n-nodes-base.slack",
      "name": "잔액 부족 긴급 알림",
      "parameters": {
        "channel": "={{$env.FINANCE_SLACK_CHANNEL}}",
        "text": "🚨 급여 이체 잔액 부족 경고!\n\n현재 법인 계좌 잔액: ₩{{$node['오픈뱅킹 계좌 잔액 조회'].json['balance_amt'].toLocaleString()}}\n이번 달 급여 총액: ₩{{$node['이번 달 급여 총액 조회'].json[0]['급여총액'].toLocaleString()}}\n\n⚠️ 급여일까지 잔액 확보가 필요합니다!"
      }
    }
  ],
  "envVariables": {
    "OPENBANKING_ACCESS_TOKEN": "오픈뱅킹 API Access Token",
    "BANK_TRAN_ID": "오픈뱅킹 거래 고유 번호",
    "FINTECH_USE_NUM": "핀테크 이용 번호",
    "PAYROLL_SHEET_ID": "Google Sheets 급여 현황 시트 ID",
    "FINANCE_SLACK_CHANNEL": "경리·대표 Slack 채널 ID"
  },
  "tips": [
    "오픈뱅킹 API 발급 및 계좌 연동 방법은 부록 B를 참고하세요.",
    "급여일이 매월 25일이라면 cron 표현식을 '0 9 23 * *'으로 설정하면 23일 오전 9시에 실행됩니다.",
    "잔액이 충분한 경우에도 Slack에 '급여 이체 잔액 확인 완료' 메시지를 보내면 안심할 수 있어요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe067"
}
← 이전 레시피☰ 목차다음 레시피 →