Node.Js,JSONparsing错误,意外的input结束

问题解决了!!


所以我一直在这里find这个迷你指南。

为了便于访问,我已经插入了下面的代码。 但是,当我运行的代码(input谷歌的适当的细节后)我得到一个错误在最后。

Logging into Google... Logged into Google Searching for Worksheet 'S'... JSON Parse Error: SyntaxError: Unexpected end of input 

任何想法我做错了什么? 我需要做些改变吗? 另外为了学习的兴趣,如果你也可以解释你是如何解决我的问题的,而不是给我解决scheme,以便我自己将来可以解决类似的问题。

谢谢

联合王国

 /** * Fetch data from the web and save it into a Google Sheet document * * Requirements: 1. NodeJS 2. npm install request 3. npm install cheerio 4. npm install edit-google-spreadsheet * Author: Ido Green | plus.google.com/+Greenido * Date: 15 Aug 2013 */ var request = require('request'); var cheerio = require('cheerio'); var Spreadsheet = require('edit-google-spreadsheet'); // Some parameters // TODO: move from the global scope var ticker = "LVS"; var yUrl = "http://finance.yahoo.com/q/ks?s=" + ticker; var financeDetails = new Array(); var keyStr = new Array(); // Upload our data to G-Sheet function sheetReady(err, spreadsheet) { if (err) throw err; spreadsheet.add({ 1: { 1: "Attribute" } }); spreadsheet.add({ 1: { 2: "Value" } }); spreadsheet.add({ 2: { 1: keyStr } }); spreadsheet.add({ 2: { 2: financeDetails } }); spreadsheet.send(function(err) { if(err) throw err; console.log("Updated " + financeDetails.length + " Items with data"); }); } // // The main call to fetch the data, parse it and work on it. // request(yUrl, function (error, response, body) { if (!error && response.statusCode == 200) { var $ = cheerio.load(body); // the keys - We get them from a certain class attribute var td = $('.yfnc_tablehead1'); $(td).each(function(j, val) { keyStr[j] = $(val).text(); }); // the values // TODO: normalize them var tData = $('.yfnc_tabledata1'); $(tData).each(function(j, val) { financeDetails[j] = $(val).text(); }); // Let's do something with the data we have for (var i=0; i < financeDetails.length; i++) { console.log (i + ") " + keyStr[i] + " " + financeDetails[i]); } // upload our data to Google sheet // yFinanceDataPerComapy Spreadsheet.create({ debug: true, username: 'TODO-fill', password: 'TODO-fill', debug: true, spreadsheetName: 'TODO-yourSheetName', worksheetName: 'TODO-Sheet1orAbetterName', callback: sheetReady }); } }); // -- end of request -- 

这是在这里报告的edit-google-spreadsheet模块的错误。 尝试检索私有电子表格时会引发此错误。 有几个选项,你可以采取。

  • 使电子表格公开。
  • 尝试使用固定的拉取请求 。 看起来还有一些问题需要解决。
  • 使用工作表ID而不是工作表名称。 这是一个更困难的过程:
    1. 首先在Google云端硬盘中打开电子表格
    2. 在url中查找电子表格ID。 例:
        https://docs.google.com/spreadsheets/d/SPREADSHEET_ID_HERE/edit?usp=drive_web 
    3. 通过转到此url列出来源:
       视图源:HTTPS://spreadsheets.google.com/feeds/worksheets/SPREADSHEET_ID_HERE/private/full 
    4. 从响应中find条目(下面例子中的od6):
 <entry> <id>https://spreadsheets.google.com/feeds/worksheets/SPREADSHEET_ID_HERE/private/full/od6</id> ... <title type='text'>Sheet1</title> ... </entry>