とある会合で不動産の減損判定に必要な時価評価に関して国土交通省が公表しているデータが参考になるぞということを小耳に挟んだのと、キータの記事で「日本の行政機関が公開中のAPIについてのまとめ(2016年8月17日暫定版)」も見て、気になったので調べてみました。
国土交通省公表(平成28年3月31日付)
http://www.mlit.go.jp/report/press/totikensangyo05_hh_000089.html
すでに約半年前に公表していたようです。API利用などにあたって特にAPIキー取得に必要な申請やら規約のようなものは見当たらなかったので投稿します。普通にCSVをダウンロードして取得してもよいのですがせっかくなのでAPIを使ってみます。
JSONデータがずらずらっと返ってくるパターンで、JSONデータをいかにスプレッドシートに取り込むかがテーマとなります。
場所や価格など、28項目あるのですが、取引によっては5項目目がないとか、全項目揃っているという保証がないことで、その部分は空欄で埋めてすべての行が同じ列数を持つように加工する作業が必要となります(そのままでも実はいけるんですが「undefined」で埋め尽くされて見栄えが良くないかなと)。
今回は平成27年第1四半期~平成27年第2四半期の沖縄県の不動産取引価格情報を取得するという設定です。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
function getLandPriceData() {
// データを取得
var url = "http://www.land.mlit.go.jp/webland/api/TradeListSearch?from=20151&to=20152&area=47";
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
json = JSON.parse(json);
// 予め全28項目を列挙
var item = [
"Type",
"Region",
"MunicipalityCode",
"Prefecture",
"Municipality",
"DistrictName",
"NearestStation",
"TimeToNearestStation",
"TradePrice",
"PricePerUnit",
"FloorPlan",
"Area",
"UnitPrice",
"LandShape",
"Frontage",
"TotalFloorArea",
"BuildingYear",
"Structure",
"Use",
"Purpose",
"Direction",
"Classification",
"Breadth",
"CityPlanning",
"CoverageRatio",
"FloorAreaRatio",
"Period",
"Remarks"
];
// 2次元配列に組み直し
var ary = [];
var ary2 = [];
for (var i=0; i<json.data.length; i++) {
for (var j=0; j<item.length; j++) {
ary.push(json.data[i][item[j]]);
// もしundefinedなら空欄に直す
if (!ary[j]) {
ary[j] = "";
}
}
ary2.push(ary);
ary = [];
}
// シートに反映
sh.getRange(2,1,ary2.length,ary2[0].length).setValues(ary2);
}
結果です。JSONじゃなくてXMLでくれればスクリプトを書かないでスプレッドシート上でIMPORTXML関数を唱えて一発で取得できて楽なんですが。