今日は、特許情報取得APIシリーズ第2回です。
本記事の内容
(1)JsonConverterの使い方がわかる。
(2)アクセストークンの抽出方法がわかる。
(3)経過情報の取得方法がわかる。
本記事の信頼性
この記事を書いている私は、中堅特許事務所でシステム管理者として17年間働いた経験があり特許事務作業の便利ツールに詳しいです。
前回記事の内容
-
コピペで使える。Excelマクロ×特許情報取得API・準備編(1)
続きを見る
1.JsonConverterの特許情報取得APIの利用申し込み
前回取得した認証データには、アクセストークン("access̲token")が含まれています。経過情報を取得には、このアクセストークンが必要となるため、アクセストークンを認証データから抽出する必要があります。
アクセストークンの抽出する方法は、いろいろありますがJsonConverterを使用する方法が一番簡単です。
出典
JsonConverterダウンロードサイト
ホームページ: https://github.com/VBA-tools/VBA-JSON/releases/tag/v2.3.1
JsonConverterのインストール方法は以下の通りです。
(1)ダウンロード
上記サイトから最新版の「Source code(zip)」をダウンロードする。
(2)Zip解凍
ダウンロードしたzipファイルを解凍して、「JsonConverter.bas」を取り出す。
(3)ドラッグ&ドロップ
「JsonConverter.bas」をプロジェクトエクスプローラーにドラッグ&ドロップする。
(4)参照設定
「ツール」>「参照設定(R)」から「Microsoft Scripting Runtime」にチェックを入れる。
これで導入は完了です。非常に簡単です。
2.マクロコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
Sub main() 'サーバーURL+parameter' Dim url As String url = "https://ip-data.jpo.go.jp/api/patent/v1/app_progress/2020008423" '上記urlは、特願2020-008423の経過情報を取得するものです。次回解説します。' 'アクセストークン取得' Dim accessToken As String accessToken = getAccessToken() Debug.Print "アクセストークン" & accessToken 'Request' Dim req As Object Set req = CreateObject("MSXML2.ServerXMLHTTP") req.Open "GET", url, False req.SetRequestHeader "Host", "https://ip-data.jpo.go.jp" req.SetRequestHeader "Authorization", "Bearer " & accessToken req.Send If req.Status = 200 Then Debug.Print "経過情報" & req.responseText Else Debug.Print "失敗" End If End Sub 'アクセストークンの取得' Function getAccessToken() As String '特許情報取得APIの利用者情報' Dim user As String Dim password As String Dim url As String user = "[利用者情報のIDを入力して下さい]" password = "[利用者情報のパスワードを入力して下さい]" url = "[トークン取得パスを入力して下さい]" 'Request' Dim payload As String payload = "grant_type=password&username=" & user & "&password=" & password 'response' Dim jsonObj As Object Set jsonObj = JsonConverter.ParseJson(postFunction(url, payload)) getAccessToken = jsonObj("access_token") End Function 'Post' Public Function postFunction(ByVal url As String, ByVal payload As String) As String Dim req As Object Set req = CreateObject("MSXML2.ServerXMLHTTP") req.Open "POST", url, False req.SetRequestHeader "Host", "https://ip-data.jpo.go.jp" req.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" req.Send payload If req.Status = 200 Then postFunction = req.responseText Else postFunction = "" End If End Function |
3.マクロ特徴
①44行目~46行目
JsonConverterを使用してアクセストークンを抽出しています。「jsonObj("access_token")」とするだけで取得できるので簡単ですね。
②13行目~18行目
main関数では、下記APIアクセスを再現しています。
具体的には、上記①で取得したアクセストークンを用いて下記表のHeaderを作成し、HttpメソッドGetで経過情報取得urlにリクエストしています。
3.マクロ実行結果
経過情報の取得が成功すると、Json形式のデータが返却されイミディエイトに下記のように表示されます。
以上、Excelマクロで特許情報取得APIを取得する方法を紹介しました。
次回は、特許情報取得APIを使って、実際に取得できるデータの内容を紹介します。
このブログではこれからもどんどん特許事務に役立つ情報を発信していきますのでご覧いただければと思います!