国税庁の法人番号システム Web-APIをGASで実装したのでメモ。
事前にアプリケーションIDの申請が必要なので、使いたい人は下記から調べて申請ください。
基本的な使い方はここに記載があるのですが、
法人名から法人版棒を取得するときは法人名をUTF-8にエンコードしないといけないので注意。
エンコードするのにencodeURIメソッドを使っていきます。
ただし、これだとローマ字はエンコードできないので注意。

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;
}