インボイスの登録番号をWeb-APIで(第3回 4回シリーズ)
2023年09月05日 12:00 PM
tipsファイル
JSONを選んで何が悪い!編
インボイス番号(適格請求書発行事業者登録番号)をWeb-APIを利用して
国税庁の適格請求書発行事業者公表サイトから情報を取得してみよう
前回は「国税庁の適格請求書発行事業者公表サイト(以下公表サイト)」へ
「URLから挿入」スクリプトを使ってリクエストし、
その帰ってきたデータをJSONGetElement関数で必要なデータを取り出す。
そんな基本的なカスタムAppsを作成しました。
今回はそれらの内容についていくつかご説明をしたいと思います。
Web-API仕様書を入手しよう
上記「公表サイト」の「Web-API仕様書ダウンロード」の
「適格請求書発行事業者公表システムWeb-API機能のリクエストの設定方法及び提供データの内容について(Ver.1.0)(令和4年12月改訂)(PDF:717KB)」を
クリックしてWeb-APIの仕様書(k-web-api-kinou.pdf)を入手しましょう。
「URLから挿入」
仕様書を読むとリクエストのフォーマットがP2に記載されています。
- バージョン
これは「1」をセットします。
この機能のバージョンが2023年8月現在1.0のためです - アプリケーションID
届出を行い取得した値をセットします。
取得方法はこのブログの第1回をご参照ください。 - 登録番号 「T+13桁」
カンマ区切りで最大10件まで登録できます。 - 応答形式
「01」CSV 「11」XML 「21」JSON
このブログでは「21」JSONを選択します。 - 履歴情報
「0」履歴なし 「1」履歴あり
照会した組織等の情報の登録、取消、失効等の履歴情報を取得するかしないか。
今回は「0」を選択します。
取得する情報はCSV形式でもXML形式でもJSON形式でも、どれでも構いません。
JSON形式をご紹介する理由は、データがずらっとやってきたときにそれらを分解して、
適切なフィールドに配置するにはJSON形式が簡単だからという
私一個人の勝手な判断だからです。
また照会できる番号は10個まで可能となっていますが、
1件だけのデータを照会することとします。
また履歴情報は今回はなし「0」とします。
その結果「URLから挿入」の計算式は
“https://web-api.invoice-kohyo.nta.go.jp/1/num?id=” & 登録者番号照会::アプリケーションID &”&number=”&登録者番号照会::登録番号&”&type=21&history=0″
となります。
JSONGetElement関数
取得してきたJSONは以下のようなデータとなっています。
“divideNumber” : “1”,
“divideSize” : “1”,
“announcement” : [ {
“sequenceNumber” : “1”,
“registratedNumber” : “T4010401034922”,
“process” : “01”,
“correct” : “0”,
“kind” : “2”,
“country” : “1”,
“latest” : “1”,
“registrationDate” : “2023-10-01”,
“updateDate” : “2021-12-23”,
“disposalDate” : “”,
“expireDate” : “”,
“address” : “東京都港区南青山5丁目4番35号”,
“addressPrefectureCode” : “13”,
“addressCityCode” : “103”,
“addressRequest” : “”,
“addressRequestPrefectureCode” : “”,
“addressRequestCityCode” : “”,
“kana” : “”,
“name” : “株式会社イエスウィキャン”,
“addressInside” : “”,
“addressInsidePrefectureCode” : “”,
“addressInsideCityCode” : “”,
“tradeName” : “”,
“popularName_previousName” : “”
} ]
}
これらのリソース名(divideNumber とかdivideSizeとか)については
前述した「Web-API仕様書」のP32以降にすべて記載されています。
その中から今回のカスタムAppsに必要なリソース名を抽出して見ましょう。
カスタムAppsのフィールド名 公表システムリソース名
「社名」 「name」
「住所」 「address」
「登録日」 「updateDate」
となっている事が分かります。
もちろんその他のデータを取得したい場合はフィールドを準備し
リソース名を調べておけばよいと思います。
さて前置きが長くなりましたが取得したJSONデータは
「結果表示」フィールドに格納されているので
JSONGetElement関数で必要なデータを取得してきます。
JSONGetElement ( 登録者番号照会::結果表示 ; “announcement[0].name” )
これは「登録者番号照会テーブルにある結果表示フィールドの内容」が抽出の対象。
そのデータの中で「「announcement」システムリソース(オブジェクト)
配列の1番目(1番目ですが指定は「0」です)の中にある
「name」システムリソース(オブジェクト)のデータを抽出しなさい」
という意味です。
のこり2つのデータも同様に
JSONGetElement ( 登録者番号照会::結果表示 ; “announcement[0].address” )
JSONGetElement ( 登録者番号照会::結果表示 ; “announcement[0].updateDate” )
のように抽出します。
データの格納(フィールド設定)
前述のJSONGetElement関数ではデータを抽出しますが、
それを格納する場所が有りません。
もちろんそれぞれのフィールドに計算設定をしてもよいのですが、
Web-API仕様に修正が入った場合等メンテナンス性には問題があります。
そこでフィールド設定でデータを一度に各フィールドに格納してしまいましょう。
ターゲットフィールド 「社名」
計算結果 JSONGetElement ( 登録者番号照会::結果表示 ; “announcement[0].name” )
としてフィールド設定のスクリプトを作成します。
同様にそれぞれターゲットフィールドを「住所」「登録日」
計算結果の最後をそれぞれ「address」「updateDate」に変更します。
JSONGetElement ( 登録者番号照会::結果表示 ; “announcement[0].address” )
JSONGetElement ( 登録者番号照会::結果表示 ; “announcement[0].updateDate” )
以下ご利用にあたって
とりあえずこれで補足説明をおしまいにしたいと思います。
再度に注意点をいくつか。
このプログラムを利用するにあたってはこのブログの初めに記載した「公表サイト」にある
コンテンツ利用についての利用規約
https://www.invoice-kohyo.nta.go.jp/terms-of-use.html
およびWeb-APIの利用規約
https://www.invoice-kohyo.nta.go.jp/web-api/riyou_kiyaku.html
をよくお読みください。
例えばサイトではスクレイピング(自動的にサイトを巡回して
データを取得するプログラムを利用する事)の利用が禁止されていることや、
Web-APIを利用するにあたっては必要書類を用意して国税庁に申請し、
承認された場合に初めてアプリケーションIDが発行されることなどが記載されています。
またこのプログラムを利用して取得したデータについては
国税庁も弊社も信頼性を保証するものではないことをご理解・ご納得の上ご利用ください。
さて次回最終回は
インボイスの登録番号をWeb-APIで(第4回 4回シリーズ)
もう少しカスタムAppsらしく作ってみよう!編
インボイス番号(適格請求書発行事業者登録番号)をWeb-APIを利用して
国税庁の適格請求書発行事業者公表サイトから情報を取得してみよう
をお楽しみに。