Looker Studio API 연동으로 Narwhal API 사용하기

Google 스프레드시트를 거치면 Narwhal의 공휴일, 발표일, 경제 데이터, 원자재, FX, 예측 데이터를 Looker Studio에서 차트로 만들 수 있습니다. Apps Script가 API 키로 시트에 데이터를 가져오고, Looker Studio는 그 시트를 데이터 소스로 사용합니다. 매일 실행되는 트리거가 Brent, 환율, 예측 시장 확률 행을 추가합니다.

설정할 내용

Looker Studio는 Narwhal 데이터가 들어 있는 Google 스프레드시트에 연결됩니다. 분야마다 탭을 하나씩 사용하고, Apps Script로 API 응답을 해당 탭에 가져옵니다. 매일 실행하는 스크립트는 Brent, FX, Fed라는 이름의 탭을 사용하며, 공휴일, 발표일, CPI는 각자의 탭을 사용해 Google 스프레드시트 튜토리얼에서 다룹니다. Narwhal의 경제 데이터에는 CPI, 인플레이션, GDP, 수익률이 포함되며, 여기서의 CPI 요청은 시트용 경제 데이터 샘플입니다.

API 키 설정

  1. 무료 키 만들기 narwhalapi.com/signup에서 계정을 만들고 API 키를 받으세요. Narwhal은 하나의 계정과 하나의 키로 모든 데이터 API를 이용하며, REST와 MCP도 같은 키를 사용합니다.
  2. 키를 Apps Script에 저장하기 Google 스프레드시트의 Apps Script 프로젝트에서 키를 스크립트 속성의 NARWHAL_API_KEY에 저장하세요. 스크립트는 요청할 때마다 이 속성을 읽습니다. 붙여 넣는 코드에는 키를 넣지 마세요.
  3. 시트 탭 준비하기 appendDaily가 사용하는 Brent, FX, Fed 탭과, 가져오려는 나머지 분야별 탭을 각각 만드세요. 각 행이 의도한 탭에 들어가도록 탭 이름은 스크립트와 같게 하세요.

시트를 Looker Studio에 연결하기

  1. 시트 채우기 데이터를 불러오려면 Google 스프레드시트 튜토리얼의 Apps Script 설정을 사용하세요. 그 pullAll() 함수가 공휴일, 발표일, CPI 탭을 채우며, 여기서는 일일 행 추가에 appendDaily를 사용합니다.
  2. 시트를 데이터 소스로 연결하기 Looker Studio에서 Google 스프레드시트를 데이터 소스로 연결하세요. 차트로 만들려는 분야의 탭을 사용하고, 분야마다 자체 탭으로 구분해 두세요.
  3. 시트에서 차트 만들기 그 탭의 데이터로 차트를 만드세요. 시계열이라면 탭을 비우지 말고 이전에 가져온 행을 남겨 둔 채, 예약된 가져오기마다 행을 하나씩 추가하세요.

코드로 데이터 가져오기

이 Apps Script를 데이터 탭이 있는 Google 스프레드시트에 추가하세요. 스크립트 속성에서 NARWHAL_API_KEY를 읽어 Authorization: Bearer YOUR_KEY 헤더로 https://api.narwhalapi.com에 보냅니다. 추가되는 각 행에는 가져온 날짜가 들어가고, 나머지 열에는 해당 분야의 값이 들어갑니다. Brent 행에는 현물 가격, FX 행에는 통화와 환율, Fed 행에는 회의 결정일과 동결 확률이 들어갑니다.

Apps Script, 하루에 한 행씩 추가
function appendDaily() {
  const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
  const get = (path) =>
    JSON.parse(
      UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
        headers: { Authorization: "Bearer " + key },
      }).getContentText(),
    );
  const book = SpreadsheetApp.getActiveSpreadsheet();
  const brent = get("/v1/commodities/spot/BRENT/USD");
  book.getSheetByName("Brent").appendRow([new Date(), Number(brent.price)]);
  const fx = get("/v1/fx/rates/USD?currencies=EUR,IDR").rates;
  fx.forEach((rate) =>
    book.getSheetByName("FX").appendRow([new Date(), rate.currency, Number(rate.rate)]),
  );
  const hold = get("/v1/predictions/policy-paths/federal-reserve").meetings[0];
  book
    .getSheetByName("Fed")
    .appendRow([new Date(), hold.resolves_at, Number(hold.p_hold)]);
}
// Holidays, releases and CPI change rarely: fill their tabs with pullAll() from
// the Google Sheets tutorial.

일정에 맞춰 실행하기

Apps Script에서 시간 기반 일일 트리거를 설정해 appendDaily를 실행하세요. 이 함수는 Brent 가격을 Brent에, 통화 환율을 FX에, 첫 번째 회의의 동결 확률을 Fed에 추가합니다. Looker Studio는 이 시트를 읽어 차트를 그립니다.

시계열을 만들려면 이전 행을 그대로 두세요. 탭을 비우면 차트가 이력에 쓰는 이전 가져오기 결과가 사라집니다. 공휴일, 발표일, CPI는 거의 바뀌지 않으므로 해당 탭은 Google 스프레드시트 튜토리얼의 pullAll()로 채우세요.

Looker Studio에서 공휴일 사용하기

2026년 미국 공휴일을 공휴일 탭으로 가져옵니다. 요청은 holidays를 반환하며, 각 항목에 date와 name이 들어 있습니다. Google 스프레드시트 설정에서는 pullAll()로 이 탭을 채웁니다. 차트가 시트에서 공휴일 날짜와 이름을 읽게 하려면 Looker Studio를 공휴일 탭에 연결하세요.

공휴일 가져오기
const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
const get = (path) =>
  JSON.parse(
    UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
      headers: { Authorization: "Bearer " + key },
    }).getContentText(),
  );
const holidays = get("/v1/calendars/holidays/USA/2026").holidays;

Looker Studio에서 발표일 사용하기

2026년 11월 미국 발표일을 발표일 탭으로 가져옵니다. countries=USA를 설정하고 start_date와 end_date로 기간을 지정하며, 이 요청처럼 limit=100을 사용하세요. releases를 읽으면 되고, 각 항목에는 at, period, topic, status가 있습니다. 이 탭에 발표 데이터를 채우려면 Google 스프레드시트 튜토리얼의 pullAll()을 사용하세요.

발표일 가져오기
const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
const get = (path) =>
  JSON.parse(
    UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
      headers: { Authorization: "Bearer " + key },
    }).getContentText(),
  );
const releases = get(
  "/v1/economics/calendar?countries=USA&start_date=2026-11-01" +
    "&end_date=2026-11-30&limit=100",
).releases;

Looker Studio에서 경제 데이터 사용하기

시작을 2025년 9월로 한 미국 CPI 관측값 요청을 사용하세요. observations를 읽고 각 관측값의 period와 value를 CPI 탭에 사용합니다. 공휴일, 발표일과 함께 이 탭을 채우는 방법은 Google 스프레드시트 튜토리얼의 pullAll() 함수입니다. CPI 시계열에는 Apps Script가 응답을 시트에 가져온 날짜가 아니라 관측값의 period를 사용하세요.

CPI 관측값 읽기
const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
const get = (path) =>
  JSON.parse(
    UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
      headers: { Authorization: "Bearer " + key },
    }).getContentText(),
  );
const observations = get(
  "/v1/economics/USA/cpi/observations?start=2025-09",
).observations;

Looker Studio에서 원자재 사용하기

Brent 현물 가격을 USD로 가져와 응답의 price를 읽으세요. 일일 스크립트는 가져온 날짜와 그 가격을 Brent에 추가합니다. 현물 코드에는 예를 들어 XAU, XAG, XPT, XPD, XCU, BRENT, WTI가 있습니다.

Brent 가격 가져오기
const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
const get = (path) =>
  JSON.parse(
    UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
      headers: { Authorization: "Bearer " + key },
    }).getContentText(),
  );
const brent = get("/v1/commodities/spot/BRENT/USD");
brent.price;

Looker Studio에서 FX 사용하기

EUR와 IDR에 대한 USD 환율을 FX 탭으로 가져옵니다. 응답의 rates 배열을 읽고 각 항목의 currency와 rate를 가져오세요. 일일 스크립트가 통화별 환율을 가져온 날짜와 함께 추가하므로, 이 탭에는 시계열용 행이 쌓입니다.

환율 읽기
const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
const get = (path) =>
  JSON.parse(
    UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
      headers: { Authorization: "Bearer " + key },
    }).getContentText(),
  );
const rates = get("/v1/fx/rates/USD?currencies=EUR,IDR").rates;

Looker Studio에서 예측 데이터 사용하기

연방준비제도 정책 경로 응답을 가져와 meetings를 읽으세요. 각 회의에는 resolves_at, p_cut, p_hold, p_hike가 있습니다. 일일 스크립트는 첫 번째 회의를 사용해 그 결정일과 동결 확률을 가져온 날짜와 함께 Fed에 추가합니다. 인하 또는 인상 확률을 차트로 만들려면 예측 탭을 채울 때 같은 회의 응답에서 p_cut 또는 p_hike를 읽으세요.

예측 회의 가져오기
const key = PropertiesService.getScriptProperties().getProperty("NARWHAL_API_KEY");
const get = (path) =>
  JSON.parse(
    UrlFetchApp.fetch("https://api.narwhalapi.com" + path, {
      headers: { Authorization: "Bearer " + key },
    }).getContentText(),
  );
const meetings = get("/v1/predictions/policy-paths/federal-reserve").meetings;

왜 Google 스프레드시트를 거치나요?

Looker Studio의 기본 제공 커넥터에는 요청 헤더를 지정하는 필드가 없습니다. Narwhal 요청은 Authorization 헤더를 사용하므로, Apps Script가 요청을 처리해 응답 데이터를 Google 스프레드시트에 넣습니다. 그러면 Looker Studio가 그 시트를 데이터 소스로 연결합니다.

차트는 얼마나 최신인가요?

차트의 최신성은 마지막 트리거 실행 시점에 Looker Studio 자체의 데이터 캐시를 더한 만큼입니다. Apps Script가 시트에 데이터를 가져오는 시점은 일일 트리거가 정합니다. 시트 값이 차트에 나타나는 시점에는 Looker Studio의 캐시도 영향을 줍니다.

에 게시되었습니다.

다음 단계