法人番号から名称、所在地を一括取得する方法

Pocket

Apps Scriptを使って法人番号から名称(商号)、所在地(住所)を取得する方法を紹介します。
スクリプトの使い方はGoogle Apps Scriptでメール送信で確認してください。

スプレッドシート

シートに法人番号をセットしておきます。
before
スクリプトを実行すると名称と所在地がセットされます。
after

スクリプト

コードは次のとおりです。「get_name_address_by_hojinbango」を実行します。
なお件数が多すぎると結果が戻ってこないことがあるようです。
使用にあたっては自己責任でお願いします。

function get_name_address_by_hojinbango() {
//法人番号から名称と所在地を取得。
//シートの1列目に法人番号をセットしておく。
//2列目、3列目に名称と所在地を取得してセット。
//2列目が空の行だけ取得しに行く。
//一回の処理で最大100件。
//繰り返し実行すると全ての行の名称と所在地が埋まる。

var sheet, hojins, i, meisho, hojin, arrs, j;
//シートから法人番号を取得。
sheet = SpreadsheetApp.getActiveSheet();
hojins = [];
for (i = 2; i <= sheet.getLastRow(); i++) {
meisho = sheet.getRange(i, 2).getValue();
if (meisho === "") {
hojin = sheet.getRange(i, 1).getValue();
hojins.push(hojin);
}
}
//サイトから名称と所在地を取得。
arrs = fetch_info(hojins);
//シートに名称と所在地を貼り付け。
for (i = 2; i <= sheet.getLastRow(); i++) {
hojin = sheet.getRange(i, 1).getValue();
for (j = 0; j < arrs.length; j++) {       if (arrs[j][0] == hojin) {         sheet.getRange(i, 2).setValue(arrs[j][1]);         sheet.getRange(i, 3).setValue(arrs[j][2]);         break;       }     }   } } function fetch_info(hojins) {   var max_kensu, once_kensu, arrs, hs, temps;   max_kensu = 100;   once_kensu = 10;   arrs = [];   while (hojins.length > 0) {
hs = hojins.splice(0, once_kensu);
temps = fetch_info_ten(hs);
arrs = arrs.concat(temps);
}
return arrs;
}

function fetch_info_ten(hojins) {
//最大10件の法人番号を配列で与えると法人番号、名称、所在地を配列で返す。
var csv, url, result, html, ms, arrs, i, temps;
csv = hojins.join(",");
url = "http://www.houjin-bangou.nta.go.jp/matomete-kekka.html?houzinNoLst=";
result = UrlFetchApp.fetch(url + csv);
html = result.getContentText("UTF-8");
html = html.replace(/[\r\n]+/g, "");
ms = html.match(/<tr.*?>.*?法人番号[0-9]+件目.*?&lt;\/tr&gt;/g);
arrs = [];
for (i = 0; i &lt; ms.length; i++) {
temps = ms[i].match(/<input.*?value="([0-9]+)".*? <td="">(.*?)&lt;\/td&gt;.*?
(.*?)&lt;\/td&gt;/);
temps[2] = temps[2].replace(/<span.*?>(.*?)&lt;\/span&gt;/, "$1");
temps[3] = temps[3].replace(/<span.*?>(.*?)&lt;\/span&gt;/, "$1");
arrs.push([temps[1], temps[2], temps[3]]);
}
return arrs;
}

[ 2015年11月25日 | カテゴリー: デジタル | タグ: , ]

« | »

コメント

  1. 佐藤宏樹 より:

    貴重な情報ありがとうございます。
    上記のスクリプトをコピペして実行しましたが、エラーとなり稼働しませんでした。。
    こちらは現状のGASの仕様でも有効なスクリプトということでよろしいでしょうか。
    ご確認頂けますと幸いです。

  2. stabucky より:

    コメントありがとうございます。忙しくて確認できません。しばらくお待ちください。

  3. stabucky より:

    >佐藤さん
    試したところ、私の場合はアクセス権限に関するエラーで実行できませんでした。
    やはりGASの仕様が変わったようです。
    対処方法を調べて試したところ正しく動作しました。
    要するにスクリプトを実行するための許可を与える必要があるということのようです。
    長くなるので記事にしてみました。
    http://stabucky.com/wp/archives/9750
    参考にしてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報