인공지능과 오토메이션/Automation

Make.com으로 공공데이터포털 분양(청약) 정보 자동 수집하기

토니치코 2026. 5. 27. 19:51

 

AI활용 마케팅 기획 업무 생산성 향상 6일차 중 발췌

Make활용 공공데이터포털 분양 정보 자동 수집하기

청약Home API + Make.com 시나리오 한 장으로, 매주 새로 올라오는 전국 분양공고 100건을 구글 시트에 자동 적재. HTTP 모듈 · Iterator · Google Sheets addRow까지 모든 파라미터를 알기쉽게 풀어본다.
주관 한국부동산마케팅협회  일자 2026년 5월 27일 (6일차)
본 글은 시너지랩스 박진주 대표의 "AI활용 마케팅 기획 업무 생산성 향상" 6일차 강의<MCP·노코드 자동화 완전 정복> 의 내용 중 일부를 정리한 것임 

01. API란 무엇인가 ?— 비유로 한 번에 잡기

API(Application Programming Interface)는 "어떤 서비스가 자기 데이터를 외부에 넘겨주기 위해 마련해 둔 표준 창구"다. 가장 흔히 쓰이는 식당 비유로 정리하면 다음과 같다.

식당 비유

손님(나) → 웨이터(API) → 주방(서버). 손님은 주방에 들어갈 수 없고, 정해진 메뉴판(엔드포인트)으로만 주문할 수 있다. 웨이터는 주문을 받아 주방에 전달하고, 완성된 요리(JSON 데이터)를 가져다 준다.

실제 매핑

손님 = 내 컴퓨터·Make 시나리오 / 웨이터 = API 엔드포인트(예 : api.odcloud.kr/api/...) / 주방 = 공공데이터포털 서버 / 메뉴판 = API 문서 / 요리 = JSON 응답

강사가 강의에서 강조한 핵심 — "우리는 이미 매일 API를 쓰고 있어요." 브라우저 주소창에 naver.com을 치는 것 자체가 네이버 서버에 "웹페이지를 보여주세요"라고 API 요청을 보내는 일이다. 다만 그 응답이 사람 눈에 보기 좋은 HTML이라 우리가 인식하지 못할 뿐이다.

데이터용 API는 응답을 사람이 아니라 컴퓨터가 처리하기 편한 JSON·XML 형식으로 돌려준다. 그래서 Make 같은 자동화 도구가 가져와 시트·메일·메신저로 흘려보내기 쉽다. "내 정보를 가져다 써라"는 목적으로 만들어진 API가 점점 많아지고 있으며, 이걸 잘 모으면 부동산 데이터 수집·분석 업무가 통째로 자동화된다.

02. 바로 쓰는 API 5종 — 공공데이터포털  소개

강의에서 강사가 정리한 "실무에서 바로 쓸 만한 API" 목록과, 그중 부동산 마케팅에 가장 밀접한 공공데이터포털·Apify 두 가지의 활용 포인트를 정리한다.

API 주소 부동산 마케팅 활용
공공데이터포털 data.go.kr / api.odcloud.kr 아파트 실거래가, 청약Home 분양공고, 청약 경쟁률, 인구·세대 통계, 행정구역 코드 등 — 이번 실습 대상
네이버 오픈 API developers.naver.com 경쟁 단지명 키워드로 뉴스·블로그 자동 모니터링, 데이터랩 검색량 추적
기상청 API apihub.kma.go.kr 현장 견본주택 OPEN 일정의 우천 위험 사전 알림
Apify apify.com 경쟁사 SNS·웹사이트 스크래핑(월 $5 무료 크레딧)
빗썸 API apidocs.bithumb.com (부동산 직접 관련 적음 — 자동화 학습 예시용)
공공데이터포털이 부동산 마케팅기획에게 특별한 이유

"내가 관심 있는 아파트의 실거래가 정보를 바로바로 받아와서, 가격 변동 추이를 실시간으로 추적하고 싶다면?" 정부가 운영하는 공공데이터포털(data.go.kr)은 이런 요구에 답하기 위해 만든 사이트다. 부동산 실거래가, 청약 정보, 인구 통계, 행정구역 등 방대한 데이터를 무료로 API로 제공한다.

주요 부동산 API 제공 내용 이번 실습 대상
아파트매매 실거래가 상세 월별 거래 가격·면적·층·계약일
청약Home 정보 — APT 분양공고 전국 아파트 분양공고 (단지명·위치·세대수·접수기간·당첨자 발표일·입주월) ✓ 본 실습
청약Home 정보 — 경쟁률 상세 주택형별·청약 순위별 경쟁률
전월세 실거래가 임대차 계약 정보
사전 준비 — API 키 발급
공공데이터포털 API는 누구나 무료로 쓸 수 있지만 인증키(serviceKey)가 필요하다. (1) data.go.kr 회원가입 → (2) "한국부동산원 청약홈" 또는 " 분양정보" 검색 → (3) 활용신청 클릭 → (4) 마이페이지에서 일반 인증키(Decoding) 복사. 신청 직후 바로 발급되며, 보통 일일 트래픽 1,000~10,000건까지 무료다.

03. Make HTTP - Make a Request 모듈 

오늘날 대부분의 API는 HTTP라는 통신 규칙으로 작동한다. Make에서 이 모듈 하나만 잘 다루면 세상의 거의 모든 API와 대화할 수 있다. Make 공식 문서의 설명을 인용하면서, 강의에서 다룬 옵션을 정리해 풀어본다.

MAKE 공식 문서 인용

"HTTP is the fundamental component of data transfer for the World Wide Web. With the HTTP app in Make, you can connect to API services and applications that don't have an integration with Make." → 한국어로 풀면 : "HTTP는 웹의 데이터 전송 핵심 부품이다. Make의 HTTP 앱을 쓰면 Make에 별도 커넥터가 없는 API 서비스에도 접속할 수 있다."

Source : Make Help — HTTP App Documentation
8개 옵션 해설
옵션 한 줄 설명 이번 실습에서
① Authentication type 인증 방식 선택. No authentication(웹 스크래핑·공개 API), API key, Basic Auth, OAuth 2.0 중 택1 noAuth — 공공데이터포털은 API 키를 헤더가 아닌 쿼리 파라미터(serviceKey)로 받으므로 인증 옵션 자체는 "없음"으로 둠
② URL API 엔드포인트 주소. 반드시 https로 시작해야 함. Make는 자체 서명 인증서나 http는 거부한다 https://api.odcloud.kr/api/ApplyhomeInfoDetailSvc/v1/getAPTLttotPblancDetail?...
③ Method GET(조회) · POST(생성) · PUT(전체 수정) · PATCH(부분 수정) · DELETE(삭제) · HEAD · OPTIONS 중 택1 GET — 분양공고를 "조회"만 함
④ Headers 요청에 부가 정보·지시사항을 담는 곳. User-Agent, Cache-Control 등. 인증키나 Content-Type은 여기 넣지 말고 전용 필드를 쓰라고 Make 공식 문서가 권고 (미사용) — 공공데이터포털은 헤더 인증을 요구하지 않음
⑤ Query parameters URL 뒤에 ?키=값&키=값으로 붙는 변수들. GET/DELETE에서 주로 사용. API 문서에 명시된 키 이름을 그대로 써야 함 serviceKey(인증키) · page(페이지) · perPage(페이지당 건수) · cond[RCRIT_PBLANC_DE::GTE](모집공고일 조건)
⑥ Body content type POST 등으로 데이터를 보낼 때 어떤 형식으로 담을지. application/JSON · multipart/form-data(파일 업로드) · x-www-form-urlencoded(폼) · Custom (미사용) — GET 요청은 본문이 비어 있음
⑦ Parse response Yes로 두면 응답이 JSON 객체로 자동 분해되어 다음 모듈에서 data.data[0].HSSPLY_ADRES처럼 점 표기로 꺼낼 수 있다. No면 그냥 문자열 한 덩이로 받음 Yes — 청약Home 응답을 객체로 파싱해야 시트에 컬럼별로 꽂힘
⑧ Pagination type 응답이 여러 페이지로 분할된 경우의 처리 방식. Offset 기반 · Page 기반 · URL 링크 기반 · Token/Cursor 기반 4종 (미사용) — perPage=100으로 한 번에 100건을 받아 모두 처리. 100건 초과 시 Page 기반으로 확장 가능

 

▶ Make 공식 문서가 강조하는 보안 권고 
"For security reasons, define the authentication details in the dedicated Credentials field rather than passing them through headers or query parameters." → 한국어로 풀면 : "보안상의 이유로 인증 정보는 헤더·쿼리 파라미터가 아닌 전용 Credentials 필드에 저장하는 것을 권장한다. (1) 키 노출 방지 (2) 인증 정보 중앙 통제 (3) 안전한 키 교체가 쉬워진다." — 다만 공공데이터포털처럼 API가 키를 쿼리 파라미터로만 받도록 설계된 경우는 이 권고를 따를 수 없다. 이 경우 블루프린트 공유 시 키를 반드시 본인 것으로 교체해야 한다 .

 

고급 옵션 — 보통 기본값으로 두지만 알아두면 좋은 4가지
옵션 의미 실습 설정값
Return error if HTTP request fails (Stop on HTTP error) 4xx·5xx 오류 시 시나리오를 중단할지 Yes (true) — 오류면 즉시 멈춰서 원인 추적
Allow redirects 301·302 같은 리다이렉트 응답을 자동 추적할지 (최대 10회) Yes (true)
Share cookies with other HTTP modules 같은 시나리오 내 다른 HTTP 모듈과 쿠키를 공유할지 No (false) — 단일 API 호출이라 불필요
Request compressed content 응답을 gzip 등으로 압축해 받기 (속도·대역폭 절약) Yes (true) — 100건 응답 전송 시간 단축

04. 실습 — 청약Home API로 최근 7일 분양공고 자동 수집

실습 목표. 매주 월요일 아침 9시에 Make 시나리오가 자동 실행되어 → 공공데이터포털 청약Home API에서 최근 7일간 모집공고된 전국 아파트 분양공고를 모두 가져와 → 한 건씩 분리 → 구글 시트에 한 줄로 자동 적재. 사람이 일일이 청약Home에 들어가 단지명·세대수·접수기간을 베껴 적던 작업이 완전 자동화된다.

준비물. (1) 공공데이터포털 API 인증키, (2) Make.com 계정, (3) 구글 계정, (4) 결과를 받을 빈 구글 시트 1개("분양정보데이터")

전체 시나리오 구조 — 3개 모듈로 끝
모듈 ①
HTTP
청약Home API 호출
(최근 7일 분양공고 100건)
모듈 ②
Iterator
응답의 data 배열
→ 한 건씩 분리
모듈 ③
Google Sheets
addRow
→ 시트에 한 줄씩 적재
강사의 한 마디 — "여기서 진짜 중요한 게 Iterator(이터레이터)예요. API가 분양공고 100건을 한 덩어리(배열)로 한 번에 던져주는데, 이걸 그대로 시트에 넣으면 한 셀에 100건이 다 들어가 버려요. 그래서 Iterator로 잘게 쪼개서 한 건씩 흘려보내야 시트에 100개의 행으로 예쁘게 쌓입니다."
STEP 0. 블루프린트 임포트로 3분 만에 끝내기

Make.com 로그인 → Scenarios → Create a new scenario → 우측 상단 점 3개() → Import Blueprint → 강사가 배포한 get_applyhome_data_blueprint.json 선택 → 3개 모듈이 자동으로 연결된 상태로 화면에 펼쳐진다. 이제 각 모듈을 클릭해 본인 값(API 키·구글 시트·구글 계정)으로 갈아 끼우기만 하면 된다.

05. 모듈 ① HTTP - 청약Home API 호출 — 파라미터 한 줄씩

첫 번째 모듈을 클릭하면 사이드 패널에 다음 값들이 들어 있다. 블루프린트에 기록된 실제 설정을 한 항목씩 풀어본다.

블루프린트 발췌 — 모듈 4 (HTTP Make a Request)
URL:
  https://api.odcloud.kr/api/ApplyhomeInfoDetailSvc/v1/getAPTLttotPblancDetail
    ?page=1
    &perPage=100
    &cond[RCRIT_PBLANC_DE::GTE]={{formatDate(addDays(now; -7); "YYYY-MM-DD")}}

Method:               GET
Authentication:     noAuth

Query parameters:
  - serviceKey:    EJLOxLu7Ggm2Gllxptrb...  (※ 본인 키로 교체)

Parse response:      true
Stop on HTTP error:  true
Allow redirects:     true
Share cookies:       false
Request compressed:  true

Designer name:       최근 7일간 분양공고 조회
URL 구성 요소 — 4단으로 쪼개서 보기
URL 조각 의미 해설
https://api.odcloud.kr 호스트 공공데이터포털이 오픈 API를 제공하는 게이트웨이 도메인. 모든 공공데이터 API의 진입점
/api/ApplyhomeInfoDetailSvc/v1/getAPTLttotPblancDetail 엔드포인트 경로 "청약Home 정보 상세 서비스(ApplyhomeInfoDetailSvc) v1 → APT 분양공고 상세 조회(getAPTLttotPblancDetail)"라는 의미. 카멜·언더스코어 혼용의 영문 약어는 공공데이터포털 API 명명 관례
?page=1&perPage=100 페이징 파라미터 첫 페이지의 100건을 가져옴. 공공데이터포털 API는 1페이지당 최대 100건이 표준. 더 많이 필요하면 page=2, page=3으로 반복 호출하거나 Pagination type 옵션 사용
&cond[RCRIT_PBLANC_DE::GTE]={{formatDate(addDays(now; -7); "YYYY-MM-DD")}} 날짜 조건 필터 중요한 부분 — 다음 표에서 따로 풀이
날짜 필터 분해 — Make 함수로 "지금부터 7일 전"을 동적으로 계산
구성 의미
cond[필드명::연산자]=값 공공데이터포털 API의 조건 검색 문법. 필드 이름과 비교 연산자, 비교할 값을 한 묶음으로 묶어 보냄
RCRIT_PBLANC_DE "모집공고일(Recruit Public Announcement Date)" 필드. 공공데이터포털 청약Home API의 표준 컬럼명
::GTE "Greater Than or Equal" — 이 날짜 이상(같은 날 포함)이라는 비교 연산자. LTE(이하), EQ(같음) 등도 사용 가능
{{now}} Make 내장 함수 — 현재 시각
{{addDays(now; -7)}} Make의 날짜 함수 — 현재 시각에서 7일을 뺀 날짜
{{formatDate(...; "YYYY-MM-DD")}} Make의 포맷 함수 — 날짜 객체를 2026-05-20 같은 문자열로 변환. 공공데이터포털 API가 요구하는 표준 날짜 형식
전체 URL이 의미하는 것 한 줄로 — "청약Home 분양공고 중에서, 모집공고일이 오늘로부터 7일 전 이후인 건들을, 첫 페이지부터 최대 100건까지 JSON으로 받아오라." 이게 URL 한 줄로 정확히 표현된 셈이다.
쿼리 파라미터 — serviceKey 항목 자세히

URL 본문에 이미 쿼리 파라미터가 들어 있긴 하지만, Make HTTP 모듈은 Query parameters 섹션에 별도로 키-값을 추가하는 방식도 지원한다. 블루프린트에서는 인증키(serviceKey)만 이 별도 섹션에 분리해서 넣어 두었다. 이유는 두 가지다 :

  1. 인코딩 안정성 — 인증키에는 +, /, = 같은 특수문자가 들어가는 경우가 많아 URL 직접 삽입 시 깨질 위험이 있음. Make의 Query parameters 섹션은 자동 URL 인코딩 처리.
  2. 가독성·관리성 — 키를 별도 항목으로 빼두면 나중에 키 교체 시 URL을 건드리지 않고 한 줄만 수정하면 됨.
⚠ 보안 경고 — 블루프린트 그대로 쓰면 안 됨
배포된 블루프린트 JSON에는 강사 본인의 인증키가 평문으로 들어 있다 (EJLOxLu7Ggm2Gllx...). 실습 직후 반드시 본인의 공공데이터포털 인증키로 교체해야 한다. 블루프린트를 SNS·블로그에 공유할 때는 키를 YOUR_SERVICE_KEY_HERE처럼 마스킹해 올려야 한다.
응답 데이터 — JSON 구조 미리보기

위 요청을 실행하면 공공데이터포털은 다음과 비슷한 JSON을 돌려준다 (실제 응답에서 발췌한 예시).

API 응답 JSON 예시 (요약)
{
  "currentCount": 7,
  "data": [
    {
      "HOUSE_MANAGE_NO": "2026000123",
      "BSNS_MBY_NM": "에이치엘디앤아이한라",
      "HSSPLY_ADRES": "경기도 파주시 문산읍 선유리 1234번지",
      "TOT_SUPLY_HSHLDCO": "1716",
      "RCRIT_PBLANC_DE": "2026-05-20",
      "RCEPT_BGNDE": "2026-05-27",
      "RCEPT_ENDDE": "2026-05-29",
      "PRZWNER_PRESNATN_DE": "2026-06-05",
      "MVN_PREARNGE_YM": "202703",
      ...
    },
    { ... },
    { ... }
  ],
  "matchCount": 7,
  "page": 1,
  "perPage": 100,
  "totalCount": 7
}

여기서 우리가 시트에 옮길 데이터는 data 배열 안의 각 객체다. HOUSE_MANAGE_NO·BSNS_MBY_NM·HSSPLY_ADRES 같은 영문 약어들은 공공데이터포털 청약Home API의 표준 필드명이며, 각각의 한글 의미는 7장 매핑 표에서 정리한다.

06. 모듈 ② Iterator - 배열 분리 — 왜 필요하고 어떻게 작동하나

두 번째 모듈은 Make의 내장 흐름 제어 도구 Iterator(블루프린트 내부 모듈명 builtin:BasicFeeder)다. 작동 원리는 간단하지만, 시나리오가 작동하느냐 마느냐를 가르는 가장 중요한 모듈이다.

MAKE 공식 문서 인용

Make 공식 문서는 Iterator의 작동을 다음과 같이 정의한다 — "The iterate directive specifies the container of an array of items that the module must process. The output directive will be executed for each item in the container." → 한국어로 풀면 : "Iterator는 배열에 담긴 여러 항목들을 받아, 다음 모듈이 각 항목마다 한 번씩 실행되도록 분해해 흘려보낸다."

Source : Make Developer Hub — App Blocks · Iterate Directive
왜 Iterator가 필요한가 — 한 줄로
Iterator 없이

HTTP 모듈이 100건짜리 배열 1개를 던짐 → Google Sheets addRow가 1번 실행됨 → 시트에 단 1줄만 생기는데, 그 1줄의 셀 안에 100건이 통째로 들어감 → 데이터로서 무의미.

Iterator 사용

HTTP 모듈이 100건짜리 배열 1개를 던짐 → Iterator가 100번 풀어줌 → Google Sheets addRow가 100번 실행됨 → 시트에 100줄이 한 행씩 예쁘게 쌓임.

설정값 — Array 항목 한 줄이 전부
블루프린트 — (BasicFeeder / Iterator)
Array: {{4.data.data}} Designer name: 각 공고 분리
설정 항목 의미 이 실습에서
Array "분리해서 흘려보낼 배열이 어디 있냐"를 가리키는 경로. Make 매핑 변수 형식 {{모듈번호.경로}} {{4.data.data}} — "모듈 4번의 응답(data) 안의 data 배열"
4.data.data인가 — 점 표기법 한 번에 이해

Make는 모듈의 응답을 계층 구조로 다룬다. HTTP 모듈은 응답을 일단 data라는 컨테이너에 넣어주고, 그 안에 공공데이터포털 API가 돌려준 JSON이 통째로 들어간다. 그래서 경로가 두 단계가 된다 :

경로 가리키는 것
4 4번 모듈(HTTP - Make a Request) 전체
4.data 4번 모듈의 응답 본문 전체 (Parse response=Yes 덕분에 JSON 객체로 파싱됨)
4.data.data 응답 본문 안의 data 키 — 공공데이터포털이 분양공고 배열을 담아주는 자리
4.data.totalCount (참고) 응답 본문 안의 totalCount — 검색된 전체 건수
▶ 다른 API라면 경로가 달라진다
공공데이터포털은 결과 배열을 data에 담는다. 네이버 오픈 API는 items에 담고, 어떤 API는 results·list·records에 담는다. 반드시 첫 실행 시 응답 구조를 한 번 확인하고 알맞은 경로를 Iterator의 Array 항목에 넣어야 한다. 모듈을 한 번 실행한 뒤 Make UI에서 응답 구조가 트리로 펼쳐지므로 그걸 클릭해 매핑하면 안전하다.

07. 모듈 ③ Google Sheets addRow - 7개 컬럼 매핑 해설

마지막 모듈은 Iterator가 한 건씩 풀어 흘려준 분양공고 데이터를 받아, 미리 만들어둔 구글 시트에 한 줄(Row)로 적재한다. 모듈명은 google-sheets:addRow.

블루프린트 발췌 — 모듈 6 (Google Sheets Add a Row)
Connection:                     My Google connection (chatdaeri@gmail.com)
Spreadsheet:                    분양정보데이터
                                 (ID: 1y_wIcJA9P3SHQjxFT67k9UGNlfUzO8Kg4KyjiSwzGmk)
Sheet:                           시트1

Table contains headers:      Yes
Use column headers as IDs:   No
Mode:                            Select from drive

Value input option:          USER_ENTERED
Insert data option:          INSERT_ROWS
Insert unformatted:          false

Designer name:                각 공고 정보 -> 1줄로 저장
시트 설정 옵션 — 5개
옵션 의미 실습 설정
Mode 스프레드시트를 어떻게 지정할지. Select from drive(드라이브에서 클릭), Search by path(경로 검색), Map(ID 직접 입력) 중 택1 Select from drive — 드라이브 파일 목록에서 선택
Spreadsheet 저장 대상 구글 시트 파일 "분양정보데이터" 시트 — 사전에 본인 드라이브에 빈 시트 1개를 만들어 둬야 함
Sheet 시트 파일 안의 어떤 탭에 쓸지 "시트1" (기본 탭)
Table contains headers 1행에 헤더(컬럼명)가 있는지 Yes — 1행에 "아파트이름·공급위치·총공급세대수…" 등을 미리 적어두기
Use column headers as IDs of the columns 매핑 시 컬럼을 A·B·C로 부를지(No), 헤더 이름으로 부를지(Yes) No — A~Z 알파벳 컬럼 ID로 매핑 (블루프린트 호환성↑)
고급 옵션 — 시트에 어떻게 써넣을지
옵션 의미 실습 설정
Value input option USER_ENTERED(사람이 직접 친 것처럼 수식·날짜·숫자 자동 파싱) vs RAW(들어온 그대로 문자열) USER_ENTERED — 날짜 문자열 2026-05-20이 자동으로 날짜 셀이 됨
Insert data option INSERT_ROWS(새 행을 끼워 넣음) vs OVERWRITE(기존 마지막 행을 덮어씀) INSERT_ROWS — 매번 새 행이 한 줄씩 추가됨
Insert unformatted 서식 없이 그대로 넣을지 false — 시트의 셀 서식(날짜·천 단위 콤마)을 적용
★ 핵심 — Values in columns 매핑 7줄

이 부분이 시나리오의 진짜 알맹이다. Iterator가 흘려준 분양공고 1건의 각 필드를 시트의 어느 컬럼에 넣을지 일대일로 연결한다. 블루프린트에 들어 있는 매핑을 한 줄씩 풀어본다.

시트 컬럼 한글 헤더 매핑 변수 의미·해설
A 아파트이름 {{7.BSNS_MBY_NM}} "BSNS_MBY_NM" = Business Main Body Name = 사업주체명. 정확히는 시행·시공사의 명칭이 들어옴. 만약 단지 고유 명칭("선유리 파주문산에피트")이 필요하면 API에 따로 있는 HOUSE_NM 필드를 매핑하는 게 더 적절
B 공급위치 {{7.HSSPLY_ADRES}} "HSSPLY_ADRES" = House Supply Address = 단지 주소
C 총공급세대수 {{7.TOT_SUPLY_HSHLDCO}} "TOT_SUPLY_HSHLDCO" = Total Supply Household Count = 총 공급 세대수. 숫자 문자열로 옴 (예 : "1716")
D 모집공고일 {{7.RCRIT_PBLANC_DE}} "RCRIT_PBLANC_DE" = Recruit Public Announcement Date = 모집공고일. 2026-05-20 형식
E 청약접수기간 {{7.RCEPT_BGNDE}} / {{7.RCEPT_ENDDE}} "RCEPT_BGNDE"(시작일) + "RCEPT_ENDDE"(종료일)을 슬래시로 합쳐 한 셀에 표시. 예 : 2026-05-27 / 2026-05-29. Make 매핑은 변수 사이에 평문을 끼워 넣는 게 자유로움
F 당첨자발표일 {{7.PRZWNER_PRESNATN_DE}} "PRZWNER_PRESNATN_DE" = Prize Winner Presentation Date = 당첨자 발표일
G 입주예정월 {{7.MVN_PREARNGE_YM}} "MVN_PREARNGE_YM" = Move-in Pre-arrangement Year-Month = 입주 예정 연월. 202703처럼 YYYYMM 6자리 형식
▶ 변수 앞 숫자 7이 무엇인가
Make의 매핑 변수 {{7.XXX}}에서 7모듈의 내부 ID다. 디자이너 화면 순서(1·2·3번)와는 별개로, 블루프린트 안에서 각 모듈에 부여한 고유 번호. 이 블루프린트는 모듈 ID를 4(HTTP) → 7(Iterator) → 6(Sheets) 순서로 부여했기 때문에, 시트 매핑이 Iterator인 7번을 참조하는 것이다. 직접 모듈을 만들 때는 Make가 자동으로 ID를 매기므로 그냥 변수 패널에서 클릭해 끼워 넣으면 된다.
실무 팁 — 매핑하지 않은 H~Z 컬럼은 빈 상태로 둔다. 나중에 "분양가" "면적별 세대수" "특별공급 비율" 같은 컬럼을 추가하고 싶으면, API 응답에 더 들어 있는 필드(LTTOT_TOP_AMOUNT, SPSPLY_RCEPT_BGNDE 등)를 추가 매핑하면 된다. 공공데이터포털 청약Home API는 한 건당 30개 이상의 필드를 돌려준다.
실행 → 결과 확인 → 스케줄링
단계 작업
1 화면 하단 Run once 클릭 → 3개 모듈 위에 숫자 풍선이 차례로 표시됨. HTTP=1, Iterator=N(가져온 건수), Sheets=N
2 구글 시트로 가서 N개 행이 새로 추가되었는지 확인
3 잘 돌면 좌측 하단 시계 아이콘 클릭 → Scheduling → "Every week"로 설정 → 월요일 09:00 등 원하는 시각 지정
4 시나리오 토글을 ON → 이제부터 매주 정해진 시각에 자동 실행. 한 번 켜두면 사람 손 댈 일 없음

08. 자주 만나는 오류 + 보안 주의 + 참고 링크

실습 중 자주 마주치는 오류 5가지
증상 원인 해결
HTTP 모듈에서 401 Unauthorized 또는 SERVICE_KEY_IS_NOT_REGISTERED 인증키 미입력·오타·미승인 API (1) 키 재복사 (2) 공공데이터포털 마이페이지에서 해당 API가 "활용신청 승인됨"인지 확인 (보통 자동 즉시 승인)
NO_OPENAPI_SERVICE_ERROR 엔드포인트 URL 오타 또는 신청 안 된 API 호출 URL 한 글자씩 재확인. ApplyhomeInfoDetailSvc 대소문자 정확히
응답은 받았는데 시트에 한 줄만 들어감 (그 줄 안에 모든 데이터가 통째) Iterator 모듈 누락 또는 Array 매핑 흰색 Iterator 모듈의 Array 항목을 {{4.data.data}}로 재매핑
날짜 셀에 20270303처럼 숫자로 들어감 Value input option이 RAW로 되어 있음 Sheets 모듈의 Value input option을 USER_ENTERED로 변경
cond[RCRIT_PBLANC_DE::GTE]=… 필터가 안 먹어서 옛날 공고까지 다 옴 대괄호·이중 콜론이 URL 인코딩되어 깨짐 Make HTTP 모듈은 보통 자동 처리하지만, 안 되면 %5B([) %3A%3A(::) %5D(])로 수동 인코딩
⚠ 보안 — 블루프린트 공유 시 반드시 지켜야 할 3가지

(1) 인증키는 본인 키로 교체 — 강사 배포본의 키는 학습용. 실전에서 그대로 쓰면 키 소유자가 트래픽 초과로 차단될 수 있고, 강사 책임도 본인에게 전가될 수 있음.
(2) 블루프린트를 외부 공유할 때는 키를 마스킹 — JSON을 열어 "value": "EJLO..." 부분을 "value": "YOUR_SERVICE_KEY"로 바꿔서 공유.
(3) 시나리오 ON 상태로 장기간 방치 금지 — 매주 100건씩 누적되면 시트가 무거워지고 크레딧이 소진됨. 월 1회 시트 정리·중복 제거 루틴을 별도 시나리오로 만들어두면 좋음.

한 단계 더 — 응용 시나리오 
아이디어 변경 포인트 예상 효과
경기도·서울 분양만 필터 HTTP 모듈 다음에 Filter 추가 — {{7.HSSPLY_ADRES}}가 "경기" 또는 "서울" 포함 시에만 통과 관심 지역만 자동 추적 — 노이즈 90% 감소
새 공고 발견 시 슬랙 알림 Sheets 모듈 뒤에 Slack: Send a Message 추가. 본문에 단지명·접수기간·링크 자동 포함 일일 보고·주간 보고 메일을 사람이 안 써도 됨
경쟁률 데이터까지 연계 두 번째 HTTP 모듈 추가 — 청약Home의 다른 엔드포인트 getAPTLttotPblancCmpet 호출 → 경쟁률을 같은 시트의 별도 컬럼에 적재 한 시트에서 "분양공고 + 실제 경쟁률"이 한 줄로 정리
참고 링크