Node.jsでWebAPIを取得してExcelファイルに出力したい場合は下記のように記述します。

まず、npmでofficegenをインストールする必要があります。



npm install officegen


今回は、サンプルとして「iTunes Store Web Service Search API」を見つけたので、そのWebAPIを使って地図アプリを検索してみます。


script.js


var fs = require('fs');
var request = require('request');
var officegen = require('officegen');

var Excel = officegen('xlsx');

var list;
var sheet;
var order;
var SaveSheet;
var i;

var WebAPI = "http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsSearch?term=map&country=JP&entity=software&limit=100";

request(WebAPI, function(err, res, body){
if (err) throw err;
list = JSON.parse(body);
Excel_Export(list);
});

function Excel_Export(list) {
sheet = Excel.makeNewSheet();
sheet.name = "sample";
sheet.data[0] = ["アプリ名","金額","作成者"];

for (i = 0; i < list.results.length; i++) {
order = list.results[i];
sheet.data[i + 1] = [order.trackCensoredName,order.formattedPrice,order.artistName];
};
SaveSheet = fs.createWriteStream('sample.xlsx');
Excel.generate(SaveSheet);
console.log("「sample.xlsx」を作成しました。");
}


script.jsを実行すると下記のように取得したAPIがExcelに保存されます。

node.js_008_01


node.js_008_02


node.js_008_03


Excelを操作 :


var officegen = require('officegen');
var Excel = officegen('xlsx')


「iTunes Store Web Service Search API」の設定 :
term : 検索ワード , country : 国 , entity : ジャンル , limit : 表示数


var WebAPI = "http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/wa/wsSearch?term=map&amp;country=JP&amp;entity=software&amp;limit=100"


JSON文字列をオブジェクトに変換 :


list = JSON.parse(body)


Excelシートを新規作成・名称変更・表題入力 :


sheet = Excel.makeNewSheet();
sheet.name = "sample";
sheet.data[0] = ["アプリ名","金額","作成者"]


JSONの指定した項目をExcelにコピー :


for (i = 0; i < list.results.length; i++) {
order = list.results[i];
sheet.data[i + 1] = [order.trackCensoredName,order.formattedPrice,order.artistName];
}


指定したファイル名でExcel保存 :


SaveSheet = fs.createWriteStream('sample.xlsx');
Excel.generate(SaveSheet)


簡易的な操作であれば、officegenで事足るのではないかと思います。




Q&A






  • 参考文献
    JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック










coffee