2017-03-15 16 views
-1

スプレッドシートのデータをスクリプトで使用するようにノードJSスクリプトを作成しようとしています。スプレッドシートからデータを取得するnodeJSの設定方法

私のスクリプトは次のように起動します:私はそれを実行しようとすると、しかし、私はエラーを取得する

var webdriverio = require('webdriverio'); 
var Excel = require('exceljs'); 
var testData = require('xlsx-extract'); 
//var Excel = require ('xlsx-style') 
var options = { 
    desiredCapabilities: { 
     //browserName: 'phantomjs' 
     browserName: 'chrome' 
    } 
}; 

var count = (1); 
var testDate = new Date(); 
var Login = ('#button.mb24.secondary.wide') 
var workbook = new Excel.Workbook(); 
workbook.xlsx.readFile('Myspreadsheet_v1.xlsx') 
    .then(function() { 
     getCell('A2').value 
     console.log('url is: ' + getCell('A2').value); 
    }); 

//var workbook = new Excel.Workbook(); 
//stream.pipe(workbook.xlsx.createInputStream('./Myspreadsheet_v1.xlsx')); 

var worksheet = workbook.getWorksheet(1); 
var sfurl = worksheet.getCell('A2').value; 
var loginName = worksheet.getCell('B2').value; 
var loginPassword = worksheet.getCell('C2').value; 

xxxxxxx/xxxxxxx/xxxxx.js:32 
var sfurl = worksheet.getCell('A2').value; 
        ^

TypeError: Cannot read property 'getCell' of undefined 
    at Object.<anonymous> (xxxxxxx/xxxxxxx/xxxxx.js:32:22) 
    at Module._compile (module.js:570:32) 
    at Object.Module._extensions..js (module.js:579:10) 
    at Module.load (module.js:487:32) 
    at tryModuleLoad (module.js:446:12) 
    at Function.Module._load (module.js:438:3) 
    at Module.runMain (module.js:604:10) 
    at run (bootstrap_node.js:394:7) 
    at startup (bootstrap_node.js:149:9) 
    at bootstrap_node.js:509:3 

私は私が間違っていた何のためにロスで本当に午前方法それを修正する。 私はnpnが停止していて、node-xlxsとnode-exceljもインストールしました。 私のシステムにnodeJSがインストールされています。

私が始めるしようとするこれらのリンクを使用: https://www.npmjs.com/package/xlsx https://www.npmjs.com/package/exceljs

任意の助けいただければ幸いです。

ありがとうございました。

+0

'workbook.getWorksheet(1);'が返すものを確認しましたか? – Gab

+0

npnではなくnpmを意味しますか? –

答えて

2

var worksheet = workbook.getWorksheet(1);以降は、readFile関数が非同期プロセスであるため、then(function() { /* here */ }の内部にある必要があります。

ファイルが読み込まれていないときに、ワークシートを読んでみてください。

promisesについての情報があります。

1

関数readFileが非同期であるということは、ノードがファイルをロードし、その間に残りのコードを実行するようにシステムに指示することを意味します。システムがファイルを読み取ると、あなたの.then(...) -functionのコードを実行する約束を解決します。

これは、getCellになると、まだブックが利用できないことを意味します。この部分を.then(...) -functionに移動すると機能するはずです。

関連する問題