スプレッドシートで法人番号を取得する方法|GASで国税庁API

Googleスプレッドシートで法人番号から会社名を取得するなら、Google Apps Script(GAS)で国税庁の法人番号APIを呼び、結果をシートに書き込む方法が手軽です。
この記事では、A列の法人番号からB列に会社名、C列に所在地を入れるスクリプトを紹介します。Excelで同じことをしたい方はExcelで法人番号APIを使う方法を、APIの選択肢を比べたい方は法人番号APIの比較を見てください。
準備:アプリケーションIDをスクリプトプロパティに入れる
国税庁のアプリケーションIDは、コードに直接書かず、スクリプトプロパティに保存します。
- スプレッドシートの「拡張機能」→「Apps Script」を開く
- 左の「プロジェクトの設定」→「スクリプト プロパティ」を開く
- プロパティ
NTA_APP_ID、値に発行されたアプリケーションIDを入れて保存する
サンプルコード
function fillCorporateInfo() {
const appId = PropertiesService.getScriptProperties().getProperty("NTA_APP_ID");
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) return;
const numbers = sheet
.getRange(2, 1, lastRow - 1, 1)
.getDisplayValues()
.map((row) => row[0].trim());
for (let i = 0; i < numbers.length; i += 10) {
const chunk = numbers.slice(i, i + 10).filter((n) => /^\d{13}$/.test(n));
if (chunk.length === 0) continue;
const url =
"https://api.houjin-bangou.nta.go.jp/4/num?id=" + appId +
"&number=" + chunk.join(",") + "&type=12";
const xml = UrlFetchApp.fetch(url).getContentText("UTF-8");
const root = XmlService.parse(xml).getRootElement();
const found = {};
root.getChildren("corporation").forEach((corp) => {
found[corp.getChildText("corporateNumber")] = [
corp.getChildText("name"),
corp.getChildText("prefectureName") +
corp.getChildText("cityName") +
corp.getChildText("streetNumber"),
];
});
const values = numbers
.slice(i, i + 10)
.map((n) => found[n] || ["見つかりません", ""]);
sheet.getRange(i + 2, 2, values.length, 2).setValues(values);
Utilities.sleep(1000);
}
}getDisplayValues()で、表示どおりの文字列として法人番号を読みます。セルの書式は「書式なしテキスト」にしておくと、先頭の0が消えません。- 1回のリクエストで10件まとめて取得し、1秒待ってから次を呼びます。利用規約で短時間の大量アクセスが禁止されているためです。
実行のしかた
- A1に「法人番号」、B1に「会社名」、C1に「所在地」と見出しを入れる
- A2から下に法人番号を入れる
- Apps Scriptのエディタで
fillCorporateInfoを選んで実行する - 初回は、外部へのアクセスとシートの編集の権限を許可する
よくあるつまずき
法人番号が指数表記になる
数値として入力すると 1.18E+12 のように表示され、正しい番号を送れません。列の書式を「書式なしテキスト」にしてから入力してください。
実行時間の上限で止まる
GASの1回の実行時間には上限があります。数千件を一度に処理すると途中で止まるので、数百件ずつに分けるか、処理した行を記録して続きから再開するようにします。
会社名から法人番号を探したい
このスクリプトは法人番号から会社名を引く方向です。会社名から法人番号を探すには、法人名での検索(/4/name)を使います。表記ゆれがあると見つからないことがあるので、会社名から法人番号を調べる方法を参考にしてください。
インボイスの登録状況も入れたい場合
法人番号APIでは、インボイスの登録状況は取れません。インボイスWeb-APIを別に呼ぶ必要があり、そのためのアプリケーションIDには審査があります。法人番号とインボイスを1回で取れるAPIを使う場合は、UrlFetchApp.fetch のヘッダーにAPIキーを入れて呼びます。
const res = UrlFetchApp.fetch(
"https://api.bango-api.jp/v1/companies/" + number,
{ headers: { "x-api-key": PropertiesService.getScriptProperties().getProperty("BANGO_API_KEY") } },
);
const data = JSON.parse(res.getContentText()).data;まとめ
Googleスプレッドシートで法人番号を取得するなら、GASで国税庁APIを10件ずつ呼び、XmlServiceで解析してシートに書き込みます。アプリケーションIDはスクリプトプロパティに置き、編集権限を渡す相手に気をつけてください。
ほかのAPIも含めて選びたい方は法人番号APIの比較を見てください。





