자동화 흐름
일일 환율 변동 알림 자동화
매일 오전, 한국수출입은행 환율 API에서 주요 통화(USD, EUR, JPY) 환율을 조회하고 전일 대비 변동폭을 계산하여 Slack 채널에 포맷팅된 알림 메시지를 발송하는 레시피입니다.
---
사전 준비
| 항목 | 설명 | |------|------| | 한국수출입은행 API 인증키 | 수출입은행 Open API에서 인증키 발급 | | Slack Webhook URL | Slack 워크스페이스에서 Incoming Webhook 앱 추가 후 URL 발급 | | Google Sheets (선택) | 환율 히스토리 저장용 스프레드시트 | | Make 계정 | 시나리오 구성 및 스케줄링 |
---
Step 1: 한국수출입은행 환율 API 호출
HTTP 모듈로 당일 환율 데이터를 요청합니다.
GET https://www.koreaexim.go.kr/site/program/financial/exchangeJSON
주요 파라미터:
| 파라미터 | 값 | 설명 |
|----------|----|------|
| authkey | {{EXIM_API_KEY}} | 수출입은행 인증키 |
| searchdate | 20260416 | 조회일자 (YYYYMMDD) |
| data | AP01 | 환율 데이터 구분 (AP01=환율) |
Tip: searchdate는 Make 날짜 함수로 자동 설정합니다: {{formatDate(now; "YYYYMMDD")}}. 주말/공휴일에는 데이터가 없으므로, 응답이 빈 배열이면 직전 영업일 데이터를 사용하는 fallback 로직을 추가하세요.
---
Step 2: 응답 데이터 파싱
API 응답은 JSON 배열입니다.
[
{
"result": 1,
"cur_unit": "USD",
"ttb": "1,430.52",
"tts": "1,459.47",
"deal_bas_r": "1,445.00",
"bkpr": "1,445",
"cur_nm": "미 달러"
},
{
"cur_unit": "EUR",
"deal_bas_r": "1,574.32",
"cur_nm": "유로"
},
{
"cur_unit": "JPY(100)",
"deal_bas_r": "968.45",
"cur_nm": "일본 엔"
}
]
주요 필드 설명:
| 필드 | 설명 |
|------|------|
| cur_unit | 통화코드 (USD, EUR, JPY(100) 등) |
| deal_bas_r | 매매기준율 |
| ttb | 전신환(송금) 받을 때 |
| tts | 전신환(송금) 보낼 때 |
| cur_nm | 통화명 |
Iterator 모듈로 배열을 순회하며 관심 통화만 필터링합니다:
{{if(contains(["USD", "EUR", "JPY(100)"]; item.cur_unit); "keep"; "skip")}}
---
Step 3: 전일 대비 변동 계산
전일 환율과 비교하여 변동폭과 변동률을 계산합니다.
방법 A: Google Sheets 히스토리 활용 1. 전일 환율을 Google Sheets에서 조회 2. 당일 환율과 비교 계산
방법 B: 전일 API 재호출
1. searchdate를 전일 날짜로 설정하여 한 번 더 호출
2. 메모리 내에서 비교
변동폭 = 당일 매매기준율 - 전일 매매기준율
변동률(%) = (변동폭 / 전일 매매기준율) x 100
Make 수식:
변동폭: {{parseNumber(replace(today.deal_bas_r; ","; "")) - parseNumber(replace(yesterday.deal_bas_r; ","; ""))}}
변동률: {{round((diff / parseNumber(replace(yesterday.deal_bas_r; ","; ""))) * 100; 2)}}
변동 방향 지시자:
| 조건 | 표시 | |------|------| | 상승 (변동폭 > 0) | ▲ (빨강) | | 하락 (변동폭 < 0) | ▼ (파랑) | | 보합 (변동폭 = 0) | - (회색) |
---
Step 4: Slack 포맷팅 메시지 구성
Slack Incoming Webhook으로 보기 좋은 메시지를 발송합니다.
POST {{SLACK_WEBHOOK_URL}}
Content-Type: application/json
Payload:
{
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "일일 환율 리포트 (2026-04-16)"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "USD (미 달러)\n매매기준: 1,445.00\n전일대비: +5.20 ▲ (+0.36%)"
},
{
"type": "mrkdwn",
"text": "EUR (유로)\n매매기준: 1,574.32\n전일대비: -3.15 ▼ (-0.20%)"
}
]
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "JPY (100엔)\n매매기준: 968.45\n전일대비: +1.80 ▲ (+0.19%)"
},
{
"type": "mrkdwn",
"text": "요약\n최대변동: USD (+0.36%)\n원달러 추세: 3일 연속 상승"
}
]
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "기준일: 2026-04-16 | 출처: 한국수출입은행"
}
]
}
]
}
Tip: Slack Block Kit Builder(https://app.slack.com/block-kit-builder)에서 메시지 레이아웃을 미리 테스트해 볼 수 있습니다.
---
Step 5: Google Sheets 히스토리 저장 (선택)
일별 환율을 Google Sheets에 누적 저장하면 장기 추세 분석이 가능합니다.
| 날짜 | USD | EUR | JPY(100) | USD변동 | EUR변동 | JPY변동 | |------|-----|-----|----------|---------|---------|---------| | 2026-04-15 | 1,439.80 | 1,577.47 | 966.65 | -2.10 | +1.23 | -0.55 | | 2026-04-16 | 1,445.00 | 1,574.32 | 968.45 | +5.20 | -3.15 | +1.80 |
---
Step 6: Make 스케줄 설정
| 설정 항목 | 값 | |----------|-----| | 실행 주기 | 매일 (월-금) | | 실행 시각 | 오전 11:00 KST | | 타임존 | Asia/Seoul |
Tip: 수출입은행 환율 데이터는 보통 오전 11시 이후에 업데이트됩니다. 오전 9시에 호출하면 전일 데이터가 반환될 수 있으니, 11시 이후로 설정하는 것을 권장합니다.
---
예상 결과
- 매일 오전 Slack 채널에 주요 3개 통화 환율 리포트 수신
- 전일 대비 변동폭과 방향 지시자로 즉각적 트렌드 파악
- Block Kit 포맷으로 가독성 높은 메시지 확인
- Google Sheets 히스토리로 장기 추세 분석 가능
트러블슈팅
| 증상 | 원인 | 해결 방법 |
|------|------|-----------|
| 빈 배열 응답 [] | 주말/공휴일 데이터 없음 | 응답 길이 체크 후 직전 영업일로 재조회하는 fallback 로직 추가 |
| result: 4 반환 | 인증키 오류 | 수출입은행에서 인증키 재발급 또는 활성화 확인 |
| 쉼표 포함 숫자 오류 | deal_bas_r에 쉼표 포함 | replace(value; ","; "") 후 parseNumber() 적용 |
| Slack 발송 실패 (404) | Webhook URL 비활성화 | Slack 앱 설정에서 Webhook URL 재생성 |
| 변동률 계산 NaN | 전일 데이터 미존재 | 전일 데이터 null 체크 후 조건부 분기 처리 |
Make 블루프린트 다운로드
JSON 파일을 Make.com에 임포트하면 시나리오가 자동 생성됩니다
댓글 · 질문 (0)
로그인 후 댓글을 작성할 수 있습니다.