Azure Workbooks コストAPIの日付指定部分を可変パラメータにする

Azure WorkbooksからAzure のコストAPI を利用する際、日付パラメータを可変にしようとして自分が躓いた内容を紹介します。

まず、

Azure WorkbooksからAzure Cost Managementを利用する

という過去Blogの、以下1,2の部分がベースとなっています。

1.Workbook上でクエリのベース部分を作成する

2.パラメータの追加

上記を実施することで基本的なクエリとパラメータの設定が完了します。ここから、クエリがパラメータに応じて動的に更新されるようにしていきます。

本記事ですが、以下のような構成となっています。

3.日付指定クエリへの変更

4.日付パラメータの追加

【解説】何故JSON形式で日付パラメータを作っているのか

【解説】変数にどのような値が取得できているか確認するには

5.日付パラメータの追加(複製からの追加)

「3」と「4」 の間に解説が入っています。

3.日付指定クエリへの変更

過去Blogのとおり設定した場合、コストクエリの、ボディ 部分は以下のようになっているはずです。
API リクエストボディの timeframe パラメーター では、”MonthToDate” が指定されています。”MonthToDate” は今月の金額を取得できる値ですが、「過去のある時点」をピンポイントで指定したい場合どうすればよいのでしょうか。

timeframe部分を以下のように変更することで可能です。一旦、日付指定をハードコーディングする形で実施して、そこから可変の値とすることを試みるのが良いと思います。

    “timeframe”: “Custom”,
    “timePeriod”: {
    “from”: “2026-04-01T00:00:00Z”,
    “to”: “2026-04-30T00:00:00Z”

“timeframe”部分を”Custom” で指定し、その下に”timePeriod” パラメータを追加し、日付を指定します。記載後、「クエリの実行」で動作を確認してください。コストデータが取得できていれば、正しく記載できています。

正しくデータ取得が出来た場合、ハードコーディングした日付の部分を変数に置き換えていきます。

  “timeframe”: “Custom”,
  “timePeriod”: {
    “from”: “{StartYear1}-{StartMonth1}-{StartDate1}T00:00:00Z”,
    “to”: “{EndYear1}-{EndMonth1}-{EndDate1}T00:00:00Z”
  },

日付の部分を、それぞれ、6つの変数に置き換えました。YearやDateの部分は無理に可変にしなくても良いと思います。日付指定でピンポイントでデータを取得したかったため、変数を6つとしました。

変数に書き換えた後、一旦このクエリは保存しておきます。
この時点では、変数が設定されていない為、クエリはエラーとなりますが、気にせず保存します。

4.日付パラメータの追加

クエリで指定した以下変数のパラメータを作成していきます。

{StartYear1}
{StartMonth1}
{StartDate1}
{EndYear1}
{EndMonth1}
{EndDate1}

ここではパラメータ変数を一つづつ、JSON形式で記載していきますが、何故そのような方式で記載する必要があるのかは、

【解説】何故JSON形式で日付パラメータを作っているのか

に記載しています。日付パラメータを可変にする という具体的な手順は次の①から記載しています。具体的な手順の前に先に解説を見ていただいても結構です。

①workbookの編集ボタンから、「パラメータの追加」をクリックします。

②「パラメータの追加」をクリックします。

③以下のようにパラメータを設定し、「保存」ボタンをクリックします。

パラメータ名:StartYear1
表示名:StartYear
パラメータの型:ドロップダウン
データの取得元:JSON
JSON入力:以下の値を入力

[
  {“value”: “2024”, “label”: “2024”},
  {“value”: “2025”, “label”: “2025”},
  {“value”: “2026”, “label”: “2026”},
  {“value”: “2027”, “label”: “2027”},
  {“value”: “2028”, “label”: “2028”},
  {“value”: “2029”, “label”: “2029”},
  {“value”: “2030”, “label”: “2030”}
]

ドロップダウンに含める:「任意の一個」にチェック

④パラメータ「StartYear1」が表示されいると思います。続けて、再度「パラメータの追加」をクリックします。

⑤以下のようにパラメータを設定し、「保存」ボタンをクリックします。

パラメータ名:StartMonth1
表示名:StartMonth
パラメータの型:ドロップダウン
データの取得元:JSON
JSON入力:以下の値を入力

[
  {“value”: “01”, “label”: “01”},
  {“value”: “02”, “label”: “02”},
  {“value”: “03”, “label”: “03”},
  {“value”: “04”, “label”: “04”},
  {“value”: “05”, “label”: “05”},
  {“value”: “06”, “label”: “06”},
  {“value”: “07”, “label”: “07”},
  {“value”: “08”, “label”: “08”},
  {“value”: “09”, “label”: “09”},
  {“value”: “10”, “label”: “10”},
  {“value”: “11”, “label”: “11”},
  {“value”: “12”, “label”: “12”}
]

ドロップダウンに含める:「任意の一個」にチェック

⑥パラメータ「StartMonth1」が表示されいると思います。続けて、再度「パラメータの追加」をクリックします。

⑦ 以下のようにパラメータを設定し、「保存」ボタンをクリックします。

パラメータ名:StartDate1
表示名:StartDate
パラメータの型:ドロップダウン
データの取得元:JSON
JSON入力:以下の値を入力

[
  {“value”: “01”, “label”: “01”},
  {“value”: “02”, “label”: “02”},
  {“value”: “03”, “label”: “03”},
  {“value”: “04”, “label”: “04”},
  {“value”: “05”, “label”: “05”},
  {“value”: “06”, “label”: “06”},
  {“value”: “07”, “label”: “07”},
  {“value”: “08”, “label”: “08”},
  {“value”: “09”, “label”: “09”},
  {“value”: “10”, “label”: “10”},
  {“value”: “11”, “label”: “11”},
  {“value”: “12”, “label”: “12”},
  {“value”: “13”, “label”: “13”},
  {“value”: “14”, “label”: “14”},
  {“value”: “15”, “label”: “15”},
  {“value”: “16”, “label”: “16”},
  {“value”: “17”, “label”: “17”},
  {“value”: “18”, “label”: “18”},
  {“value”: “19”, “label”: “19”},
  {“value”: “20”, “label”: “20”},
  {“value”: “21”, “label”: “21”},
  {“value”: “22”, “label”: “22”},
  {“value”: “23”, “label”: “23”},
  {“value”: “24”, “label”: “24”},
  {“value”: “25”, “label”: “25”},
  {“value”: “26”, “label”: “26”},
  {“value”: “27”, “label”: “27”},
  {“value”: “28”, “label”: “28”},
  {“value”: “29”, “label”: “29”},
  {“value”: “30”, “label”: “30”},
  {“value”: “31”, “label”: “31”}
]

ドロップダウンに含める:「任意の一個」にチェック

⑧設定保存と確認
最終的に以下3つのパラメータが表示されていると思います。表示を確認後、「編集完了」をクリックします。

以下のようなドロップダウンパラメータが追加されたでしょうか?

これでクエリに使用した以下6つの変数のうち、Start****の3つのパラメータ作成が完了しました。

{StartYear1}
{StartMonth1}
{StartDate1}
{EndYear1}
{EndMonth1}
{EndDate1}

【解説】何故JSON形式で日付パラメータを作っているのか

JSON形式で日付パラメータを手動作成していることについて、当然、疑問を感じると思うのでそのことについて解説します。

Workbook のパラメータには 「時間範囲の選択」(Time range picker) という種類があり、「ユーザー設定の時間範囲の選択を許可する」のチェックを入れておけば、カレンダーから日付指定が簡単にできます。手間のかかるJSONでわざわざ直接日付を指定するようなことはない、、と思われるかもしれません。

しかし、Cost API における(クエリの POST Bodyの) 時間指定部分の記載(timePeriod.from / timePeriod.to)は、ISO 8601 形式の date-time 文字列 (例 : “2026-03-01T00:00:00Z”) を前提として解釈される動作となっています。一方、Workbook の 「時間範囲の選択」(Time range picker)パラメータ では、{TimeRange:start} / {TimeRange:end} がローカライズされた日時文字列 (例 : “3/20/2019 4:18 PM” のような形式) として展開されます。このため、「時間範囲の選択」(Time range picker)でパラメータを作成して、Cost API側のクエリで利用してようとしても、両者のフォーマット不一致によりエラーとなるのです。

実際に見てみましょう。

例えば、「時間範囲の選択」(Time range picker)を利用して以下のようなパラメータを作成し、指定するとします。カレンダーからの日付選択で非常に指定しやすいです。

この後、上記画像のように指定したパラメータに実際にどんな値が入るか見てみます。

【解説】変数にどのような値が取得できているか確認するには

workbookにてパラメータで設定した変数にどのような値が入っているのか確認する場合、
「テキストの追加」を利用するのが最も手軽です。以下その手順です。
「編集」>「追加」>「テキストの追加」をクリックします。

Markdown形式で変数の値を記載していきます。今回、確認したい変数は、{StartDate_test}である為、StartDate_test:{StartDate_test} 

と記載しています。また、workbookの「時間範囲の選択」パラメータで設定した変数では、「:start」「:end」という記載を付与することでその変数のプロパティにアクセスすることができます。

{StartDate_test:start} とすることで開始時刻が取得でき、

{StartDate_test:end}  とすることで終了時刻が取得できます。
こちらの内容も含めてMarkdownテキスト内に以下のように記載します。これを保存して、該当の変数を指定すると、

実際に変数に格納されている値が以下のように確認できます。

変数の中身を確認すると、「時間範囲の選択」(Time range picker)パラメータで設定した値は、

2026/4/1 11:28 – 2026/4/30 11:28

となっており、Cost API における(POST Bodyにおいて)求められる形式ではないことがわかります。

このまま、Cost APIで利用しようとしても、クエリの実行でエラーとなります。

以上JSON形式で日付パラメータを作成している理由を記載しました。
この部分、長々と記載したのは、カレンダーから日付を選択できる方が便利ですし、この日付指定が使えないはずがない、と思いこんでしまい、非常に無駄な努力を重ねたからです。AI に聞いても、「こうすればできる」という書き方をいろいろと提示してくれる為、多くの時間を費やしてしまいました。しかし、試行錯誤を繰り返した結果、現時点では、Cost APIの日付指定をJSON形式で直接記載する以外、日付指定を可変にする方法はない、ということがわかりました。
もちろん、JSON形式で直指定なので、ここまで紹介してきた方法だと、存在しない日付指定もできてしまいます。(プルダウンから選択する形なので、「2月30日」という指定もできてしまうのです)このあたりは上手く解決する方法がありそうですが、対応はできていません。

5.日付パラメータの追加(複製からの追加)

さて、「4.日付パラメータの追加」が完了したら

{StartYear1}
{StartMonth1}
{StartDate1}
までの変数が準備できたこととなります。残りの、

{EndYear1}
{EndMonth1}
{EndDate1}

という変数を準備していきます。「Start****」のパラメータが作成済みであれば、workbookの「クローン」から既存パラメータがコピー可能です。
作成済みの「Start****」パラメータ編集ボタンとなりの「…」から「クローン」をクリックします。

Start という表記を全て End にして、編集完了します。

End***というパラメータとしてコピーできていれば設定完了です。

ここまで設定できていれば、「1.Workbook上でクエリのベース部分を作成する」にて作成したクエリが、エラーにならずに値を返してきているはずです。

    “from”: “{StartYear1}-{StartMonth1}-{StartDate1}T00:00:00Z”,
    “to”: “{EndYear1}-{EndMonth1}-{EndDate1}T00:00:00Z”
部分でパラメータから値が渡されている為、コストAPI実行結果が返ってきていることが確認できるはずです。

以上、「コストAPIの日付指定部分を可変パラメータに変更する」という方法を解説しました。

非常にピンポイントな解説とはなりましたが、workbookでパラメータを利用する際に応用できる部分もあると思います。なんらかの手助けになれば幸いです。

いいね (←参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルクロステクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください