dayjournal memo

Total 975 articles!!

Node.js #008 – WebAPIを取得してExcelファイルに出力

Yasunori Kirimoto's avatar

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で事足るのではないかと思います。



book

Q&A


  • 参考文献
[![JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック](http://ecx.images-amazon.com/images/I/61DHJGf1uSL._SL160_.jpg)](http://www.amazon.co.jp/exec/obidos/ASIN/4883379930/dayjournal-22/ref=nosim/)
[JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック](http://www.amazon.co.jp/exec/obidos/ASIN/4883379930/dayjournal-22/ref=nosim/)