diff --git a/src/backend.gdocs.js b/src/backend.gdocs.js index 0860dc7f..4a36c302 100644 --- a/src/backend.gdocs.js +++ b/src/backend.gdocs.js @@ -130,7 +130,7 @@ this.recline.Backend.GDocs = this.recline.Backend.GDocs || {}; // Convenience function to get GDocs JSON API Url from standard URL my.getGDocsAPIUrls = function(url) { // https://docs.google.com/spreadsheet/ccc?key=XXXX#gid=YYY - var regex = /.*spreadsheet\/ccc?.*key=([^#?&+]+).*gid=([\d]+).*/; + var regex = /.*spreadsheet\/ccc?.*key=([^#?&+]+)[^#]*(#gid=([\d]+).*)?/; var matches = url.match(regex); var key; var worksheet; @@ -139,7 +139,10 @@ this.recline.Backend.GDocs = this.recline.Backend.GDocs || {}; if(!!matches) { key = matches[1]; // the gid in url is 0-based and feed url is 1-based - worksheet = parseInt(matches[2]) + 1; + worksheet = parseInt(matches[3]) + 1; + if (isNaN(worksheet)) { + worksheet = 1; + } urls = { worksheet : 'https://spreadsheets.google.com/feeds/list/'+ key +'/'+ worksheet +'/public/values?alt=json', spreadsheet: 'https://spreadsheets.google.com/feeds/worksheets/'+ key +'/public/basic?alt=json' diff --git a/test/backend.gdocs.test.js b/test/backend.gdocs.test.js index 5efc98cc..0e860b9c 100644 --- a/test/backend.gdocs.test.js +++ b/test/backend.gdocs.test.js @@ -310,6 +310,10 @@ test("GDocs Backend.getUrl", function() { var exp2 = 'https://spreadsheets.google.com/feeds/worksheets/' + key + '/public/basic?alt=json' equal(exp1, out.worksheet); equal(exp2, out.spreadsheet); + + var url = 'https://docs.google.com/spreadsheet/ccc?key=' + key; + var out = recline.Backend.GDocs.getGDocsAPIUrls(url); + equal(out.worksheet, exp1); }); })(this.jQuery);