Office関連

RESAS-APIをVBAから呼び出す方法

下記記事の通り「地域経済分析システム RESAS」のAPIが公開されたので、さっそくVBAから使ってみました。

内閣官房 まち・ひと・しごと創生本部事務局と内閣府 地方創生推進室は、地域経済分析システム「RESAS(リーサス)」のAPI(RESAS-API)を11月1日に公開した。登録を行えば、誰でも無料で利用できる。

https://codezine.jp/article/detail/9792 より

APIの利用登録

RESAS-APIを使うには、まず利用登録をする必要があります。

  1. https://opendata.resas-portal.go.jp/ にアクセスし、「RESAS-API利用登録(無料)」をクリックします。
  2. resas-api_01_01

  3. RESAS-API利用登録画面が表示されたら、メールアドレスや氏名、利用目的といった必要事項を入力し、「入力内容確認」ボタンをクリックします。
  4. resas-api_01_02

    登録画面は黒背景でカッコイイのですが、プルダウン項目が非常に見づらかったです(Firefox利用)。

  5. 入力したメールアドレス宛に、すぐに利用登録仮完了の案内メールが届きます。私が登録したときはメールが“迷惑メール”として引っ掛かってしまったので、このメールが届かない方は一度迷惑メールフォルダを確認してみてください。
  6. resas-api_01_03

  7. 利用登録仮完了の案内メールに記載されたURLを開き、登録を完了します。
  8. resas-api_01_04

  9. 無事に利用登録が完了すると、画面にAPIキーが表示されます。このAPIキーはメールで送られてこないので、忘れずにコピーしておきましょう。
  10. resas-api_01_05

APIの利用方法

APIの利用方法は下記Webページに詳しく記載されています。

エンドポイント(https://opendata.resas-portal.go.jp)にGETでリクエストを投げるだけなので、非常に使いやすいです(レスポンスはJSON形式)。

注意点としては、リクエストを投げる際にヘッダー「X-API-KEY」(値は上記手順で取得したAPIキー)を付けることです。
これがないと403エラーが返ってきてしまいます。

RESAS-APIを呼び出すVBAコード

というわけで、さっそくVBAマクロからAPIを呼び出してみたいと思います。

※ 下記コードはScriptControlを利用しているため、64ビット版のOfficeでは動作しません。

Option Explicit

Public Sub Sample()
'RESAS-APIを使って都道府県一覧を取得
  Dim url As String
  Dim jso As Object
  Dim result As Object
  Dim itm As Object
  Const api_key As String = "(取得したAPIキー)"
  
  url = "https://opendata.resas-portal.go.jp/api/v1-rc.1/prefectures"
  Set jso = GetResasResponse(url, api_key)
  If Not jso Is Nothing Then
    On Error Resume Next
    Set result = VBA.CallByName(jso, "result", VbGet)
    On Error GoTo 0
    If Not result Is Nothing Then
      For Each itm In result
        Debug.Print "都道府県コード:" & VBA.CallByName(itm, "prefCode", VbGet) & vbTab & _
                    "都道府県名:" & VBA.CallByName(itm, "prefName", VbGet)
      Next
    End If
  End If
End Sub

Private Function GetResasResponse(ByVal url As String, _
                                  ByVal api_key As String) As Object
  Dim js As String
  Dim jso As Object
  
  On Error Resume Next
  With CreateObject("WinHttp.WinHttpRequest.5.1")
    .Open "GET", url, False
    .SetRequestHeader "X-API-KEY", api_key
    .Send
    If .Status = 200 Then
      js = "(" & .ResponseText & ")"
      With CreateObject("ScriptControl")
        .Language = "JScript"
        Set jso = .CodeObject.eval(js)
        Select Case Left(VBA.CallByName(jso, "statusCode", VbGet), 1)
          Case "4", "5" '4xx Client Error, 5xx Server Error判定
            MsgBox js, vbExclamation + vbSystemModal, "Error"
            Exit Function
        End Select
      End With
    End If
  End With
  On Error GoTo 0
  Set GetResasResponse = jso
End Function

上記コードを実行すると、問題なくAPIの呼び出しが行われれば、下図のように都道府県の一覧がイミディエイト ウィンドウに出力されます。

resas-api_01_06

上記は単に都道府県名を取得しただけですが、「API一覧」を見る限り、特許一覧や人口ピラミッドなど、かなりの情報を取得することができるようです。

RESASで何ができるか、分かりやすく解説されたマンガ(下記)もあるので、興味がある方はご参照ください。

RESASまんがブックレット「そうだったのか!RESASでわかる私たちの地域」 – まち・ひと・しごと創生本部
http://www.kantei.go.jp/jp/singi/sousei/resas/information/index_manga_booklet.html

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

おすすめ記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP