/basic/session-05
05기본과정180분 (이론 60 + 실습 120)

API 이해하고 연결하기

남이 만든 기능을 내 것처럼

02이 차시를 마치면

  • 1.API가 무엇이고 요청-응답 구조가 어떻게 되는지 설명할 수 있다.
  • 2.JSON 형태의 응답에서 필요한 값이 어디에 있는지 찾아 읽을 수 있다.
  • 3.API 키를 발급받아 코드에 직접 노출하지 않는 방식으로 안전하게 보관할 수 있다.
  • 4.외부 API를 호출해 받아온 데이터를 구글 시트에 자동으로 쌓을 수 있다.
  • 5.API 문서에서 엔드포인트·파라미터·사용량 한도를 찾아 읽을 수 있다.

03왜 필요한가

04차시에서 시트 자동화를 익혔지만, 그 데이터는 전부 사람이 직접 입력한 것이었다. 실제 업무에서는 이런 경우가 많다 — 매일 아침 환율 사이트에 들어가 오늘 환율을 확인하고 정산 시트에 손으로 옮겨 적는 담당자, 공공 데이터 사이트에서 최신 통계를 확인해 보고서에 붙여 넣는 담당자. 데이터는 이미 인터넷 어딘가에 있는데, 그걸 가져오는 방법을 몰라 매번 눈으로 보고 손으로 옮긴다.

  • 외부 사이트를 매번 열어 눈으로 확인하고 손으로 옮기는 데 시간이 든다.
  • 사람이 옮기다 보니 숫자를 잘못 옮기거나 날짜를 빼먹는 실수가 생긴다.
  • "이 데이터를 자동으로 가져올 수 없을까"라는 생각은 들지만 API가 뭔지 몰라 시도조차 못 한다.
  • API 키를 코드에 그대로 적었다가 유출되는 사고를 어떻게 방지하는지 모른다.

04개념 설명

API는 정해진 형식으로 주고받는 대화 창구다

식당에서 주문하는 과정을 떠올려보자. 메뉴판을 보고(문서를 읽고), 정해진 형식으로 주문을 넣으면(요청을 보내면), 주방에서 음식을 만들어 내온다(응답을 돌려준다). API(Application Programming Interface)는 서로 다른 프로그램이 이런 식으로 정해진 규칙에 따라 데이터를 주고받는 창구다.

내가 특정 주소(엔드포인트)로 필요한 조건을 담아 요청을 보내면, 상대 서버가 정해진 형식으로 응답을 돌려준다. 이 형식과 규칙이 바로 API 문서에 적혀 있는 내용이다.

01메뉴 확인API 문서 읽기
02주문요청(Request) 보내기
03주방에서 조리서버가 처리
04서빙응답(Response) 받기
  • 요청(Request) — 내가 무엇을 달라고 보내는 것
  • 응답(Response) — 서버가 돌려주는 결과
  • 엔드포인트(Endpoint) — 요청을 보내는 주소

JSON — 프로그램끼리 주고받는 데이터의 모양

JSON은 API 응답에서 가장 흔히 쓰이는 데이터 형식이다. 중괄호 { }는 하나의 정보 묶음을, 대괄호 [ ]는 여러 개를 나열한 목록을 뜻한다. 예를 들어 환율 정보를 담은 응답은 { "날짜": "2026-08-22", "환율": 1320.5 } 처럼 생겼을 수 있고, 여러 통화를 한 번에 받으면 이런 묶음이 목록으로 늘어선 모양이 된다.

사람이 읽는 시트(표)와 프로그램이 주고받는 JSON은 사실 같은 정보를 다른 모양으로 표현한 것뿐이다. JSON에서 원하는 값의 위치(이름표)만 찾으면, 그 값을 그대로 시트의 한 칸에 옮겨 담을 수 있다.

날짜2026-08-22
환율1320.5
{ } = 하나의 정보 묶음 · 여러 묶음이 늘어서면 [ ] 목록이 된다
  • { } — 하나의 정보 묶음(객체)
  • [ ] — 여러 묶음을 나열한 목록(배열)
  • 이름표(키)와 값의 짝으로 이뤄진다

API 키 — 출입증이자 책임의 증표

많은 API는 누가 요청을 보냈는지 확인하기 위해 키(API Key)를 요구한다. 이 키는 건물 출입증과 비슷하다. 출입증을 남에게 보여주거나 잃어버리면, 그 사람이 내 이름으로 드나들며 문제를 일으킬 수 있는 것처럼, 키가 유출되면 남이 내 계정 한도로 요청을 보내거나 요금을 발생시킬 수 있다.

그래서 키는 코드 안에 직접 적지 않고, 코드와 분리된 별도의 저장소(Apps Script의 스크립트 속성, 또는 환경변수)에 보관한 뒤 코드에서는 이름으로만 불러와 쓴다. 이렇게 해두면 코드를 다른 사람과 공유하거나 화면에 띄워도 실제 키 값은 드러나지 않는다.

Apps Script 편집기
⚙ 프로젝트 설정스크립트 속성API_KEY

코드가 아니라 이 화면에만 값을 적어둔다 — 코드를 공유해도 값은 드러나지 않는다.

  • 코드에 키 값을 직접 적지 않는다
  • 스크립트 속성/환경변수 등 별도 저장소에 보관한다
  • 유출이 의심되면 즉시 재발급(rotate)한다

API 문서 읽는 법 — 필요한 세 가지만 찾는다

API 문서는 처음 보면 방대해 보이지만, 시작 단계에서는 세 가지만 찾으면 된다. 요청을 보내는 주소(엔드포인트), 그 요청에 붙여야 하는 조건(파라미터), 그리고 돌아오는 응답이 어떤 모양인지 보여주는 예시다.

여기에 더해 사용량 한도(rate limit)를 반드시 확인해야 한다. 하루 또는 분당 몇 번까지 호출할 수 있는지를 모르고 쓰면, 갑자기 요청이 막히거나 예상치 못한 비용이 발생할 수 있다.

항목의미
엔드포인트요청 주소
파라미터요청에 붙이는 조건
응답 예시결과가 어떤 모양인지
사용량 한도얼마나 자주 호출 가능한지
문서를 처음 볼 때는 이 네 가지만 먼저 찾는다
  • 엔드포인트 — 요청 주소
  • 파라미터 — 요청에 붙이는 조건
  • 응답 예시 — 결과가 어떤 모양인지
  • 사용량 한도 — 얼마나 자주 호출 가능한지

05실습 가이드

  1. 1. 무료 API 키 발급받기

    • 공공데이터포털이나 환율·날씨 정보를 제공하는 공개 API 중 하나를 골라 회원가입 후 API 키(인증키) 발급을 신청한다.
    • 즉시 발급되는 서비스도 있고 승인까지 시간이 걸리는 서비스도 있으니, 이번 실습을 시작하기 전에 미리 신청해둔다.
    • 발급받은 키는 메모장 등 별도 파일에 임시로 적어두되, 아직 어떤 코드에도 붙여넣지 않는다.

    예상 결과사용 가능한 API 키(문자·숫자 조합) 한 개를 손에 넣는다.

    안 될 때승인이 지연되는 서비스라면, 신청 즉시 키가 발급되는 다른 공개 API(무료 환율·날씨 API 등)로 바꿔 진행한다.

  2. 2. API 키를 스크립트 속성에 저장하기

    • 04차시에서 쓰던 시트(또는 새 시트)에서 '확장 프로그램 → Apps Script'를 연다.
    • 왼쪽 톱니바퀴(프로젝트 설정) 메뉴에서 '스크립트 속성'에 속성을 추가한다.
    • 속성 이름(예: API_KEY)과 발급받은 키 값을 등록하고 저장한다.

    예상 결과스크립트 속성 목록에 API_KEY 항목이 값과 함께 등록된다. 코드에는 아직 키가 등장하지 않는다.

    안 될 때스크립트 속성 메뉴가 안 보이면 프로젝트 설정(톱니바퀴) 화면인지 확인한다. 코드 편집기 화면과는 다른 탭이다.

  3. 3. API 문서에서 필요한 정보 확인하기

    • 선택한 API의 공식 문서에서 엔드포인트 주소, 필수 파라미터, 응답 예시를 찾는다.
    • P5-1 프롬프트로 문서 내용을 AI에게 붙여넣고 핵심만 정리해달라고 요청한다.

    예상 결과엔드포인트 주소, 필요한 파라미터, JSON 응답 예시가 한눈에 정리된다.

    안 될 때문서가 영어로만 되어 있어도 괜찮다. 해당 페이지를 통째로 복사해 AI에게 붙여넣고 번역 겸 요약을 요청한다.

  4. 4. 요청 코드 작성하고 응답 확인하기

    • P5-2 프롬프트로 UrlFetchApp을 이용한 호출 코드를 요청한다(키는 스크립트 속성에서 불러오도록 명시).
    • 받은 코드를 편집기에 붙여넣고 실행한다.
    • 실행 로그에 응답 JSON이 출력되는지 확인한다.

    예상 결과실행 로그에 API가 돌려준 JSON 원문이 찍힌다.

    안 될 때로그에 401·403 같은 인증 에러가 보이면 스크립트 속성 이름과 코드에서 불러오는 이름이 정확히 같은지 확인한다. P5-4(복구 프롬프트)를 사용한다.

  5. 5. 필요한 값만 골라내기

    • 로그에 찍힌 JSON을 보고, 시트에 쌓고 싶은 값(예: 날짜, 환율 수치)이 어느 위치에 있는지 확인한다.
    • P5-3 프롬프트로 필요한 값만 뽑아내는 코드로 다듬어달라고 요청한다.

    예상 결과실행 로그에 JSON 전체가 아니라 원하는 값만 깔끔하게 출력된다.

    안 될 때값이 undefined로 나오면 JSON 구조를 다시 확인해 값이 어느 depth(중첩된 객체·배열 여부)에 있는지 JSON 원문과 함께 AI에게 재질문한다.

  6. 6. 시트에 한 줄씩 쌓기

    • 새 시트 탭(예: '환율기록')을 만들고 헤더(날짜, 값 등)를 적는다.
    • 5단계 코드에 이어서, 뽑아낸 값을 이 시트 맨 아래 행에 추가하는 코드를 요청해 붙여넣는다.
    • 실행 버튼을 여러 번 눌러 실행할 때마다 새 행이 쌓이는지 확인한다.

    예상 결과실행할 때마다 '환율기록' 시트에 새로운 행이 하나씩 추가된다.

    안 될 때같은 행이 계속 덮어써지면 마지막 행을 찾는 부분(getLastRow 등)이 빠진 것이다. "매번 새 행에 추가되게 고쳐줘"라고 요청한다.

  7. 7. 에러와 사용량 한도 대비하기

    • API 문서에서 확인한 사용량 한도(하루·분당 호출 횟수 등)를 코드 주석이나 별도 메모로 남겨둔다.
    • P5-5 프롬프트로 호출 실패 시 재시도하거나 에러를 기록하는 코드를 보강해달라고 요청한다.

    예상 결과호출이 실패해도 스크립트가 멈추지 않고, 실패 사실이 로그나 시트에 기록된다.

    안 될 때계속 실패한다면 짧은 시간에 너무 많이 호출해 한도를 넘겼을 수 있다. 잠시 기다렸다가 다시 실행하고, 호출 빈도를 낮춘다.

  8. 8. (선택) 매일 자동으로 쌓이게 만들기

    • 04차시에서 익힌 트리거 설정 방법으로, 이번 스크립트를 매일 정해진 시각에 실행되도록 등록한다.
    • 하루 이틀 지난 뒤 시트에 날짜별로 데이터가 실제로 쌓이고 있는지 확인한다.

    예상 결과트리거 목록에 등록되고, 다음날 시트에 새 행이 자동으로 추가되어 있다.

    안 될 때트리거는 등록됐는데 데이터가 안 쌓이면, 왼쪽 '실행' 메뉴에서 트리거 실행 기록에 에러가 있는지 확인한다.

06실전 프롬프트

P5-1API 문서 요약 부탁할 때

사용 시점 — 실습 3단계 — 문서에서 필요한 정보만 추려낼 때

아래는 내가 쓰려는 API의 공식 문서 내용이야.

[문서 페이지 내용을 그대로 붙여넣기]

여기서 다음 세 가지만 정리해줘.
1. 요청을 보내는 주소(엔드포인트)
2. 꼭 필요한 파라미터와 각각의 의미
3. 응답이 어떤 JSON 모양으로 오는지 예시

그리고 하루/분당 호출 가능한 횟수 제한이 문서에 적혀 있으면 같이 알려줘.

기대 결과엔드포인트, 필수 파라미터, 응답 예시, 호출 한도가 정리된 답을 받는다.

P5-2첫 호출 코드 요청하기

사용 시점 — 실습 4단계 — API를 처음 호출하는 Apps Script 코드를 요청할 때

구글 시트 Apps Script에서 외부 API를 호출하려고 해.

API 주소: [엔드포인트]
필요한 파라미터: [파라미터 목록]
API 키는 스크립트 속성(Script Properties)에 [API_KEY]라는 이름으로 저장해뒀어.
코드에 키 값을 직접 적지 말고, 스크립트 속성에서 불러와서 써줘.

UrlFetchApp으로 요청을 보내고, 받은 응답을 실행 로그에 그대로 찍어서
내가 눈으로 확인할 수 있게 해줘.

기대 결과키를 코드에 노출하지 않고 스크립트 속성에서 불러와 API를 호출하는 코드를 받고, 응답을 로그로 확인할 수 있다.

P5-3필요한 값만 뽑아내기

사용 시점 — 실습 5단계 — 응답 JSON에서 원하는 값만 골라낼 때

방금 실행 로그에 이런 JSON이 찍혔어.

[로그에 찍힌 JSON 붙여넣기]

여기서 [원하는 값, 예: 날짜와 환율 수치]만 뽑아서
로그에 깔끔하게 출력하는 코드로 고쳐줘.

기대 결과JSON 전체가 아니라 필요한 값만 골라 출력하는 코드를 받는다.

P5-4인증/호출 에러가 났을 때 복구용

사용 시점 — 실습 4단계 — 로그에 401, 403, 429 같은 에러 코드가 찍힐 때

API를 호출했더니 이런 응답(또는 에러)이 왔어.

[에러 메시지 또는 응답 코드 전체 붙여넣기]

내가 한 것: [실행한 순서]
스크립트 속성에 등록한 키 이름: [예: API_KEY]

이 에러가 인증 문제인지, 파라미터 문제인지, 호출 한도 초과인지
먼저 구분해서 설명해주고, 고친 코드를 줘.

기대 결과에러 원인(인증/파라미터/한도 초과 등)을 진단받고, 수정된 코드를 함께 받는다.

P5-5실패해도 안전하게 처리하기

사용 시점 — 실습 7단계 — 호출 실패에 대비한 코드를 보강할 때

지금 코드는 API 호출이 실패하면 스크립트가 그냥 멈춰버려.

호출이 실패했을 때
1. 스크립트가 멈추지 않고
2. 실패했다는 사실과 이유를 시트나 로그에 남기고
3. [정해진 횟수, 예: 3번]까지는 잠시 기다렸다가 다시 시도하도록

코드를 고쳐줘.

기대 결과실패 시에도 스크립트가 죽지 않고, 실패 기록과 재시도 로직이 추가된 코드를 받는다.

P5-6키를 코드에 실수로 적었을 때 정리하기

사용 시점 — 실습 중 또는 이후, 코드에 키를 직접 적어둔 것을 뒤늦게 발견했을 때

지금 코드를 보니 API 키를 코드 안에 그대로 적어놨어.

[키가 적힌 코드 부분 붙여넣기]

이 키를 스크립트 속성으로 옮기고,
코드에서는 스크립트 속성에서 불러오는 방식으로 고쳐줘.
그리고 이 키를 다른 사람이 이미 봤을 가능성이 있다면
어떻게 해야 하는지도 알려줘.

기대 결과키를 스크립트 속성으로 옮긴 코드와, 유출이 의심될 때의 재발급(rotate) 절차 안내를 받는다.

07이것만은 주의

08자가 점검

0 / 6 완료0%
x

09과제

자신의 업무나 관심 분야와 관련된 공개 API(환율, 날씨, 공공데이터 등) 하나를 골라, 이번 실습과 같은 흐름(키 발급 → 안전하게 보관 → 호출 → 필요한 값만 추출 → 시트에 쌓기)으로 데이터를 하루 이상 자동으로 쌓아본다.

제출 형식① 사용한 API 이름과 문서 링크 ② 데이터가 쌓인 시트 캡처(최소 2회 이상 실행분) ③ 스크립트 속성에 키를 저장한 화면 캡처(키 값은 가려도 됨) ④ 사용한 프롬프트와 AI 응답 요약을 하나의 문서로 정리해 제출한다.

10더 알아보기

  • 공공데이터포털무료로 API 키를 발급받을 수 있는 공공데이터 오픈 API 모음
  • UrlFetchApp 공식 문서Apps Script에서 외부 API를 호출하는 방법 참고용
엔드포인트(Endpoint)
API 요청을 보내는 주소.
JSON
API 응답에서 흔히 쓰이는, 중괄호와 대괄호로 데이터를 표현하는 형식.
사용량 한도(Rate Limit)
정해진 시간 안에 API를 호출할 수 있는 최대 횟수.

다음 차시 예고 다음 차시에서는 지금까지 기능 위주로 만들어온 화면을, 보기 좋고 신뢰감 있게 다듬는 디자인 원칙과 AI에게 디자인을 지시하는 법을 다룹니다.