Help us understand the problem. What is going on with this article?

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

国税庁の法人番号システム 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;
}

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away