LoginSignup
8
13

More than 5 years have passed since last update.

【GAS】国税庁が公表している法人番号データをスプレッドシートに取り込む

Last updated at Posted at 2016-09-08

 国税庁法人番号公表サイトというのがあります。
 http://www.houjin-bangou.nta.go.jp/setsumei/

 制度の内容については「法人番号システムのWeb‐API機能をビジネス活用しよう(申請編)
」あたりが参考になるかと思います。

 法人番号データは土日祝日を除き毎日原則として夕刻以降に公開している模様です。今回もAPIを利用してデータを取得する流れを紹介します。APIキーが必要なので実際に試す場合は申請などが必要となります。データはXML形式で返ってきます。

 具体的な話に入っていきますが、スプレッドシート上でIMPORTXML関数を唱えれば十分です。たとえば9月5日にアップされたデータを取り込みたかったら、セルA1に取得したい日付をyyyy-mm-dd形式で入力しておき、A2に、


=IMPORTXML("https://api.houjin-bangou.nta.go.jp/1/diff?id=APIキー&from="&A1&"&to="&A1&"&type=12","//corporation")

 と式をセットすればその指定した日に更新された法人番号データが取り込まれます。結果は下のようになります(G列には具体的な会社名が入ってくるので隠しています)。ちなみに1082行です。たったの1行の式で取得できるわけですから実に簡単ですよね。

 ちなみにA1は「書式なしテキスト」で表示設定しないとうまくいきません(じゃないと勝手にシリアル値に置き換えられてしまう)。

スクリーンショット 2016-09-08 2.05.17.png

 XMLをパースして2次元配列に転換する正攻法なやり方もあるんですが、かなり時間がかかって実用的ではありませんでした。いちおう掲げておきます。JSONのときはそれほど時間はかからなかったのですが。

コード.gs

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();

function getCorporationData() {

  // 日付
  var hiduke = sh.getRange(1,1).getValue();

  // url設定
  var url = "https://api.houjin-bangou.nta.go.jp/1/diff?"
    +"id=APIキー"
    +"&from="+hiduke
    +"&to="+hiduke
    +"&type=12";

  // SSL対応
  var options = {
    "validateHttpsCertificates" : false
  }

  // データ取得
  var response = UrlFetchApp.fetch(url,options);
  var xml = response.getContentText();
  var document = XmlService.parse(xml);
  var root = document.getRootElement();
  var list = root.getChildren("corporation");

  // 2次元配列に組み直し
  var ary = [];
  var ary2 = [];
  for (var i in list) {
    for (var j=0; j<23; j++) {
      ary.push(list[i].getChildren()[j].getText());
    }
    ary2.push(ary);
    ary = [];
  }

  // シートに反映
  sh.getRange(2,1,ary2.length,23).setValues(ary2);

}

8
13
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13