UiPath初心者が「インボイスWeb-API」を自動化してみた

はじめに

2023年10月より施行されるインボイス制度。免税の対象となる「適格請求書」の条件を満たすためには、請求書発行者の登録番号をはじめとした情報の記載が必須になります。
この登録番号をもとに、適格請求者の情報を得られる便利な仕組みがあるのをご存じでしょうか。
 
その名も、国税庁が提供する「インボイスWeb-API(以下、国税庁Web-API)」。
この国税庁Web-API単体での利用ももちろん可能ですが、UiPathと組み合わせて自動化することで、業務がより効率的に行えるようになります。
本記事では、Web-APIの仕組みからUiPathで国税庁Web-APIを活用する方法について解説します。
 

1.そもそもWeb-APIとは

Web-APIはAPI(Application Programming Interface)の一種であり、HTTP通信によってデータのやり取りをする仕組みのことを指します。
アクセスしたい情報やデータをリクエストとして送信すると、リクエストに対する結果やデータなどの情報がレスポンスとして返ってくる、という形式になっています。
 
この仕組みを活用すると、「とあるソフトウェアの機能を別のソフトウェアやサービスで使う」ということが可能になります。
具体的な活用例としては、以下があげられます。 
・Google Maps APIで地図機能やルート検索機能を追加
・Google、Facebook等のSNS認証を利用したログイン
・Amazonや楽天のアフィリエイトボタン
・オンライン決済
 
このようにWeb-APIは様々な分野や業界で活用されています。
 
詳しくはこちらの記事もご覧ください。

2.国税庁Web-APIとは?

2-1 国税庁Web-APIの概要

 
今回ご紹介する国税庁Web-APIは、国税庁が提供するWeb-APIの総称です。法人番号システムWeb-APIと適格請求書発行事業者公表システムWeb-APIの2種類があります。
法人番号システムWeb-APIでは法人の情報を、適格請求書発行事業者公表システムWeb-APIでは個人事業者や社団等の情報を得られます。
それぞれで得られる情報は以下の通りになっています。
 
 
国税庁Web-APIを利用するには、まずアプリケーションIDという認証情報を取得する必要があります。アプリケーションIDは、国税庁のウェブサイトから申請することができます。
(アプリケーションIDの発行に2週間から1か月程度かかるため、時間に余裕をもって申請されることをお勧めします!)
  
各バージョンで提供されている情報の取得方法は、次のとおりです。
・法人番号を指定して情報を取得する機能(Ver.1.0, 2.0, 3.0, 4.0)
・取得期間を指定して情報を取得する機能(Ver.1.0, 2.0, 3.0, 4.0)
・法人名を指定して情報を取得する機能(Ver.2.0, 3.0, 4.0)
  

 2-2国税庁Web-APIの利用方法

法人番号や登録番号、アプリケーションID等の情報をリクエストとして送信すると、法人や個人事業者の情報がレスポンスとして返ってきます。
法人番号と登録番号は併記が可能で、一回のリクエストで10件まで番号が指定できます。
 
 
リクエストのフォーマットは「https:// api/ houjin-bangou.nta.go.jp/ バージョン/ num?id =アプリケーション ID&number=番号(一件目),番号(二件目),…&type=応答形式変更履歴要否」となっています。
 
項目
項目値
説明
バージョン
1,2,3,4
利用したいバージョンの数値を入力
アプリケーションID
13桁のアプリケーションID
WEB API利用申請後にメールで通知されるIDを入力
法人番号・登録番号
13 桁の法人番号、もしくは登録番号
カンマ区切りで最大 10 件の番号を指定可能
応答形式
01もしくは02 : CSV 形式
11 : XML 形式
21 : Json 形式
レスポンスのファイル形式と文字コードを指定
変更履歴
0 : 変更履歴なし
1 : 変更履歴あり
公表情報の変更履歴を取得するかどうか指定
 
今回は弊社の法人番号と、UiPath株式会社、日本マイクロソフト株式会社の法人番号で「バージョン4、CSV形式、変更履歴あり」のリクエストを送信してみました。
レスポンスのCSVファイルを開くと、このような形で情報が書かれています。
 
 
この状態では少し扱いづらいので、UiPathで自動化しつつ見やすい形に整理してみましょう。
 

3.UiPathでWeb-APIを活用してみた

今回作ったプロセスは、HTTPリクエスト送信~レスポンスのデータを見やすく整理するという処理を行うものになります。
法人番号の入力と変更履歴の有無を選択するだけで、前章でお見せしたCSVファイルを以下のような形で整理してくれるロボットです。
 

 
このロボットの処理は大まかに三つに分類できます。

  1. リクエスト送信
  2. レスポンスの読み込み
  3. データを書き込み
本章では、それぞれの処理を掘り下げて解説します。
 

準備編

今回準備したものは、最後にデータを書き込むテンプレートのExcelファイル(以下テンプレートファイル)になります。
  
 
一行目に法人番号、取得日時、登録年月日、更新年月日、郵便番号、都道府県、市区町村、番地以下の項目をヘッダーとして設定してあります。
 

3-1 リクエスト送信

この処理では、Web-APIでリクエスト送信に必要な情報の入力要求とHTTPリクエスト送信、レスポンスデータの保存を行います。
今回は法人番号と変更履歴の有無を入力ダイアログで確認する仕様にしました。
 
 
変更履歴取得の有無はHTTPリクエストで”0””か”1”に設定する必要があるため、条件分岐で該当する数値を変数にセットします。
 
 
必要な情報がそろいましたので、HTTP要求ウィザードを設定します。
 
 
今回のエンドポイントは
"https ://api.houjin-bangou.nta.go.jp/4/num?id=(ID入力部分)&number="+ rqCoNum +"&type=01&history="+rqHistory
となっています。バージョン、id、リクエスト形式は直接入力で固定にし、法人番号と変更履歴取得の有無は先ほどの変数を利用し可変のものとしました。
次に、レスポンスデータのファイルを保存するための設定を応答タブ内で行います。
最下部「リソースをダウンロード」にチェックを入れ、保存先と保存名を設定します。
 
 
これでリクエスト送信の準備は完了です!
 

3-2レスポンスの読み込み

この処理では、保存したレスポンスデータのCSVファイルを読み込みます。
全体像はこんな感じ。
 
 
Excelプロセススコープを追加後、その中にエクセルファイルを追加アクティビティを追加します。
指定するファイルは、先ほどHTTP要求ウィザードで設定した保存先ファイルになります。
 
 
先ほどお見せしたものになりますが、レスポンスデータのCSVファイルはこのようになっています。
 
実際に読み込んでデータを取得する際には範囲を指定する必要があります。このCSVの場合は2行目から8行目にデータが入っているので、その範囲を指定することになります。
最下行は取得したーデータの件数によって変化しますが、UiPathではエクセルファイルの何行目までデータが入っているかを自動で判別することはできません。
そこで、データの読み込みの前に範囲を取得する処理を行います。
 
 
まず、範囲を読み込みアクティビティを追加。A列に入っているデータ[2023/08/14,1,2,3,4,5,6,7]を取得します。
次に、複数代入で範囲設定用の変数を準備します。開始行はリクエストの件数にかかわらず2行目となるため、strBol(Beggining of line = 開始行)は2に設定します。
最下行はstrEol(End of line = 終了行)とし、先ほど範囲を読み込みアクティビティで取得したデータを活用します。
respDataNumには[2023/08/14, 1, 2, 3, 4, 5, 6, 7]の8個のデータが入っており、データが入っている行数(1~8行目)のカウントと一致します。
これをstrEolに代入することで、最下行の設定が終わりました。
 
ここから、CSVファイルの情報を取得する処理に移ります。A列から順にデータを読み込み、データテーブル型の変数に代入していきます。
①A1セルを指定して取得日時を読み込み
②法人番号を読み込み
③会社名を読み込み
④登録年月日を読み込み
⑤更新年月日を読み込み
⑥郵便番号を読み込み
⑦都道府県を読み込み
⑧市区町村を読み込み
⑨番地以下を読み込み
※②~⑨の範囲を指定して読み込むものは、Rangeの部分を("B"+strBol+":B" +strEol)という記述にすることで先ほど取得した行数を反映できます。
 
 

3-3データを書き込み

この処理では、先ほどの手順でデータテーブル型の変数に代入したデータをシートに書き込みます。
Excelプロセススコープ内、取得したデータの読み込みに使ったエクセルファイルを追加アクティビティの下に、もう一つエクセルファイルを追加アクティビティを追加します。
指定するファイルは、準備編で作成したテンプレートファイルになります。
 
 
先ほどの読み込み処理と同じように、最初に書き込む範囲を取得します。
 
 
複数代入内の処理は
①記入範囲の開始行の取得
②今回取得したデータの個数取得
③記入範囲の終了行の取得
④記入範囲の開始行をString型に変換
⑤記入範囲の終了行をString型に変換
となっています。
 
①記入範囲の開始行の取得
最初にテンプレートファイルを読み込み、現在何行目までデータが記入されているかを取得します。(ロジックは読み込み時の範囲取得と同じ)
複数代入の一行目の右辺に”savedData.Rows.Count +1”を設定することで、データが入っている最下行の次を開始行に設定できます。
 
 
このファイルでいうと、データが入っているのが8行目まで。その一行下の9行目から新たに取得したデータを記入できるようになります。
②今回取得したデータの個数取得
終了行は開始行に今回取得したデータの個数を足すことで求めることができます。
読み込みの際に利用したrespDataNumには[2023/08/14, 1, 2, 3, 4, 5, 6, 7]の8個のデータが入っており、ここから2023/08/14の要素一つを除くことで7個のデータ=今回取得した情報の個数になります。
 
①、②、③は行数を数値として計算する必要があるためInt型、
④、⑤は範囲指定にString型の変数を使う必要があるため変換を行っています。
 
ここから、取得した情報を取得する処理に移ります。
①取得日時を書き込み
②法人番号を書き込み
③会社名を書き込み
④登録を書き込み
⑤更新を書き込み
⑥郵便番号を書き込み
⑦都道府県を書き込み
⑧市区町村を書き込み
⑨番地以下を書き込み
これらの処理は先ほどの読み込みと同じ要領で範囲を設定します。

 
以上が一連の流れになります。
出来上がったファイルは以下の通りです。
 
 

さいごに

今回は、国税庁Web-API機能を利用して、インボイス発行事業者の情報を自動的に取得し、見やすく整形するプロセスを作成しました。
インボイス制度に関する業務効率化や正確性向上に役立つほか、必要に応じて転記するデータの種類を増やしたり、社内データとの照合を行うなどの処理と組み合わせることで活用の幅も広がります。

弊社ではPower PlatformやRPA、OCRなどの導入支援・ライセンスの見積もり・チケット制によるサポートなど様々な対応が可能です。

業務効率化をご検討の際にはぜひこちらからお気軽にお問い合わせください!


最後までお読みいただきありがとうございました。

最新情報をお届けします!

RPAに関する最新コラムやイベント情報をメールで配信中です。
RPA領域でお仕事されている方に役立つナレッジになりますので、ぜび登録してください!

最新情報を受け取る方はこちら

もっと知りたい方はこちら


ページトップ