Looker Studio API で Narwhal API を使う

Google スプレッドシートを経由すれば、Narwhal の祝日、発表日、経済データ、コモディティ、FX、予測データを Looker Studio でグラフにできます。Apps Script が APIキーを使ってシートにデータを取り込み、Looker Studio がそのシートをデータソースとして使います。毎日のトリガーで、Brent、為替レート、予測市場のオッズの行が追加されます。

セットアップする内容

Looker Studio は、Narwhal のデータを保持する Google スプレッドシートに接続します。分野ごとに1つのタブを使い、Apps Script で API のレスポンスをそのタブに取り込みます。毎日実行するスクリプトは Brent、FX、Fed という名前のタブを使い、祝日、発表日、CPI はそれぞれ専用のタブを使って Google スプレッドシートのチュートリアルで扱います。Narwhal の経済データには CPI、インフレ、GDP、利回りが含まれ、ここでの CPI リクエストはシート用の経済データのサンプルです。

APIキーを設定

  1. 無料キーを作成する narwhalapi.com/signup でアカウントを作成し、APIキーを取得します。Narwhal は1つのアカウントと1つのキーでデータ 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. シートからグラフを作る そのタブのデータをグラフに使います。時系列にする場合は、タブを消去せずに過去の取得分の行を残し、スケジュールされた取得のたびに1行追加します。

コードでデータを取得する

このApps Script を、データ用タブのある Google スプレッドシートに追加します。スクリプトプロパティから NARWHAL_API_KEY を読み取り、Authorization: Bearer YOUR_KEY ヘッダーとして https://api.narwhalapi.com に送信します。追加される各行には取得日が入り、残りの列にはその分野の値が入ります。Brent の行にはスポット価格、FX の行には通貨とレート、Fed の行には会合の決定日とホールドの確率が入ります。

Apps Script: 1日1行を追加する
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 のキャッシュも影響します。

公開。

次のステップ