ブログ

国税庁法人番号Web-APIを使ってみた-AutoMateで実装

今回は「国税庁法人番号Web-APIを使ってみた-概要と準備」の続きでRPAツールであるAutoMateでの実装例のご紹介です。まずはAutoMateでの実装解説前に以下3つのAPI機能を試してみます。

1.法人番号を指定して情報を取得
2.取得期間を指定して情報を取得
3.法人名を指定して情報を取得

API仕様は「Web-APIのリクエストの設定方法及び提供データの内容について(概要編)」に詳しく説明がありますので、今回は典型的な例と思えるパラメータ設定で試してみます。

1.法人番号を指定して情報を取得

下記は法人番号を意味するnumberに弊社法人番号7010001036184指定し、ファイル形式がcsvでExcel表示で文字バケしないようにコードをsjisで要求したいのでtype=01、履歴も欲しいのでhistory=1とした例です。idは事前に取得のアプリケーションIDです。

https://api.houjin-bangou.nta.go.jp/4/num?id=xxxxxxxx&number=7010001036184&type=01&history=1

APIのHTTPメソッドはgetなので、手っ取り早く試したい場合、上記URLをWebブラウザのURL欄に入力しEnterキーで実行すると「num.csv」と言う名前でcsvファイルがダウンロードされます。

以下はcsv内容です。

2.取得期間を指定して情報を取得

下記は2023年3月15日から16日まで期間指定し、ファイル形式がcsvでExcel表示で文字バケしないようにコードをsjisで要求したいのでtype=01とした例です。idは事前に取得のアプリケーションIDです。

https://api.houjin-bangou.nta.go.jp/4/diff?id=xxxxxxxx&from=2023-03-15&to=2023-03-16&type=01

先に解説した「1.法人番号を指定して情報を取得」の場合と同様に、このURLを任意のWebブラウザのURL欄に入力し実行すると「diff.csv」と言う名前でcsvファイルがダウンロードされます。
下記はcsv内容です。

前回ブログ「国税庁法人番号Web-APIを使ってみた-概要と準備」の「分割数の考慮」でも解説しました通り明細レコードが2000行を超えると2000行単位で分割されます。ですので1行目のヘッダー記載の分割数に注目し、残りの明細を別途要求する必要があります。今回例の場合、全体4576行で3分割されています。残り2つ目を要求するためdivide=2とし2001行目から要求する例は以下です。

https://api.houjin-bangou.nta.go.jp/4/diff?id=xxxxxxxx&from=2023-03-15&to=2023-03-16&type=01÷=2

残り3つ目を要求するためdivide=3とし4001行目から要求する例は以下です。

https://api.houjin-bangou.nta.go.jp/4/diff?id=xxxxxxxx&from=2023-03-15&to=2023-03-16&type=01÷=3

3.法人名を指定して情報を取得

下記は法人名を意味するnameに弊社名一部である「アルファー」と指定した例です。ファイル形式はcsvでExcel表示で文字バケしないようにコードをsjisで要求したいのでtype=01としました。idは事前に取得のアプリケーションIDです。

nameは事前にURLエンコードが必要なため「アルファー」をURLエンコードした%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%BCを指定しています。

https://api.houjin-bangou.nta.go.jp/4/name?id=xxxxxxxx&name=%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%BC&type=01

下記は実行結果name.csv内容です。ご覧のようにアルファーを含む法人名が814社取得できました。

AutoMate実装例

例として「2.取得期間を指定して情報を取得」をAutoMateに実装します。実装考慮点と今回用いたAutoMate機能・設定の対応を下記に記します。AutoMateは多くの命令(アクション)があります。ですので汎用のプログラミング言語と同様、下記以外にも「いかようにも」実装が可能です。

今回例の場合、fromとto算出の日付計算と、ファイル名に20230327_1(2023年3月27日の1つ目のファイル)といった接尾語を付けたくなるので、その設定と、ココ一発と言った時に頼りになるPowerShellとDosコマンドがそのまま使える事が主なご紹介です。

実際のAutoMateフローは以下です。

ファイルに接尾語を付加する

年月日を意味する接尾語を付加するため変数YYYYMMDDを宣言しています。宣言後に下図テキストアクションの「日付の書式設定」で日時形式をyyyyMMddに指定し年4桁、月2桁、日2桁書式の変数を生成しています。

また複数に分割されたファイルの再送要求回数は変数counterに入っているので、例えば「取得期間指定20230327_2.csv」のようなファイル名を命名する場合、下記の様な指定になります。

取得期間指定%YYYYMMDD%_%counter%.csv

設定前提fromとtoの日付計算

期間指定のfromとtoを意味する変数from、変数toを宣言しています。toはデータ取得実行当日とし、date関数で年月日を生成しています。fromは「toから何日前、間隔が空いているのか」を指定するため「toから遡る間隔」を意味する変数intervalを宣言しています。

例えば3日前ならば-3を指定します。fromはこの変数intervalとDateAdd関数を用いdate関数で取得した当日から-3を足し算して3日前のform値を算出しています。fromとtoは年4桁-月2桁-日2桁でハイフン付きで表現が必要なので、format関数で書式を変更しています。

AutoMateは多くの命令(アクション)があるのでコードを書く事無く、設定のみのノーコードで済んでしまいます。ですが前記の「ファイルに接尾語を付加する」のように変数宣言に一行、その変数内容を生成して書式設定にまた一行・・・といった具合に何を指定するにも一行ずつ指定し、全体として見通しの悪いフローになる場合があります。その様な場合、このように関数を入れ子で使って指定すると一行で設定が可能なので流れが理解し易いフロー設定が可能です。

スクリプトの実行

AutoMateはバッチファイル、Basicスクリプト、PowerShellの起動が可能ですので、AutoMateが用意しているアクションに無い処理や、過去の経験とプログラム資産を継承した処理が可能です。

今回は取得した複数のcsvファイルの一行目に余計なヘッダー行が存在すためPowerShellスクリプトで削除しています。

余計なヘッダーを削除した複数のcsvファイルを最後に1つのcsvファイルにまとめたいので、バッチファイル「mg.cmd」を作成し結合させました(上記PowerShellで結合させて良いのですが、DOSコマンドも稼働可能である事の紹介のため)

下記は「mg.cmd」内容です。単なるコピーコマンドでフォルダ内のcsvファイルをmerged.csvと言う決め打ちの名前でまとめています。

copy *.csv merged.csv

動画で解説

文字だけでは解説が難い部分を音声付き動画で補足しました。

関連リンク

お問合せ
https://alpcom.co.jp/contact/

アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos

データ活用支援サービス
https://alpcom.co.jp/products/data_utilization/

pagetop