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キーを設定
- 無料キーを作成する narwhalapi.com/signup でアカウントを作成し、APIキーを取得します。Narwhal は1つのアカウントと1つのキーでデータ API 全体を利用でき、REST と MCP でも同じキーを使います。
- キーを Apps Script に保存する Google スプレッドシートの Apps Script プロジェクトで、キーをスクリプトプロパティの
NARWHAL_API_KEYに保存します。スクリプトはリクエストのたびにこのプロパティを読み取ります。貼り付けるコードにキーを書き込まないでください。 - シートのタブを用意する
appendDailyが使うBrent、FX、Fedタブと、取得したい残りの分野ごとの別タブを作成します。各行が意図したタブに入るよう、タブ名はスクリプトと同じにしてください。
シートを Looker Studio に接続する
- シートにデータを入れる データの読み込みには、Google スプレッドシートのチュートリアルの Apps Script の設定を使います。その
pullAll()関数が祝日、発表日、CPI のタブを埋めます。毎日の行の追加にはここでappendDailyを使います。 - シートをデータソースとして接続する Looker Studio で、Google スプレッドシートをデータソースとして接続します。グラフにしたい分野のタブを使い、分野ごとに専用のタブに分けておきます。
- シートからグラフを作る そのタブのデータをグラフに使います。時系列にする場合は、タブを消去せずに過去の取得分の行を残し、スケジュールされた取得のたびに1行追加します。
コードでデータを取得する
このApps Script を、データ用タブのある Google スプレッドシートに追加します。スクリプトプロパティから NARWHAL_API_KEY を読み取り、Authorization: Bearer YOUR_KEY ヘッダーとして https://api.narwhalapi.com に送信します。追加される各行には取得日が入り、残りの列にはその分野の値が入ります。Brent の行にはスポット価格、FX の行には通貨とレート、Fed の行には会合の決定日とホールドの確率が入ります。
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 を使ってください。
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 があります。
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 のキャッシュも影響します。
公開。