LoginSignup
3
4

More than 3 years have passed since last update.

GASで法人番号APIを扱う方法

Last updated at Posted at 2020-05-11

国税庁の法人番号システム Web-APIをGASで実装したのでメモ。
事前にアプリケーションIDの申請が必要なので、使いたい人は下記から調べて申請ください。

法人番号システム Web-API

基本的な使い方はここに記載があるのですが、
法人名から法人版棒を取得するときは法人名をUTF-8にエンコードしないといけないので注意。

エンコードするのにencodeURIメソッドを使っていきます。
ただし、これだとローマ字はエンコードできないので注意。

2020-05-11_21h38_52.png

function getCorporatenumber() {

  let crop = 'グーグル(合)(テスト用)';

  // 余計な文字列の排除
  crop = dataCleansing_(crop);

  // 企業名から法人番号取得
  const corporatenumber = getCorporatenumber_(crop);
  console.log(corporatenumber); // [ 'グーグル・クラウド・ジャパン合同会社', '6010003022051', '東京都' ]
}

/**
* エンコードできない文字や余計な文字を削除する
*
* @param {string} 法人名
* @return {string} 法人名を正規表現でキレイにしたデータ
*/
function dataCleansing_(crop) {

  const replaceStr = ['株式会社', '(株)', '(株)', '有限会社', '(有)', '(有)', '合同会社', '(合)', '(合)', ''];

  //正規表現の作成
  let replaceRegExp1 = '';
  for(var i=0; i<replaceStr.length; i++){
    replaceRegExp1 += `(${replaceStr[i]})`;
    if(i !== replaceStr.length - 1) replaceRegExp1 += '|';
  }

  // 空白、改行削除 + 「(」、「(」以降削除
  let replaceRegExp2 = '(\\s+)|(\\n)|(\\(.*)|((.*)';

  replaceRegExp1 = new RegExp(replaceRegExp1,'g');
  replaceRegExp2 = new RegExp(replaceRegExp2,'g');

  return crop.replace(replaceRegExp1, "").replace(replaceRegExp2, "");
}

/**
* APIで法人番号を取得
*
* @param {string} 企業名の二次元配列
* @return {Object[]} 法人名、法人番号、都道府県の配列
*/
function getCorporatenumber_(crop) {

  const appId = 'アプリケーションID';

  const utf = convToUtf8_(crop);
  const url = `https://api.houjin-bangou.nta.go.jp/4/name?id=${appId}&name=${utf}&type=12`;

  const result = UrlFetchApp.fetch(url).getContentText("UTF-8");

  // 戻ってきた結果が0でなかったら実行
  if(!result.match('<count>0')) {
    const name = result.match(/(?<=<name>)(.{1,30})(?=<\/name>)/g)[0];
    const corporatenumber = result.match(/(?<=<corporateNumber>)(.{1,30})(?=<\/corporateNumber>)/g)[0];
    const prefecture = result.match(/(?<=<prefectureName>)(.{1,30})(?=<\/prefectureName>)/g)[0];
    return [name, corporatenumber, prefecture];
  }
}

/**
* 法人名をUTF-8へ変換
*
* @param {string} 法人名
* @return {string} UTF-8に変換した法人名
*/
function convToUtf8_(str) {
  let utf = '';

  for (const char of str) {
    utf += encodeURI(char);
  }

  return utf;
}

3
4
0

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
3
4