PowerAppsでJSONデータにある取りたい値を取得する方法
社内の書籍管理アプリを徐々に形にしていっています。
その中でJSONデータから値を取得したい部分があったので取得方法です。
例のごとくこれも悩みました・・・
どんなJSONデータを取得するのか
書籍管理のため、今回はGoogle Books APIを利用します。
ユーザ登録等なしで利用できるのでとても簡単です。
まずはテストしてみます。
下記のURLをブラウザにいれてみてください。
https://www.googleapis.com/books/v1/volumes?q=isbn:9784822253691
ISBNコードが、9784822253691の書籍データの情報が表示されたと思います。
このデータを利用していきます。
カスタムコネクタをまず作成する必要があるのですが、その方法は別記事にします。
取得した値をコレクションに入れる
下記のような感じで、コレクションに取得したJSONデータをいれます。
ClearCollect(Book, JSONDATA))
Bookというコレクション名の中にこれでJSONDATAが入りました。
どんな風になったかを確認します。
今回取得したい値
今回取得したい値は、本のタイトル、著者、出版日付です。
どこにデータがあるのかを確認します。
たどっていくと、Book -> items -> volumeinfo にあるtitleという項目のようです。
取得するための数式
Lookup関数を利用して、下記のようにすることで値が取得できました。
LookUp(LookUp(Book,true,items).volumeInfo,true,volumeInfo).title
LookUp関数による検索結果をすべての条件としJSON上の配列をたどっていきます。
Lookupを複数回組み合わせることで最終的なValue値を取得することができました。
取得したのはここの部分です。
著者情報取得LookUp数式
その他著者情報を取得した場合の数式は下記になります。
LookUp(LookUp(LookUp(Book,true,items).volumeInfo,true,volumeInfo).authors,true,Value)
出版日付取得LookUp数式
Text(LookUp(LookUp(Book,true,items).volumeInfo,true,volumeInfo).publishedDate,ShortDate)
Lookup関数
LookUp 関数は、テーブル内で数式を満たす最初のレコードを検索します。とのことです。(MS公式より)
コレクションにはAPIから返ってきたデータが複数ありますが、そのうちの最初の1行を取得しています。
JSONデータがうまく扱えるとPowerAppsでできる幅が広がりますね。
無料プランだとカスタムコネクタが1個しかつくれないのが悲しいです・・・。