Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Excel CData RESTドライバーを使用して、手軽にWeb API RESTエンドポイントからExcelにデータをロードする方法(Qiita REST APIを利用)

CDataでは、現在90種類ほどのサービスに接続できるドライバーを扱っていますが、まだまだWeb APIを提供しているサービスは多種多様に存在します。

そんなサービスにも柔軟に対応できるように、CDataではREST・JSONXMLを解釈して、SQL形式へ出力可能なDriverがあります!

今日はこのドライバーの基本的な使い方を、手軽に利用できるExcel Add-In for RESTを用いて、解説してみたいと思います!

www.cdata.com

ちなみに、この記事はCData Software User Group Advent Calendar 2017の6日目です!

qiita.com

対象のWeb APIサービスは?

さて、対象となるサービスですが、今回はエンジニアにはとても馴染み深いエンジニア向けBlogサービスであるQiitaのWeb APIにしてみました!

qiita.com

Qiita API v2 documentation - Qiita:Developer

ちなみに、JsonXMLを返してくれるHTTPサービスなら基本大丈夫ですが、テーブル形式に直すのに向き不向きはあるので、注意しましょう。(郵便番号のWeb APIとか、GIO系で1件しかデータを取得しないとか、都道府県を取得するためだけとか)

実装イメージは以下のような感じです。

f:id:sugimomoto:20171205002015p:plain

ポイントとなるのは、.rsdと呼ばれる、Jsonをどのように表形式へ出力するか等を定義したファイルです。

基本的にはRESTドライバーが自動生成してくれますが、この定義によって、どのようにJsonという表形式ではないデータを咀嚼し、一覧として出力するのかが決まります。

今回は、いろんな種類が存在するQiitaのWeb APIの中から、投稿を対象として、Excelにロードしてみました! もちろん、この方法を利用することで、ODBCJDBCからもQiitaの情報を扱えるようになります。

qiita.com

対象リソースは投稿情報にしてみました。

どうやってやるの?

事前にインストールが必要なのは、以下のExcel Add-In for RESTだけです。(30日間無償で利用できます)

www.cdata.com

インストール後、Excelを起動すると、以下のようにREST用のボタンが表示されるので、これをクリックします。

f:id:sugimomoto:20171205002027p:plain

接続ウィザードが表示されるので、以下の通り値を入力し、[OK]をクリックします。

Generate Schema Files:OnStart

Location:任意のフォルダパス(例:C:\CData_REST\Qiita)

このLocationに後ほど、rsd定義ファイルが生成されます。

f:id:sugimomoto:20171205002034p:plain

ダイアログが出てくるので、そのままOKをクリック。

f:id:sugimomoto:20171205002043p:plain

もう一度OKをクリック。

f:id:sugimomoto:20171205002047p:plain

続いて、どのリソースをテーブルとして定義するのかを決定します。

テーブル一覧にはまだ定義が作成されていないので、[新しいテーブルの定義]を選択して、構成していきます。

f:id:sugimomoto:20171205002052p:plain

[新しいテーブルの定義]入力画面が表示されるので以下のように各種パラメータを入力します。

Table Name:任意のテーブル名称(例:Items)

Format:JSON

URI:解析したいJsonデータを取得できるWeb API URI(今回は投稿の情報を取得したいのでhttps://qiita.com/api/v2/items

X Path:テーブルで行を識別するための、Jsonの繰り返し要素パス(今回は配列が最初に来るため、[/]を入力)

File Location:先程Locationに入力したものと同じファイルパス(例:C:\CData_REST\Qiita)

File Name:生成されるrsdファイルの名称(例:items.rsd)

f:id:sugimomoto:20171205002100p:plain

入力後、[作成]をクリックすると、RESTドライバーが対象Web APIから取得できるJsonを自動的に解釈し、項目を抽出してくれます。

以下のような感じで、列一覧が表示されればOKです! では、OKをクリックしてみましょう。

f:id:sugimomoto:20171205002106p:plain

Qiitaの記事一覧が取得できました! Excelエクスポートの機能が無いQiitaですが、これで手軽にExcelで分析することができます!

f:id:sugimomoto:20171205002114p:plain

生成されたRSDファイルの確認

上記の手順だけでも、ある程度のデータは取得できるよになりますが、各WebAPIの仕様でそれぞれ定義されている、ページングや階層構造をどのように表形式にするか等は設定されていません。

これを可能にするのが、前述したrsdファイルです。

QiitaのWeb APIへ接続後、プロパティに定義したフォルダを見ると、以下のようなファイルが生成されているのがわかるかと思います。

f:id:sugimomoto:20171205002132p:plain

内部は以下のようなXMLで記述されており、前半部分を見ると、JSON構造をどのように扱うことができるのかの記述が見て取れるものと思います。(<attr name="body" のあたりですね)

これに触れ始めると、とても今回のBlogでは書ききれないので、Helpを参照してみてください!

cdn.cdata.com

今後、少しずつサンプルも交えながら、解説していきたいなぁとは思います。

おわりに

いかがでしたでしょうか。

Web APIというと、どうしてもプログラム寄りな解釈が優先されてしまいますが、結局は何かと何か、ツールやサービス等を繋ぐためのインターフェースとして存在しているものです。

Excel addin RESTドライバーは手軽に利用できるツールなどで、是非一度試してみてください!